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

Get the accuracy of a random forest in R

我用我的数据创建了一个 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 方法可以获取混淆矩阵和 returns 准确性(以及许多其他值)。但是,该方法需要另一个名为 "reference" 的参数。我的问题是如何为获得随机森林准确性的方法提供参考? 而且...这是获得随机森林准确性的正确方法吗?

使用 randomForest(..., do.trace=T) 查看训练期间的 OOB 错误,class 和 ntree。

(仅供参考,你选择了 ntree=1 所以你只会得到一个 rpart 决策树,而不是森林,这种违背了使用 RF 和随机选择两个特征的子集的目的和示例。您可能想要改变 ntree 值。)

训练后,您可以从混淆矩阵最右边的列中得到每个 class 的错误,正如您已经发现的那样:

> fit$confusion[, 'class.error']
class.error
No         Yes
0.07804878 0.45405405

(您可能还想设置 options('digits'=3) 以不看到那些过多的小数位)

至于将 class 错误列表(accuracies = 1 - errors)转换为一个总体准确度数字,这很容易做到。您可以使用 mean、class-weighted mean、harmonic mean(准确度,而不是错误)等。这取决于您的应用程序和 mis[=31 的相对惩罚=]化。你的例子很简单,只有两个-class.

(或者例如,有更复杂的评估者间协议措施)