10x10CV로 randomForest 객체를 훈련하기 위해 캐럿 패키지를 사용합니다.
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"))
그 후, testSet (새 데이터)에서 randomForest를 테스트합니다.
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 편집 :
또한 preProcessed 옵션없이 다른 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
두 번째
—
topepo
train
모델의 경우 실행하기 전에 난수 시드를 설정하지 않으면 약간 다른 결과를 얻을 수 있습니다 (참조 ?set.seed
). 정확도 값은 0.8135 및 0.8111이며, 이는 리샘플링의 임의성과 모델 계산으로 인해 매우 가깝습니다.
RFFit
했고, 두 번째로 모델 객체를 사용하여 예측했을 때, 나는 추측합니다. 따라서 새 테스트 데이터를 처리 한 기차 개체와 함께 다른 개체를 기차 개체를 사용하지 않는 방식과 다르게 전달할 때 차이가있을 수 있습니다.