Cvičenie 3 - Lineárna regresia¶
V R
môžeme parametre lineárneho modelu vypočítať pomocou funkcie lm
.
Nasledujúci príklad načíta dátovú množinu Iris
, vyfiltruje iba príklady z triedy setosa
, a vypočíta lineárny
model s jedným vstupným atribútom iris$Sepal.Length
pre výstupnú hodnotu iris$Sepal.Width
data(iris)
setosa <- iris[iris$Species == "setosa", ]
attach(setosa)
setosa
sepal_lm <- lm(Sepal.Width ~ Sepal.Length) # y = b0 + b1x1 + b2x2 + b3x3 + ... + bmxm
sepal_lm
plot(Sepal.Length, Sepal.Width)
abline(sepal_lm)
V príklade je vykreslená regresná priamka, ktorá určuje predikovanú hodnotu f(x) . Ďalšie
vstupné atribúty je možné pridať do modelu pomocou operátora +
, napr. lm(Y ~ X1 + X2 + X3)
je lineárny model, ktorý predikuje atribút Y
na základe troch vstupných atribútov X1
, X2
a X3
.
Pomocou funkcie summary si môžeme vypísať základné štatistiky o rezíduách a parametroch modelu:
summary(sepal_lm)
Popis funkcie summary
¶
Rozdiely medzi predikovanou hodnotu a skutočnou hodnotou y
sa označujú ako rezíduá.
V časti Residuals
sú informácie o základných štatistikách rezíduí. Tieto rozdiely by mali byť
v absolútnej hodnote čo najmenšie. Rezíduá pre všetky trénovacie príklady môžete získať
pomocou funkcie residuals
residuals(sepal_lm)
Celkovú chybu (sumu štvorcov rezíduí – z čoho sa minimalizovanie kvadratickej chybovej funkcie označuje metóda najmenších štvorcov) môžete vypísať funkciou:
deviance(sepal_lm)
Coefficients¶
V prehľade viete ďalej zistiť hodnoty samotných parametrov v časti Coefficients
. Parameter
$\beta_0$ sa označuje ako Intercept
, pretože určuje v ktorom bode bude regresná priamka pretínať
os Y. Keďže ostatné parametre $\beta_1 ... \beta_m $ zodpovedajú jednotlivým vstupným atribútom,
parametre sú označené názvom zodpovedajúceho atribútu, napr. Sepal.Length
.
To, ako jedôležitý atribút pre výslednú predikciu určuje absolútna veľkosť zodpovedajúceho parametra, ak sa parameter blíži k 0, atribút je možné z modelu vynechať bez toho aby sa výrazne zmenila predikcia. Významnosť atribútov sa testuje štatistickým testom ktorého hypotéza je, že sa zodpovedajúci parameter = 0. Čím menšia je táto pravdepodobnosť, tým dôležitejší je daný atribút (čo je označené vo výpise aj hviezdičkami, *** dôležitý atribút, ** stredne dôležitý, atď.)
Predikcia¶
Ak chcete vypočítať predikovanú hodnotu pre nové vstupné dáta, môžete použiť funkciu
predict
:
predict(sepal_lm, newdata = data.frame(Sepal.Length=6))
Pomocou predikt môžeme vypočítať aj hodnoty pre viac príkladov naraz.
Podľa variancie vstupných dát vieme pri lineárnej regresii odhadnúť aj varianciu parametrov,
ktorá je uvedená ako štandardná odchýlka pri výpise summary pre každý parameter. Keďže
parametre sú odhadované iba s určitou varianciou, aj samotná predikcia je len odhad pre
ktorý môžeme určiť varianciu v akom rozsahu sa bude predikovaná hodnota
najpravdepodobnejšie pohybovať. Tento interval si môžete vypísať pomocou funkcie
predict
:
predict(sepal_lm, newdata = data.frame(Sepal.Length=6), interval="prediction")
Pomocou predict
je potom možné zobraziť aj intervaly spoľahlivosti pre predikciu (v tomto
intervale by sa mala s veľkou pravdepodobnosťou pohybovať skutočná hodnota).
Najprv si vygenerujeme vstupné dáta (interval od 4 do 6 s krokom 0.25) a potom vypočítame predikciu aj s intervalom:
lengths <- seq(from=4, to=6, by=0.25)
predictions <- predict(sepal_lm, newdata =data.frame(Sepal.Length=lengths), interval="prediction")
lengths
predictions
Hodnoty si zobrazíme v grafe ako interval pomocou horného a spodného ohraničenia:
plot(Sepal.Length, Sepal.Width)
lines(predictions[,1] ~ lengths, col=1)
lines(predictions[,2] ~ lengths, col=1, lty=2)
lines(predictions[,3] ~ lengths, col=1, lty=2)
Všimnite si, že sa pri krajných hodnotách 4 a 6 interval mierne rozširuje (tzn. pre krajné vstupné hodnoty môže byť predikovaná hodnota vypočítaná s väčšou varianciou).
Úlohy na cvičení¶
- Načítajte dátovú množinu
Iris
, odfiltrujte príklady z triedysetosa
a vytvorte lineárny
model predikujúci atribút Petal.Width
pre vstupný atribút Petal.Length
. Vizualizujte
dáta a regresnú priamku
- Vypočítajte celkovú sumu kvadrátov rezíduí modelu z predošlého príkladu a
korelačný koeficient medzi vstupným a výstupným atribútom. Zobrazte histogram rezíduí.
- Vypočítajte predikciu a interval spoľahlivosti pre trénovacie dáta. Zobrazte graf s
dátami, regresnou priamkou a intervalovými hranicami.
- Z množiny iris odfiltrujte iba príklady z triedy versicolor, vypočítajte predikciu a
intervalové odhady. Zobrazte graf s dátami, regresnou priamkou, a intervalovými hranicami.
- Vytvorte rozšírený model, ktorý bude mať okrem
Petal.Length
na vstupe aj atribút
Sepal.Width
. Zistite, ktoré parametre modelu sú štatisticky významné, a porovnajte
chybu rozšíreného modelu s predchádzajúcim príkladom.
- Medzi vstupné atribúty môžete pridať aj faktory (nominálne atribúty). Ak má faktor
napr. 3 hodnoty, setosa
, versicolor
a virginica
, pri zahrnutí do modelu sa prvá
hodnota setosa
použije ako tzv. referenčná a pre zvyšné hodnoty versicolor
a
virginica
sa vygenerujú binárne (tzv. kontrastné) atribúty, pre ktoré sa vypočítajú
dodatočné parametre modelu. Načítajte celú množinu dát Iris
a vytvorte model, ktorý
bude predikovať Petal.Width
na základe atribútov Petal.Length
a Species
. Zistite,
ktoré z kontrastných hodnôt versicolor
, alebo virginica
je viac dôležitá pre predikciu.
- Vygenerujte si náhodné vektory
X1
,X2
aX3
s 50 hodnotami podľa uniformného
rozdelenia pravdepodobnosti z intervalu 1 až 10. Vytvorte vektor hodnôt Y = 0.5 + 2*X1 + 1.5 *X2 + X3
. K vektoru Y pripočítajte náhodný šum s normálnym rozdelením s
0 strednou hodnotou a štandardnou odchýlkou 0.5. Vypočítajte parametre
lineárneho modelu priamo analyticky z výrazu $(X^TX)^{-1}X^Ty = \beta $. Vypočítajte pre každý príklad predikciu a rezíduá.
- Pridajte do predchádzajúceho modelu atribút
X4
, ktorého hodnoty sú vždy
dvojnásobkom atribútu X1
(tzn. X4=2*X1
). Vypočítajte znova analyticky parametre
modelu (malo by dôjsť k chybe, pre maticu X
by sa nemala dať vypočítať inverzná
matica ak obsahuje lineárne závislé stĺpce). Vypočítajte korelačný koeficient medzi X1
a X4
. Odstráňte atribút X1
a zvona vypočítajte parametre lineárneho modelu,
porovnajte vypočítané parametre s predchádzajúcim príkladom.