为什么与类的拟合模型评估和混淆矩阵的准确性差异如此之大



我试图通过打印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

这种行为有什么解释吗?

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

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

因此,看起来您的训练准确性非常好,而您的测试准确性非常低(正如 OOB 估计所表明的那样(。可以尝试在某些验证数据上测试模型或使用交叉验证,并且应获得与 OOB 类似的分数。

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

相关内容

最新更新