Drzewa decyzyjne i analiza skupień w Rattle
Transkrypt
Drzewa decyzyjne i analiza skupień w Rattle
Drzewa decyzyjne oraz analiza skupień w środowisku Rattle Wczytanie zbioru IRIS Wystarczy przejść na zakładkę Model I wybrać opcję „Tree” i przycisk „Wykonaj” Parametry użyte: Można o nich doczytać w dokumentacji Rattle: http://127.0.0.1:13936/library/rpart/html/rpart.html Proszę doczytać w dokumentacji i odpowiedzieć na pytania: co oznacza parametr cp? jaka jest jego wartość domyślna? co oznacza parametr min split? jaka jest jego wartość domyślna? Czym są węzły (ang. node) ? Jak są numerowane węzły? Jak się nazywają pierwszy i ostatnie węzły? Czym się charakteryzują węzły nie będące liśćmi? Gdy warunek podziału w danym węźle jest spełniony to przechodzimy do lewego czy prawego potomka? Odp.: do lewego Czym się charakteryzuje węzeł będący liściem? Powróćmy do wydruku tekstowego drzewa: fitness.rpart Czym są kolumny wydruku: „node”, „split” , „n”, „deviance” oraz „yval” ? node), - posługując się graficzną reprezentacją zwróć uwagę na sposób numeracji split - czy korzeń ma warunek n - zauważ, że suma elementów u dzieci jest równa liczbie elementów u rodzica, np. n2+n3=n1 deviance - zauważ, że SSE u dzieci jest mniejsza niż SSE u rodzica, np. SSE2+SSE3 < SSE1 yval - za wartość teoretyczną bierze się średnią, ale można też próbować w liściach budować regresję Czym są gwiazdki? Wywołanie spowoduje wyświetlenie następujących wyników: Summary of the Decision Tree model for Classification (built using 'rpart'): n= 105 node), split, n, loss, yval, (yprob) * denotes terminal node 1) root 105 68 Iris-virginica (0.31428571 0.33333333 0.35238095) 2) pl< 2.6 33 0 Iris-setosa (1.00000000 0.00000000 0.00000000) * 3) pl>=2.6 72 35 Iris-virginica (0.00000000 0.48611111 0.51388889) 6) pl< 4.85 37 3 Iris-versicolor (0.00000000 0.91891892 0.08108108) * 7) pl>=4.85 35 1 Iris-virginica (0.00000000 0.02857143 0.97142857) * Classification tree: rpart(formula = class ~ ., data = crs$dataset[crs$train, c(crs$input, crs$target)], method = "class", parms = list(split = "information"), control = rpart.control(usesurrogate = 0, maxsurrogate = 0)) Variables actually used in tree construction: [1] pl Root node error: 68/105 = 0.64762 n= 105 CP nsplit rel error xerror xstd 1 0.48529 0 1.000000 1.16176 0.065042 2 0.45588 1 0.514706 0.72059 0.075178 3 0.01000 2 0.058824 0.13235 0.042185 Jeśli teraz klikniemy przycisk „Rules” Otrzymamy: Jeśli zaś wybierzemy opcję „Draw” Analiza skupień Algorytmy niehierarchiczne : kMeans Skoro analizujemy zbiór IRIS i wiadomo, że w zbiorze tym da się idealnie wyróżnić 3 skupienia zaznaczamy taką właśnie liczbę skupień do utworzenia. Wtedy rezultat będzie następujący: Cluster sizes: [1] "31 23 96" Data means: sl sw pl pw 5.843333 3.054000 3.758667 1.198667 Cluster centers: sl sw pl pw 1 5.203226 3.632258 1.477419 0.2774194 2 4.739130 2.934783 1.760870 0.3347826 3 6.314583 2.895833 4.973958 1.7031250 Within cluster sum of squares: [1] 5.905806 18.293913 118.651875 Time taken: 0.00 secs Rattle timestamp: 2012-05-15 19:04:42 ANB Gdy klikniemy przycisk „Data plot” efekt będzie taki: Gdy klikniemy opcję „Discriminant plot” efektem będzie następujący wykres: Gdy klikniemy przycisk „Stats” otrzymujemy wypis wszystkich statystyk: General cluster statistics: $n [1] 150 $cluster.number [1] 3 $cluster.size [1] 31 23 96 $diameter [1] 1.462874 2.839014 4.153312 $average.distance [1] 0.5682917 0.9764373 1.3911584 $median.distance [1] 0.5291503 0.5567764 1.2369317 $separation [1] 0.2236068 0.2236068 0.6480741 $average.toother [1] 3.508452 3.232137 4.004540 $separation.matrix [,1] [,2] [,3] [1,] 0.0000000 0.2236068 2.0832667 [2,] 0.2236068 0.0000000 0.6480741 [3,] 2.0832667 0.6480741 0.0000000 $average.between [1] 3.658071 $average.within [1] 1.298783 $n.between [1] 5897 $n.within [1] 5278 $within.cluster.ss [1] 142.8516 $clus.avg.silwidths 1 2 3 0.4891978 0.1085040 0.6247531 $avg.silwidth [1] 0.5175801 $g2 NULL $g3 NULL $pearsongamma [1] 0.7211164 $dunn [1] 0.05383819 $entropy [1] 0.898986 $wb.ratio [1] 0.3550459 $ch [1] 276.7978 $corrected.rand NULL $vi NULL Rattle timestamp: 2012-05-15 19:04:54 ANB Algorytmy hierarchiczne Graficzną reprezentacją skupień jest tzw. dendrogram. Klikając “dendrogram”: Klikając “Stats” otrzymujemy wykaz statystyk: Cluster means: sl sw pl pw [1,] 5.006000 3.418000 1.464000 0.244000 [2,] 5.929688 2.757812 4.410938 1.439062 [3,] 6.852778 3.075000 5.786111 2.097222 Rattle timestamp: 2012-05-15 19:13:59 ANB ====================================================================== General cluster statistics: $n [1] 150 $cluster.number [1] 3 $cluster.size [1] 50 64 36 $diameter [1] 2.428992 2.714774 2.418677 $average.distance [1] 0.698122 1.046908 1.007336 $median.distance [1] 0.6164414 0.9899495 0.9055385 $separation [1] 1.6401219 0.3741657 0.3741657 $average.toother [1] 4.060413 2.836673 3.347308 $separation.matrix [,1] [,2] [,3] [1,] 0.000000 1.6401219 3.8884444 [2,] 1.640122 0.0000000 0.3741657 [3,] 3.888444 0.3741657 0.0000000 $average.between [1] 3.398992 $average.within [1] 0.9300922 $n.between [1] 7304 $n.within [1] 3871 $within.cluster.ss [1] 79.53477 $clus.avg.silwidths 1 2 3 0.7989943 0.4113648 0.4670305 $avg.silwidth [1] 0.5539344 $g2 NULL $g3 NULL $pearsongamma [1] 0.7192328 $dunn [1] 0.1378257 $entropy [1] 1.072126 $wb.ratio [1] 0.2736377 $ch [1] 555.6662 $corrected.rand NULL $vi NULL Rattle timestamp: 2012-05-15 19:14:00 ANB Klikając “data plot” Klikając “discriminant plot” Zadania do wykonania w ramach własnego zbioru: Proszę dla swojego zbioru zbudować drzewo decyzyjne i je opisać. Proszę dla swojego zbioru danych i algorytmu KMeans wygenerować skupienia i opisać wyniki.