我在R中使用详细模式(do.trace)运行randomForest,
我想知道消息中各列的含义是什么。
我可以看到ntree是树的数量,OOB是袋装样本的百分比,但是“1”和“2”是什么?

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

最佳答案

输出中的12列给出每个类的分类错误。 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

如果您使用矩阵乘法,则可以避免使用sum,这里等于点/标量/内积:
prop.table(table(iris$Species)) %*% c(0, 0.08, 0.10)

08-24 12:08