Utilizo el paquete caret para entrenar un objeto randomForest con 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"))
Después de eso, pruebo el randomForest en un testSet (nuevos datos)
RF.testSet$Prediction <- predict(RFFit, newdata=testSet)
La matriz de confusión me muestra que el modelo no es tan malo.
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
Ahora quiero probar el $ finalModel y creo que debería darme el mismo resultado, pero de alguna manera recibo
> 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
¿Qué me estoy perdiendo?
editar @topepo:
También aprendí otro randomForest sin la opción preProcessed y obtuve otro resultado:
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
Para el segundo
—
topepo
train
modelo obtendrá un resultado ligeramente diferente a menos que establezca la semilla de número aleatorio antes de ejecutarlo (ver ?set.seed
). Los valores de precisión son 0.8135 y 0.8111, que son bastante cercanos y solo debido a la aleatoriedad del remuestreo y los cálculos del modelo.
RFFit
, en la segunda vez que predijiste usar el objeto modelo, supongo. Entonces, la diferencia podría estar en pasar otras cosas junto con el objeto del tren que procesó sus nuevos datos de prueba de alguna manera diferente que sin usar el objeto del tren.