{{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í?