Почему так много различий в точности от подходящей оценки модели и матрицы путаницы по классам. используя R - PullRequest
1 голос
/ 20 января 2020

Я пытаюсь интерпретировать результаты запущенной мной модели Random Forest, печатая 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

Есть ли какое-либо объяснение этому поведению?

1 Ответ

1 голос
/ 20 января 2020

Добро пожаловать в Stack Overflow, Ману. Разница в том, что результат, который вы видите при вызове Model_RF_RF, является результатом OOB (Out of Bag), а результат, который вы печатаете в конце, - результат вашего тренировочного набора.

Как вы знаете, случайные леса используют пакетирование, что означает, что они используют загрузочную выборку ваших данных для выращивания деревьев. Это означает, что каждая отдельная запись в вашем наборе данных будет использоваться только в части всех деревьев, которые вы выращиваете, то есть тех, которые нарисовали запись во время начальной загрузки. Таким образом, оценка OOB получается путем прогнозирования записей с использованием только деревьев, которые НЕ включают указанные записи в bootstrap, поэтому каждое дерево прогнозирует только те данные, которые оно никогда не видело - и это дает хорошие (часто слегка пессимистичные c) ) оценка вашей тестовой ошибки.

Таким образом, похоже, что ваша точность обучения очень хорошая, в то время как тестовая - довольно низкая (как предполагает оценка OOB). Вы можете попробовать и протестировать свою модель на некоторых данных проверки или использовать перекрестную проверку, и вы должны получить оценку, аналогичную вашей OOB.

Попробуйте изменить значение mtry, увеличьте количество деревьев или сделайте еще несколько функций. Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...