2015-01-24 5 views
5

Ich bin randomForest in R mit dem ausführlichen Modus (do.trace), und ich fragte mich, was die Bedeutungen von Spalten in der Nachricht sind. Ich kann sehen, ntree ist die Anzahl der Bäume, und OOB ist der Prozentsatz der aus der Tasche Proben, aber was sind "1" und "2"?Die Erklärung des ausführlichen Modus während der Ausführung von randomForest in 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% 
    .... 

Antwort

9

Columns 12 und in der Ausgabe für jede Klasse der Klassifizierungsfehler geben. Der Wert OOB ist der gewichtete Durchschnitt der Klassenfehler (gewichtet nach dem Anteil der Beobachtungen in jeder Klasse).

Ein Beispiel (den Zufall Wald Beispiel aus der Hilfeseite Anpassung):

# 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% 

Der gewichtete Durchschnitt der Klasse Fehler zum 100. Baum einer OOB-Fehlerrate von 6,0% ergibt, genau wie in der berichtete Spur oben. (prop.table gibt den Anteil der Beobachtungen in jeder Kategorie (jeder Klasse) von Arten zurück). Wir multiplizieren dies elementweise mit den Klassenfehlern für den 100. Baum, wie in den obigen Werten angegeben, und summieren dann, um den gewichteten Durchschnittsfehler über alle Klassen zu erhalten (OOB-Fehler).

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

Sie vermeiden können, benötigen Summe zu verwenden, wenn Sie die Matrixmultiplikation verwendet werden, die hier entspricht dem Punkt/Skalar/Skalarprodukt:

prop.table(table(iris$Species)) %*% c(0, 0.08, 0.10) 
Verwandte Themen