为什么拟合模型评估和混淆矩阵的准确度存在如此大的差异。使用R

为什么拟合模型评估和混淆矩阵的准确度存在如此大的差异。使用R,r,confusion-matrix,R,Confusion Matrix,我试图通过打印model\u RF\u RF来解释我运行的随机森林模型的结果。然而,这些结果与我通过手动比较混淆矩阵和准确度得到的结果非常不同 Model_RF_RF<-randomForest(Label ~ .,data = train.tokens.tfidf.df,ntree=500,mtry=82,importance=TRUE,proximity=TRUE,trControl = cv.cntrl,nodesize=10) >Model_RF_RF Call: ran

我试图通过打印
model\u RF\u RF
来解释我运行的随机森林模型的结果。然而,这些结果与我通过手动比较混淆矩阵和准确度得到的结果非常不同

Model_RF_RF<-randomForest(Label ~ .,data = train.tokens.tfidf.df,ntree=500,mtry=82,importance=TRUE,proximity=TRUE,trControl = cv.cntrl,nodesize=10)
>Model_RF_RF

Call:
 randomForest(formula = Label ~ ., data = train.tokens.tfidf.df,      ntree = 500, mtry = 82, importance = TRUE, proximity = TRUE,      trControl = cv.cntrl, nodesize = 10) 
               Type of random forest: classification
                     Number of trees: 500
No. of variables tried at each split: 82

        OOB estimate of  error rate: 44.56%
Confusion matrix:
       HIGH LOW MEDIUM class.error
HIGH     46   3     72   0.6198347
LOW       3  25     93   0.7933884
MEDIUM   22  20    194   0.1779661
> confusionMatrix(PD5,train$Label )
Confusion Matrix and Statistics

          Reference
Prediction HIGH LOW MEDIUM
    HIGH    119   0      0
    LOW       1 120      3
    MEDIUM    1   1    233

Overall Statistics

               Accuracy : 0.9874          
                 95% CI : (0.9729, 0.9954)
    No Information Rate : 0.4937          
    P-Value [Acc > NIR] : <2e-16          

                  Kappa : 0.98            

 Mcnemar's Test P-Value : 0.3916          

Statistics by Class:

                     Class: HIGH Class: LOW Class: MEDIUM
Sensitivity               0.9835     0.9917        0.9873
Specificity               1.0000     0.9888        0.9917
Pos Pred Value            1.0000     0.9677        0.9915
Neg Pred Value            0.9944     0.9972        0.9877
Prevalence                0.2531     0.2531        0.4937
Detection Rate            0.2490     0.2510        0.4874
Detection Prevalence      0.2490     0.2594        0.4916
Balanced Accuracy         0.9917     0.9903        0.9895
Model\u RF\u RFModel\u RF
电话:
randomForest(公式=Label~,数据=train.tokens.tfidf.df,ntree=500,mtry=82,重要性=TRUE,接近度=TRUE,trControl=cv.cntrl,节点大小=10)
随机森林类型:分类
树木数目:500
每次拆分时尝试的变量数:82
OOB错误率估计:44.56%
混淆矩阵:
高-低-中类错误
高46 3 72 0.6198347
低3 25 93 0.7933884
中等22 20 194 0.1779661
>混淆矩阵(PD5,列车$Label)
混淆矩阵与统计
参考文献
预测高-低-中
高11900
低11203
中等1 233
总体统计
准确度:0.9874
95%可信区间:(0.9729,0.9954)
无信息率:0.4937

P值[Acc>NIR]:

欢迎来到Stack Overflow,Manu。不同之处在于,调用

Model_RF_RF
时显示的结果是OOB(出包)结果,而最后打印的结果是训练集上的结果 正如您所知,随机森林使用袋装,这意味着它们使用数据的自举样本来生长树木。这意味着数据集中的每一条记录将仅用于您生长的所有树的一小部分,即在引导过程中绘制记录的树。因此,OOB分数是通过仅使用引导中不包含指定项的树来预测项来获得的,因此每个树只预测它从未见过的数据——这对测试错误给出了一个良好的(通常略为悲观的)估计 因此,看起来你的训练精度非常好,而你的测试精度相当低(正如OOB估计所示)。您可以尝试在一些验证数据上测试您的模型,或者使用交叉验证,您应该获得与OOB相似的分数
尝试更改
mtry
的值,增加树的数量,或执行更多的功能工程。祝你好运

谢谢,大卫。测试数据的准确率为61%。谢谢你的解释。这引出了我的第二个问题:我能接受这样高精度的模型吗?Np Manu,很高兴它有帮助。通常,如果你觉得答案有用,你可以投赞成票,如果你觉得它完全回答了你原来的问题,甚至可以选择它作为解决方案。关于接受模型,这取决于你的目标。如果61%对你来说足够了,那么是的——我不知道数据和手头的问题。总的来说,我仍然建议您尝试更好地调整您的模型,添加树并更改
mtry
,可能对原始功能进行一些改进。你可能会损失一些时间,但你也会学到很多,你可能会提高你的成绩!另外,我强烈建议不要固定树的数量,而是根据OOB错误使用提前停止(大多数实现都允许这样做):当OOB错误停止减少时,算法停止添加树。这通常可以让你刚好适合合适的数量