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.