Я використовую пакет caret для навчання випадкового об'єкта Forest з 10x10CV.
library(caret)
tc <- trainControl("repeatedcv", number=10, repeats=10, classProbs=TRUE, savePred=T)
RFFit <- train(Defect ~., data=trainingSet, method="rf", trControl=tc, preProc=c("center", "scale"))
Після цього я тестую randomForest на testSet (нові дані)
RF.testSet$Prediction <- predict(RFFit, newdata=testSet)
Матриця плутанини показує мені, що модель не така вже й погана.
confusionMatrix(data=RF.testSet$Prediction, RF.testSet$Defect)
Reference
Prediction 0 1
0 886 179
1 53 126
Accuracy : 0.8135
95% CI : (0.7907, 0.8348)
No Information Rate : 0.7548
P-Value [Acc > NIR] : 4.369e-07
Kappa : 0.4145
Зараз я хочу перевірити $ finalModel, і я думаю, що це має дати мені такий же результат, але я якось отримую
> RF.testSet$Prediction <- predict(RFFit$finalModel, newdata=RF.testSet)
> confusionMatrix(data=RF.testSet$Prediction, RF.testSet$Defect)
Confusion Matrix and Statistics
Reference
Prediction 0 1
0 323 66
1 616 239
Accuracy : 0.4518
95% CI : (0.4239, 0.4799)
No Information Rate : 0.7548
P-Value [Acc > NIR] : 1
Kappa : 0.0793
Що я пропускаю?
редагувати @topepo:
Я також дізнався ще один randomForest без попередньо обробленої опції та отримав інший результат:
RFFit2 <- train(Defect ~., data=trainingSet, method="rf", trControl=tc)
testSet$Prediction2 <- predict(RFFit2, newdata=testSet)
confusionMatrix(data=testSet$Prediction2, testSet$Defect)
Confusion Matrix and Statistics
Reference
Prediction 0 1
0 878 174
1 61 131
Accuracy : 0.8111
95% CI : (0.7882, 0.8325)
No Information Rate : 0.7548
P-Value [Acc > NIR] : 1.252e-06
Kappa : 0.4167
Для другої
—
топепо
train
моделі ви отримаєте дещо інший результат, якщо ви не встановите насіння випадкового числа перед його запуском (див. ?set.seed
). Значення точності - 0,8135 та 0,8111, які є досить близькими і лише через випадковість перекомпонування та модельних розрахунків.
RFFit
, у другому випадку ви передбачили, використовуючи модельний об'єкт, я думаю. Тож різниця може полягати в передачі інших речей разом із об'єктом поїзда, який обробив ваші нові дані тесту якось інакше, ніж без використання об'єкта поїзда.