キャレットパッケージを使用して、randomForestオブジェクトを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"))
その後、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
2番目の
—
topepo 2014年
train
モデルでは、実行前に乱数シードを設定しない限り、少し異なる結果が得られます(を参照?set.seed
)。精度の値は0.8135と0.8111です。これらはかなり近く、リサンプリングのランダム性とモデル計算によるものです。
RFFit
が、2番目の例では、モデルオブジェクトを使用して予測しました。したがって、違いは、新しいテストデータを処理するトレインオブジェクトと一緒に他のものを渡す場合に、トレインオブジェクトを使用しない場合とは多少異なる場合があります。