在R中运行randomForest期间详细模式的解释

时间:2015-01-24 16:12:20

标签: r random-forest

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

1 个答案:

答案 0 :(得分:12)

输出中的列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个树的类错误的加权平均值给出了6.0%的OOB错误率,与上面的跟踪中报告的完全相同。 (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)