Колонны 1
и 2
на выходе дают ошибку классификации для каждого класса. Значение OOB
представляет собой средневзвешенное значение ошибок класса (взвешенное по количеству наблюдений в каждом классе).
Пример (адаптируя случайный пример леса со страницы справки):
# 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%
Средневзвешенные ошибок класса для 100-дерева дает частоту ошибок OOB 6,0%, в точности, как сообщалось в следы выше. (prop.table
возвращает долю наблюдений в каждой категории (каждый класс) видов). Мы умножаем этот элемент на ошибки класса для 100-го дерева, как указано в приведенных выше значениях трассировки, а затем суммируем, чтобы получить средневзвешенную ошибку по всем классам (ошибка OOB).
sum(prop.table(table(iris$Species)) * c(0, 0.08, 0.10))
[,1]
[1,] 0.06
Вы можете избежать необходимости использовать сумму, если вы используете матричное умножение, которое здесь эквивалентен дот/скалярный/внутренний продукт:
prop.table(table(iris$Species)) %*% c(0, 0.08, 0.10)