得到R中随机森林的精度

得到R中随机森林的精度,r,random-forest,confusion-matrix,R,Random Forest,Confusion Matrix,我已经用我的数据创建了一个随机林: fit=randomForest(churn~., data=data_churn[3:17], ntree=1, importance=TRUE, proximity=TRUE) 我可以很容易地看到我的混淆矩阵: conf <- fit$confusion > conf No Yes class.error No 945 80 0.07804878 Yes 84 101 0.45405405

我已经用我的数据创建了一个
随机林

fit=randomForest(churn~., data=data_churn[3:17], ntree=1,
                 importance=TRUE, proximity=TRUE)
我可以很容易地看到我的
混淆矩阵

conf <- fit$confusion
> conf
     No Yes class.error
No  945  80  0.07804878
Yes  84 101  0.45405405
conf
否是类错误
编号945800.07804878
是84 101 0.45405
现在我需要知道随机森林的准确度。我四处搜索,发现库中有一个
confusionMatrix
方法,该方法获取一个混淆矩阵并返回精度(以及许多其他值)。但是,该方法需要另一个名为
“reference”
的参数。我的问题是,我如何为获得随机森林的准确性的方法提供参考? 而且。。。这是获得随机森林精度的正确方法吗

使用
randomForest(…,do.trace=T)
查看班级和ntree在培训期间的OOB错误

(仅供参考,您选择了
ntree=1
,因此您只会得到一个rpart决策树,而不是一个林,这种方法不符合使用RF以及随机选择特征和样本子集的目的。您可能希望改变
ntree
值。)

培训后,您可以从混乱矩阵最右边的列中获得每类错误,正如您已经发现的:

> fit$confusion[, 'class.error']
class.error
No         Yes
0.07804878 0.45405405
(您可能还希望设置
选项('digits'=3)
以避免看到过多的小数点)

至于将类错误列表(精度=1-错误)转换为一个总体精度数字,这很容易做到。您可以使用平均值、类别加权平均值、调和平均值(准确度,而非误差)等。这取决于您的应用和错误分类的相对惩罚。你的例子很简单,只有两个类


(或例如,有更复杂的评分员间协议衡量标准)

如果您只是在命令提示下键入
fit
,则会打印出混淆矩阵和缺货(OOB)错误。OOB错误是总体分类错误。您还可以根据混淆矩阵计算OOB错误。在你的例子中,它是164/1210(错误分类的观察数占观察总数的比例)。但是,如果您真的想知道您的模型有多好,您应该有单独的培训数据来创建模型,并有单独的测试数据(在模型构建过程中没有使用)来检查模型的性能。@eipi10谢谢!所以我假设精度是1-OOB误差。我说得对吗?是的。没错。仅供参考,您知道选择
ntree=1
只会生成一棵rpart树,而不是一个林吗?@smci是的。谢谢你的评论。我会改变执行中的树数。