Colonne 1
e 2
nell'output danno l'errore di classificazione per ogni classe. Il valore OOB
è la media ponderata degli errori di classe (ponderata per la frazione di osservazioni in ogni classe).
Un esempio (adattando l'esempio foresta casuale dalla pagina di aiuto):
# 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%
La media ponderata degli errori di classe per l'albero di 100 ° dà un tasso di errore OOB del 6,0%, esattamente come riportato nel traccia sopra. (prop.table
restituisce la frazione di osservazioni in ogni categoria (ogni classe) di specie). Moltiplichiamo questo elemento in base agli errori di classe per il centesimo albero, come indicato nei valori di traccia sopra, e quindi somma per ottenere l'errore medio ponderato su tutte le classi (l'errore OOB).
sum(prop.table(table(iris$Species)) * c(0, 0.08, 0.10))
[,1]
[1,] 0.06
È possibile evitare di dover utilizzare somma se si utilizza la moltiplicazione di matrici, che qui è equivalente al dot/scalare/prodotto interno:
prop.table(table(iris$Species)) %*% c(0, 0.08, 0.10)