获得R中随机森林的准确性

时间:2015-02-23 02:23:00

标签: r random-forest confusion-matrix

我已经从我的数据中创建了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"的参数。我的问题是如何为获取随机森林的准确性的方法提供参考? 并且...它是获得随机森林准确性的正确方法吗?

1 个答案:

答案 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 - 错误)转换为一个总体准确度数字,这很容易做到。您可以使用平均值,类加权平均值,调和平均值(精度,而不是错误)等。这取决于您的应用程序和错误分类的相对惩罚。你的例子很简单,它只是两个类。

(或者有更复杂的评估者间协议衡量标准)