INTRODUCTION TO MACHINE LEARNING (NPFL054) A template for Homework #2
Name: Petr Bělohlávek School year: 2015/2016
•
Provide answers for the exercises 1. (a) - (c), 2.(c), 2.(d.1-2), 2.(e.1-2)
•
For each exercise, your answer cannot exceed one sheet of paper.
1
1. (a) Scatterplot matrix, correlation matrix
[5 pts]
Implicitně nezobrazuji pole name, přestože v zadání jsou požadovány všechny sloupce. Výsledný graf by nedával smysl. Nicméně stačí smazat selektor a graf bude podle zadání validní.
mpg cylinders displacement horsepower weight acceleration year
mpg 1.0000000 -0.7776175 -0.8051269 -0.7784268 -0.8322442 0.4233285 0.5805410
cylinders -0.7776175 1.0000000 0.9508233 0.8429834 0.8975273 -0.5046834 -0.3456474
displacement horsepower weight -0.8051269 -0.7784268 -0.8322442 0.9508233 0.8429834 0.8975273 1.0000000 0.8972570 0.9329944 0.8972570 1.0000000 0.8645377 0.9329944 0.8645377 1.0000000 -0.5438005 -0.6891955 -0.4168392 -0.3698552 -0.4163615 -0.3091199
2
acceleration year 0.4233285 0.5805410 -0.5046834 -0.3456474 -0.5438005 -0.3698552 -0.6891955 -0.4163615 -0.4168392 -0.3091199 1.0000000 0.2903161 0.2903161 1.0000000
1. (b) Multiple linear regression
[10 pts]
Původní sloupec origin jsem nahradil dvěma novými sloupci european a japanese. Jednička v nich indikuje původ auta. Pokud je v obou nula, auto je americké. Druhá varianta je zakázat intercept a přidat další proměnnou american, ale to je zbytečně komplikované. Data nenormalizuji (zadání o tom nemluví), nicméně si myslím, že by normalizace mohla model zpřesnit (zejména kvůli vysokým hodnotám roku výroby). Coefficients: (Intercept) cylinders displacement horsepower weight acceleration year european japanese
Estimate Std. Error t value Pr(>|t|) -1.795e+01 4.677e+00 -3.839 0.000145 *** -4.897e-01 3.212e-01 -1.524 0.128215 2.398e-02 7.653e-03 3.133 0.001863 ** -1.818e-02 1.371e-02 -1.326 0.185488 -6.710e-03 6.551e-04 -10.243 < 2e-16 *** 7.910e-02 9.822e-02 0.805 0.421101 7.770e-01 5.178e-02 15.005 < 2e-16 *** 2.630e+00 5.664e-01 4.643 4.72e-06 *** 2.853e+00 5.527e-01 5.162 3.93e-07 ***
U koeficientů bez hvězdičky v posledním sloupci se neprokázal signifikantní vliv na sloupec mpg. Dále je tedy ignoruji. U kvantifikačních proměnných platí, že získané koeficienty vyjadřují změnu mpg při jednotkovém zvýšení dané proměnné a fixaci ostatních proměnných. Kladné koeficienty ukazují rostoucí závislost, záporné klesající. Např. váha vozu výrazně snižuje dojezd, tedy zvyšuje spotřebu, což je očekávaný výsledek. Naopak novější auta mají spotřebu nižší. U ostatních proměnných je vysvětelní totožné. Rozdílná situace je u posledních dvou proměnných, které nabývají hodnoty pouze nula nebo jedna. Jak jsem psal výše, americký původ nechávám zahrnutý v intercept. Obě proměnné mají signifikantní vliv na cílovou proměnnou. Vysvětlení koeficientů je následující. Při fixaci všech proměnných má evropské auto oproti americkému o 2.63 větší dojezd. Podobně, japonské má oproti americkému dojezd větší o 2.85. Oba tyto rozdíly jsou signifikantní. Jelikož volíme stejnou bázi (americké zahrnuté v intercept), můžeme odhadnout i rozdíl mezi evropskými a japonskými auty (rozdíl koeficientů). U tohoto poslendího rozdílu nemůžeme zjistit, jestli je signifikantní. Mohli bychom vyrobit nový model, který bude v intercept zahrnovat např. evropská auta potom je s japonskými porovnat. Vzhledem k omezení na délku odpovědi tento model vynechávám. Při fixaci všech ostatních proměnných budou proměnné intercept, european a japanese určovat pouze posun (absolutní člen) celého modelu.
3
1. (c) Polynomial regression
[10 pts]
Model
R^2
Konstantní
Nemá smysl, resp. 0
Lineární
0.1792071
Kvadratický
0.193964
Kubický
0.195508
4. stupně
0.2135979
5. stupně 0.2148018 R^2 je pouze jeden parametr modelu a pouze na jeho základě se nedá model hodnotit. Vizualizované residuály (viz R skript) ukazují na první pohled, že modely příliš dobře nesedí, protože ve všech grafech residuálů je jasně patrný trend. Dle předpokladů můžeme konstatovat, že komplikovanější modely vysvětlují rozptyl dat lépe. Pozn.: U modelů vyšších stupňů nejsou všechny koeficienty signifikantně odlišné od nuly.
4
2. (c) Trivial classifier
[10 pts]
Seed nastavuji na 123 jako na cvičení (kvůli ladění). Pro jiný seed vyjdou výledky pravděpodobně jinak. Při tomto seedu vyšel triviální klasifikátor takový, že vždy vrací True. Přesnost vyšla přibližně 44.87%. Entropie zjevně musí být jedna, protože na zakódování True/False informace stačí jediný bit. > p.mpg = c(0.5, 0.5) # because of median > -sum(p.mpg * log2(p.mpg)) # entropy [1] 1
5
2. (d.1) Logistic regression: training and test error rate, confusion matrix
glm.ts.prediction FALSE TRUE FALSE 37 4 TRUE 6 31
Train accuracy: Train err. rate: Test accuracy: Test err. rate:
92.99% 7.00% 87.17% 12.82%
6
[5 pts]
2. (d.2) Logistic regression: interpretation of the hypothesis parameters Coefficients:
Estimate Std. Error (Intercept) -21.053073 6.674896 cylinders -0.032570 0.472714 displacement 0.013541 0.014607 horsepower -0.037242 0.026376 weight -0.006082 0.001497 acceleration 0.054556 0.154791 year 0.504734 0.097193 european 1.614475 0.837184 japanese 0.806224 0.803402
[10 pts]
z value Pr(>|z|) -3.154 0.00161 ** -0.069 0.94507 0.927 0.35390 -1.412 0.15796 -4.063 4.84e-05 *** 0.352 0.72450 5.193 2.07e-07 *** 1.928 0.05380 . 1.004 0.31561
Podobně jako v předchozím komentáři modelu uvažujeme pouze proměnné, jejichž koeficienty jsou signifikantně odlišné od nuly (tedy váhu a rok výroby). Každý z odpovídajících odhadnutých koeficientů vyjadřuje logaritmickou změnu šance (logitu) při jednotkovém zvýšení dané proměnné. Tedy je potřeba predikovanou hodnotu val transformovat na e^val abychom získali skutečnou šanci. Dummy proměnné nemá smysl interpretovat, protože nejsou signifikantní.
7
2. (e.1) Decision trees: plot of the tree, training and test error rate
Train: tr.prediction FALSE TRUE FALSE 145 7 TRUE 8 154
Test: ts.prediction FALSE TRUE FALSE 42 5 TRUE 1 30
Train accuracy: Train err. rate: Test accuracy: Test err. rate:
95.22% 4.77% 92.30% 7.69%
8
[5 pts]
2. (e.2) Decision trees: tuning the cp parameter
[10 pts]
Pomocí funkce printcp získáme následující údaje: 1 2 3 4 5
CP nsplit 0.803922 0.026144 0.019608 0.013072 0.010000
rel 0 1 3 4 6
error 1.000000 0.196078 0.143791 0.124183 0.098039
xerror 1.12418 0.20261 0.20915 0.18954 0.17647
xstd 0.057644 0.034548 0.035038 0.033532 0.032469
Vybereme cp s nejnižší chybovostí, tedy cp=0.01. Tato hodnota se ukázala jako optimální pro složitost stromu. Je dostatečně malá, aby byl strom dost “rozvětvený” a zároveň dost velká na to, aby nedošlo k příliš velkému přeučení. Nový model má stejné vlastnosti jako předchozí.
9