我在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
和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
如果您使用矩阵乘法,则可以避免使用sum,这里等于点/标量/内积:
prop.table(table(iris$Species)) %*% c(0, 0.08, 0.10)