首页 > 解决方案 > 为什么分类的拟合模型评估和混淆矩阵的准确性差异如此之大。使用 R

问题描述

我试图通过打印来解释我运行的随机森林模型的结果Model_RF_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

这种行为有什么解释吗?

标签: rconfusion-matrix

解决方案


欢迎来到 Stack Overflow,Manu。不同之处在于,您在调用中显示的结果Model_RF_RF是您的 OOB(Out of Bag)结果,而您最后打印的结果是您的训练集上的结果。

如您所知,随机森林使用 bagging,这意味着他们使用您的数据的自举样本来种植树木。这意味着数据集中的每条记录将仅用于您种植的所有树木的一小部分,即在引导期间绘制记录的树木。因此,OOB 分数是通过仅使用不包括引导程序中指定条目的树来预测条目而获得的,因此每棵树只预测它从未见过的数据 - 这给出了一个很好的(通常略显悲观的)测试估计错误。

因此,看起来您的训练准确度非常好,而您的测试准确度却很低(正如 OOB 估计所示)。您可以尝试在一些验证数据上测试您的模型或使用交叉验证,您应该获得与您的 OOB 相似的分数。

尝试改变 的值mtry,增加树的数量,或者做更多的特征工程。祝你好运!


推荐阅读