Připomeň: Shluková analýza Data Návrh kategorií X Y= 1, 2,..., K resp. i jejich počet K = co je s čím blízké + jak moc Neposkytne pravidlo pro zařazování
Připomeň: Klasifikace Data (X,Y) X... prediktory (sloupce matice) Y... zařazení do kategorií 1, 2,..., K Předem známe Cíl definici kategorií Y jejich počet Zařazovací pravidlo klasifikátor Predikce kategorie Y pro nový objekt (popsaný X)
Klasifikační a regresní stromy CART (Breiman, Friedman, Olshen, and Stone. (1984) :Classification and Regression TrCARTees.) Uzly (nodes) Listy (leafs)
Klasifikační a regresní stromy CART (Breiman, Friedman, Olshen, and Stone. (1984) :Classification and Regression TrCARTees.) Uzly (nodes) Listy (leafs) Predikce Pravděpodobnost Y=1 (=ANO) % pozorování, spadlých do tohoto uzlu
CART co dělají Rozřežou prostor na listy = 'homogenní' kvádry + hierarchicky zachytí postup řezání Kritérium optimality: snížení znečištění uzlů ~ analogie s Divisivní Cluster Analýzou
CART dle typu závislého znaku Klasifikační strom Regresní strom Y je kategoriální Y je kardinální Predikce kategorie Predikce číslo Míra znečištění Entropie Gini Y ordinální nutno zadat vzdálenosti Míra znečištění (jako v regresi) RSS= y i y 2
CART specialita Oddělují jen rovně = žádné (latentní) rotace +Interpretovatelnost -- Suboptimalita
CART srovnání s LDA
Vlastnosti CART PLUSy Snadná interpretace Umí všechny typy prediktorů (naráz) Umí všechny typy závislých Zvládá hodně proměnných Nepředpokládá normalitu ani jiné rozdělení prediktorů Robustní vůči monotónní trafo prediktorů MÍNUSy Subo ptimalita Řeže jen rovně Jen dvě větve z 1 uzlu LZE snadno přefitovat pruning
Pěstování CART 1) Min počet případů (a) v listu cca 50 (b) v uzlu, který se může dělit cca 200 2) Prořez ( Pruning) Complexity plot 3) Výběr alternativních prediktorů 4) Doladění cut-offů interpretabilita
Pěstování CART 2 neprořezaný titan.0 <- rpart(survived ~., data=ptitanic))
Pěstování CART 2 neprořezaný Přefitovaný nestabilní hledá podružnosti nutno prořezat
Pěstování CART 3 prořez dle CP Dle parametru komplexity v cross validaci se zkoumá relativní chyba predikce při použití stromu dané velikosti měřeno parametrem komplexity CP CP ekvivalentní s počtem listů počtem větvení přehlednější je graf
Pěstování CART 4 prořez dle CP CP nsplit rel error xerror xstd 1 0.42400000 0 1.000 1.000 0.0351 2 0.02100000 1 0.576 0.576 0.0299 3 0.01500000 3 0.534 0.562 0.0297 4 0.01133333 5 0.504 0.546 0.0293 5 0.01000000 9 0.458 0.538 0.0292 Parametr komplexity Počet větvení Rel. Chyba predikce na trénovací množině Rel. Chyba predikce v cross validaci Std. Dev of xerror
Pěstování CART 4 prořez dle CP CP nsplit rel error xerror xstd 1 0.42400000 0 1.000 1.000 0.0351 2 0.02100000 1 0.576 0.576 0.0299 3 0.01500000 3 0.534 0.562 0.0297 4 0.01133333 5 0.504 0.546 0.0293 5 0.01000000 9 0.458 0.538 0.0292 Součtem vznikne hranice pro minimum horní mez pro odhad min(xerror)
Pěstování CART 5 prořez dle CP Dle parametru Complexity Pravidlo: min +1 SD Min počet uzlů, který bude pod čárou cíl = co nejjednodušší strom min chyba Čára = min(xerror)+ xstd
Pěstování CART 6 prořezaný titan.1<-rpart(survived ~., data=ptitanic, cp=.02)
Pěstování CART 6 prořezaný titan.1<-rpart(survived ~., data=ptitanic, cp=.02) jen 4% pozorování
Výběr alternativních prediktorů Zlepšení nehomogenity uzlu (Primary splits >> Improve) ukazuje relat. významnost prediktorů (zda) lze nalézt náhradní (s lepší interpretací) Náhradní (Surrogate) prediktory Pro případ missingů u řádných prediktorů
Výběr alternativních prediktorů 2 Node number 1: 1309 observations, complexity param=0.424 predicted class=died expected loss=0.382 P(node) =1 class counts: 809 500 probabilities: 0.618 0.382 left son=2 (843 obs) right son=3 (466 obs) Primary splits: sex splits as RL, improve=172.749200, (0 missing) pclass splits as RRL, improve= 49.647030, (0 missing) parch < 0.5 to the left, improve= 18.588590, (0 missing) age < 8.5 to the right, improve= 8.228231, (263 missing) sibsp < 0.5 to the left, improve= 6.902501, (0 missing) Surrogate splits: parch < 0.5 to the left, agree=0.674, adj=0.084, (0 split)
Výběr alternativních prediktorů 2 Node number 1: 1309 observations, complexity param=0.424 predicted class=died expected loss=0.382 P(node) =1 class counts: 809 500 probabilities: 0.618 0.382 Sex nahradit nelze left son=2 (843 obs) right son=3 (466 obs) Primary splits: sex splits as RL, improve=172.749200, (0 missing) pclass splits as RRL, improve= 49.647030, (0 missing) parch < 0.5 to the left, improve= 18.588590, (0 missing) age < 8.5 to the right, improve= 8.228231, (263 missing) sibsp < 0.5 to the left, improve= 6.902501, (0 missing) Surrogate splits: parch < 0.5 to the left, agree=0.674, adj=0.084, (0 split)
Výběr alternativních prediktorů 2 Node number 1: 1309 observations, complexity param=0.424 predicted class=died expected loss=0.382 P(node) =1 class counts: 809 500 probabilities: 0.618 0.382 left son=2 (843 obs) right son=3 (466 obs) Primary splits: sex splits as RL, improve=172.749200, (0 missing) pclass splits as RRL, improve= 49.647030, (0 missing) parch < 0.5 to the left, improve= 18.588590, (0 missing) age < 8.5 to the right, improve= 8.228231, (263 missing) sibsp < 0.5 to the left, improve= 6.902501, (0 missing) Surrogate splits: parch < 0.5 to the left, agree=0.674, adj=0.084, (0 split)
Doladění prahů a kategorizací Navržené cut-offy prediktorů mohou být nesmyslné (neinterpretovatelné) Zadaná kategorizace nemusí být vhodná? zda je lze posunout / překategorizovat 2 metody 1) nahradit prediktor identifikátorem překročení zvoleného prahu + ohodnotit nový strom 2) zkoumat závislost nečistoty uzlu na Cut-offu
Doladění prahů a kategorizací 2 IF věk >18 1 ELSE...0 Změna stromu: Věk úplně zmizel dělí se jiný uzel tento uzel se dělil minule
Doladění prahů a kategorizací 2 IF věk >18 1 ELSE...0 jen 3% pozorovani
CART relat. vs. absol. četnosti
Hodnocení CART Matice záměn (Confusion matrix) Odvozené míry Acc Celková správnost Err Relat. Chyba = 1- Acc TPR (senzitivita) = TP / N 1 FPR (nespecificita) = FP / N 0
Hodnocení CART 2: Matice záměn R code CMat<table(true=ptitanic$survived, predicted=predict(titan.1, PREDICTED type='class')) TRUE died survived Sum died 679 130 809 survived 137 363 500 ALL 1309
Hodnocení CART 3: Míry R code (acc.1<-sum(diag(cm.1))/sum(cm.1)) # 0.796 (err.1<-1-acc.1) # 0.204 (tpr.1<-cm.1[2,2]/sum(cm.1[2,])) # 0.726 (fpr.1<-cm.1[1,2]/sum(cm.1[1,])) # 0.161
Hodnocení CART 4: Porovnávání modelů Error Rate (Expected Loss) model how to calculate Error Rate NULL (pařez) 38% 2 listy (dle pohlaví) 19% * 64% + 27%*36% 22% 4 listy (prořezaný) 17%*61% + 5%* 2% + 11%*2% + 0.27%* 36% 20% 5 listů (změna cut-offu) 19%*64% + 14%*2% + 11%*1%+ 45%*14% + 7%*19% 20%
Použití CART 1) Interpretace CART jako model diskriminace 2) Predikce 1) Samotný strom zařazuje dle prediktorů 2) Zlepšení predikční schopnosti 1)(regresní) náhodné lesy 2) boosting