ฉันใช้ชุดคาเร็ตสำหรับฝึกวัตถุสุ่มป่าด้วย 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 ตัวอื่นโดยไม่มีตัวเลือก preProcessed และได้รับผลลัพธ์อื่น:
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
รุ่นที่2 คุณจะได้รับผลลัพธ์ที่แตกต่างกันเล็กน้อยเว้นแต่คุณจะตั้งค่าการสุ่มหมายเลขก่อนที่จะเรียกใช้ (ดู?set.seed
) ค่าความแม่นยำคือ 0.8135 และ 0.8111 ซึ่งค่อนข้างใกล้เคียงและมีเพียงเนื่องจากการสุ่มตัวอย่างของการสุ่มใหม่และการคำนวณแบบจำลอง
RFFit
ในครั้งที่สองที่คุณคาดการณ์โดยใช้โมเดลวัตถุฉันเดา ดังนั้นความแตกต่างอาจเกิดขึ้นในการส่งสิ่งอื่น ๆ พร้อมกับวัตถุรถไฟที่ประมวลผลข้อมูลการทดสอบใหม่ของคุณแตกต่างจากที่อื่นโดยไม่ใช้วัตถุรถไฟ