मैं 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"))
उसके बाद, मैं एक टेस्टसेट पर यादृच्छिक परीक्षण का परीक्षण करता हूं (नया डेटा)
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
मैं अब $ फाइनलमॉडल का परीक्षण करना चाहता हूं और मुझे लगता है कि यह मुझे एक ही परिणाम देना चाहिए, लेकिन किसी तरह मुझे प्राप्त होता है
> 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 संपादित करें:
मैंने बिना पूर्व-विकल्प के भी एक और यादृच्छिक खोज सीखी और एक और परिणाम प्राप्त किया:
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
, दूसरी बार आपने मॉडल ऑब्जेक्ट का उपयोग करके भविष्यवाणी की थी, मुझे लगता है। तो अंतर ट्रेन ऑब्जेक्ट के साथ अन्य चीजों को पारित करने में हो सकता है जो ट्रेन ऑब्जेक्ट का उपयोग किए बिना आपके नए परीक्षण डेटा को किसी तरह से अलग तरीके से संसाधित करता है।