2015-01-24 15 views
5

Używam randomForest w R z trybem pełnym (do.trace), i zastanawiałem się, jakie znaczenie mają kolumny w wiadomości. Widzę, że ntree to liczba drzew, a OOB to% próbek z toreb, ale co to są "1" i "2"?Objaśnienie trybu szczegółowego podczas uruchamiania randomForest w R

> rf.m <- randomForest(x = X.train, y=as.factor(y.train), do.trace=10) 
ntree  OOB  1  2 
    10: 32.03% 15.60% 82.47% 
    20: 29.18% 10.51% 86.31% 
    30: 27.44% 7.47% 88.57% 
    40: 26.48% 5.29% 91.33% 
    50: 25.92% 4.35% 91.96% 
    .... 

Odpowiedz

9

Kolumny 1 i 2 na wyjściu daje błąd klasyfikacji dla każdej klasy. Wartość OOB jest średnią ważoną błędów klas (ważoną przez ułamek obserwacji w każdej klasie).

Przykładem (dostosowanie losowy przykład las od strony Pomoc):

# Keep every 100th tree in the trace 
set.seed(71) 
iris.rf <- randomForest(Species ~ ., data=iris, importance=TRUE, 
         proximity=TRUE, do.trace=100) 

ntree  OOB  1  2  3 
    100: 6.00% 0.00% 8.00% 10.00% 
    200: 5.33% 0.00% 6.00% 10.00% 
    300: 6.00% 0.00% 8.00% 10.00% 
    400: 4.67% 0.00% 8.00% 6.00% 
    500: 5.33% 0.00% 8.00% 8.00% 

Średnia ważona błędów klasy na 100. drzewo daje współczynnik błędu OOB o 6,0%, dokładnie tak, jak podano w prześledzić powyżej. (prop.table zwraca część obserwacji w każdej kategorii (każdej klasie) gatunków). Mnożymy ten element przez błędy klasy dla 100 drzewa, podane w powyższych wartościach śledzenia, a następnie sumujemy, aby uzyskać błąd średniej ważonej dla wszystkich klas (błąd OOB).

sum(prop.table(table(iris$Species)) * c(0, 0.08, 0.10)) 
[,1] 
[1,] 0.06 

można uniknąć konieczności użycia sumę jeśli używasz mnożenia macierzy, która tutaj jest równoznaczne z kropka/skalarnego/produktu wewnętrzna:

prop.table(table(iris$Species)) %*% c(0, 0.08, 0.10) 
Powiązane problemy