我已经从我的数据中创建了random forest
:
fit=randomForest(churn~., data=data_churn[3:17], ntree=1,
importance=TRUE, proximity=TRUE)
我可以轻松看到confusion matrix
:
conf <- fit$confusion
> conf
No Yes class.error
No 945 80 0.07804878
Yes 84 101 0.45405405
现在我需要知道随机森林的准确性。我四处搜索并意识到caret库有一个confusionMatrix
方法可以获得一个混淆矩阵并返回准确性(以及许多其他值)。但是,该方法需要另一个名为"reference"
的参数。我的问题是如何为获取随机森林的准确性的方法提供参考?
并且...它是获得随机森林准确性的正确方法吗?
答案 0 :(得分:5)
使用randomForest(..., do.trace=T)
在训练期间通过class和ntree查看OOB错误。
(仅供参考,你选择了ntree = 1,所以你只会得到一个rpart树,而不是森林,这种方式会破坏使用RF的目的,并随机选择两个特征和样本的子集。你可能想改变ntrees。)
在训练之后,您可以从已经找到的混淆矩阵的最右侧列中获得每类错误:
> fit$confusion[, 'class.error']
class.error
No Yes
0.07804878 0.45405405
(你也可能希望将options('digits'=3)
设置为看不到那些过多的小数位数)
至于将类错误列表(准确度= 1 - 错误)转换为一个总体准确度数字,这很容易做到。您可以使用平均值,类加权平均值,调和平均值(精度,而不是错误)等。这取决于您的应用程序和错误分类的相对惩罚。你的例子很简单,它只是两个类。
(或者有更复杂的评估者间协议衡量标准)