我在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%
....
答案 0 :(得分:12)
输出中的列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
如果你使用矩阵乘法,你可以避免使用求和,这里等于点/标量/内积:
prop.table(table(iris$Species)) %*% c(0, 0.08, 0.10)