Wojciech Obłąk

Wojciech Obłąk Programista, Asseco
Poland

Temat: Interpretacja getTree(randomForest()) dla faktora, gdzie...

Funkcja getTree(randomForest()) wypisuje wybrane drzewo z lasu losowego w formie tabeli, gdzie jedną z kolumn jest split_point - punkt podziału węzła.
Dla faktorów split_point podawany jest liczbą dziesiętną. Po zamianie na binarną, każda pojedyncza cyfra reprezentuje pojedynczy stan faktora.
Przykładowo: faktor ma 3 poziomy a split_point==5, czyli 101 binarnie - oznacza, że zapala się 1 i 3 stan faktora.
Lewa gałąź: jeśli faktor przyjmuje stan z 1 lub 3 poziomu to: ...
Prawa gałąź: jeśli faktor nie przyjmuje stanu z 1 lub 3 poziomu to: ... .

Proste, co jednak w przypadku, gdy split_point == 0 dla faktora ?
Lewa gałąź: żaden stan faktora ???
Prawa gałąź: jakikolwiek ze stanów faktora ???

Przykład, spójrzcie na wiersz 11 (f jest faktorem):

Obrazek


kod do rysunku (niestety nieustawiony seed więc niereproduktywny):

data(iris)
iris2<-iris
iris<-transform(iris2,f=iris$Species)

iris$Species<-ifelse(iris$Species=="setosa",1,0)

rf <- randomForest(data=iris, Species~ Sepal.Width+Petal.Length+f,ntree=100)

class(iris$f) #factor
rf$forest$xlevels

(getTree(rf,38,T))


Jakimś sposobem jednak predict(rf,iris) potrafi załapać warunek z faktorem na split_point == 0 zarówno na prawej gałężi jak i lewej.Ten post został edytowany przez Autora dnia 04.11.16 o godzinie 12:23