在R中运行randomForest时,verbose模式的解释

7

我在R中使用verbose模式(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%
   ....
1个回答

18

输出中的第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棵树的类错误加权平均值给出了6.0%的OOB错误率,与上面记录的一样。(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)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接