{{indexmenu_n>10}}
Obsah této stránky bude přístupný od 7. 12. 2017.
Test: https://goo.gl/forms/sPjksgHDcmL8vvbr1
{{indexmenu_n>9}}
**TEST 09**
- (0.5 b) Jak se vypočítá kosinová vzdálenost dvou vektorů $\mathbf{x_1}$ a $\mathbf{x_2}$?
- (0.5 b) Pokud platí $\alpha < \beta$ ($\alpha$, $\beta \in (0, \pi$) rad), jaký je vztah mezi $\cos \alpha$ a $\cos \beta$.
- (0.5 b) Čemu říkáme //stop slovo//? Uveďte 5 příkladů českých stop slov.
- (0.5 b) Co ovlivňuje regularizační konstanta $C$ při učení SVM (parametr ''cost'' funkce ''svm()'')?
====== Cvičení 9 - Příprava dat ======
==== Úloha 1 ====
Použijeme data [[http://archive.ics.uci.edu/ml/datasets/Adult|"ADULT" z UCI Machine Learning Repository]] uložená v souboru {{courses:a6m33dvz:cviceni:adult.csv|adult.csv}}
=== Průzkum dat ===
Úkolem průzkumu dat je seznámit se se strukturou dat a popsat každý atribut základními statistickými údaji.
- Kolik atributů data obsahují?
- Obsahují data chybějící hodnoty?
- Nakreslete histogram pro atribut workclass. Co vyjadřuje hodnota ''"?"'' tohoto atributu?
- Jaká hodnota je dominantní u atributu hours-per-week?
- Do kolika tříd máme data klasifikovat?
=== Výběr podskupiny dat ===
- Zaměříme se pouze na obyvatele USA. Vytvořte nový dataset adult.usa, který obsahuje pouze obyvatele USA. Kolik takových obyvatel je?
=== Diskretizace dat ===
Diskretizace dat převání spojitá data na nominální, nebo nám umožňuje definovat méně kategorií v rámci nominálního atributu.
- Atribut //"hours.per.week"// diskretizujte pouze na tři hodnoty //"less"// (0-39h), //"standard"// (40h), //"more"//(>40h) do nového atributu //"hours.per.week.nominal"//. Nový atribut udělejte typu //factor// s hodnotami v pořadí //"less"//, //"standard"//, //"more"//.
- Diskretizujte atribut ''"fnlwgt"''. Je možné použít ekvidistantní intervaly pro diskretizaci? Vyzkoušejte a zobrazte histogramy. Využijte například funkci //discretize// v balíku //arules//, který si případně nainstalujte.
=== Chybějící hodnoty ===
- Atribut //"workclass"// může být i //"?"//, což je označení chybějící hodnoty, kterou R stále považuje za jednu možnou hodnotu atributu. Hodnoty //"?"// definujte jako chybějící, tj. nastavte je na hodnotu //NA//.
- Nahraďte chybějící hodnoty u atributu //"workclass"// na nejčastější hodnotu.
=== Odvozené atributy ===
- Vytvořte nový atribut //"capital"// = //"capital_gain-capital_lost"//.
=== Vzorkování dat ===
Naše data jsou rozsáhlá, ale nemají vyvážené třídy (každá třída má jiný počet příkladů). Vzorkování dat je možné použít právě pro vyvážení.
- Vyberte z datasetu vyvážený vzorek 10000 instancí, tj. 5000 instancí //"<=50K"// a 5000 instancí //">50K"//. Zkontrolujte na histogramu, že opravdu došlo k vyvážení dat.
/* survey sampling package*/
==== Úloha 2: Transformace dat ====
Prohlědněte si data {{courses:a6m33dvz:cviceni:transformace.csv|}}.
- Předpokládejme, že chceme popsat vztah atributu ''"y"'' na ''"x"''. Vykreslete si závislost jako scatter plot. Lze mezi atributy tušit závislost? Pokud ano, jak byste závislost popsali?
- Pokuste se data transformovat tak, aby závislost mezi ''"y"'' a ''"x"'' byla lépe znatelná. //(Nápověda: zkuste hodnoty logaritmovat.)//
==== Úloha 3.1: PCA ====
Podíváme se na data {{courses:a6m33dvz:cviceni:tuk.txt|}}. Data obsahují 3 příznaky (výška, váha, procento tuku).
- Prozkoumejte příznaky a vztahy mezi nimi.
- Zkuste vztahy mezi procentem tuku a ostatními příznaky modelovat pomocí lineární regese. Jáký model nejlépe vysvětluje procento tuku.
- Proveďte PCA datové matice a prozkoumejte jednotlivé komponenty. Lze nalézt podobnosti mezi lineárními modely a PCA loadingy?
d <- read.csv('tuk.txt')
str(d)
d <- d[complete.cases(d),]
lm_w <- lm(fat ~ weight,data=d)
summary(lm_w)
lm_h <- lm(fat ~ height,data=d)
summary(lm_h)
lm_hw <- lm(fat ~ height + weight,data=d)
summary(lm_hw)
pca <- princomp(scale(d))
summary(pca)
pca$loadings
==== Úloha 3.2: PCA ====
Podíváme se znovu na data {{courses:a6m33dvz:cviceni:d2.csv|}}. Data obsahující instance dvou tříd. U instancí jsme měřili 8 atributů.
- Data klasifikujte, např. pomocí rozhodovacího stromu. Jaké úspěšnosti lze dosáhnout?
- Myslíte, že se dá výsledek "nějak" vylepšit? Můžete se např. pokusit vybrat pouze některé atributy a znovu postavit rozhodovací strom.
- Pokuste se rovněž extrahovat nový atribut (atributy), který(é) by mohly dobře rozlišit instance daných tříd. Opět postavte rozhodovací strom a porovnejte jej s předchozími.
- Nyní použijeme pro extrakci příznaků metodu PCA. Na extrahovaných příznacích opět postavte rozhodovací strom a porovnejte jej s předchozími.
- Podívejte se, jaké příznaky vlastně PCA extrahovala. Srovnejte s příznaky, které jste vytvořili sami. Je možné dát první extrahovaný příznak do souvislosti s korelační maticí původních příznaků?
# Pricipal Components Analysis
library(MASS)
library(rpart)
library(rpart.plot)
d <- read.csv('d2.csv')
str(d)
parcoord(d[,1:8],col=d[,9])
dectree <- rpart(c ~ .,data=d)
rpart.plot(dectree)
summary(dectree)
dectree <- rpart(c ~ . + I(...),data=d)
rpart.plot(dectree)
pca <- princomp(scale(d[,1:8]))
summary(pca)
pca$loadings
dectree <- rpart(d$c ~ pca$scores)
rpart.plot(dectree)
Pro porovnání korelací mezi jednotlivými atributy je možné využít následující vizualizaci:
library(corrgram)
corrgram(d[,1:8], order=TRUE,
lower.panel=panel.shade,
upper.panel=panel.pie,
text.panel=panel.txt,
main="Original dataset d2")
#new pca attributes
corrgram(pca$scores, order=TRUE,
lower.panel=panel.shade,
upper.panel=panel.pie,
text.panel=panel.txt,
main="Transformed dataset d2")
==== Úloha 4 - vizualizace reálných dat, identifikace odlehlých a chybných pozorování ====
Prozkoumejte data {{courses:a6m33dvz:cviceni:boston.csv|}}. Popis atributů je http://stat.ethz.ch/R-manual/R-patched/library/MASS/html/Boston.html.
- Podívejte se nejprve na průměty dat do jednotlivých dimenzí. Co o datech soudíte? Pokuste se (např. v histogramech) identifikovat odlehlá a chybná pozorování.
- Nyní se podívejte na průměty dat do dvou dimenzí. Pokuste se (bez ohledu na to, co jste zjistili v předchozím kroku) identifikovat opět odlehlá a chybná pozorování (sledujte např. příznaky ''"tax"'' a ''"rad"'').
- Porovnejte poznatky z předchozích dvou kroků.
- Potenciální odlehlá a chybná pozorování sledujte nyní v průmětech do prostorů vyšších dimenzí. Změní se nějak váš názor na potenciálně odlehlá/chybná pozorování?