Je suis un peu confus: en quoi les résultats d'un modèle formé via le signe d'insertion peuvent-ils différer du modèle de l'emballage d'origine? J'ai lu si le prétraitement est nécessaire avant la prédiction à l'aide de FinalModel de RandomForest avec package caret? mais je n'utilise aucun prétraitement ici.
J'ai formé différentes forêts aléatoires en utilisant le package caret et en ajustant différentes valeurs de mesure.
> cvCtrl = trainControl(method = "repeatedcv",number = 10, repeats = 3, classProbs = TRUE, summaryFunction = twoClassSummary)
> newGrid = expand.grid(mtry = c(2,4,8,15))
> classifierRandomForest = train(case_success ~ ., data = train_data, trControl = cvCtrl, method = "rf", metric="ROC", tuneGrid = newGrid)
> curClassifier = classifierRandomForest
J'ai trouvé que mtry = 15 était le meilleur paramètre sur les données de formation:
> curClassifier
...
Resampling results across tuning parameters:
mtry ROC Sens Spec ROC SD Sens SD Spec SD
4 0.950 0.768 0.957 0.00413 0.0170 0.00285
5 0.951 0.778 0.957 0.00364 0.0148 0.00306
8 0.953 0.792 0.956 0.00395 0.0152 0.00389
10 0.954 0.797 0.955 0.00384 0.0146 0.00369
15 0.956 0.803 0.951 0.00369 0.0155 0.00472
ROC was used to select the optimal model using the largest value.
The final value used for the model was mtry = 15.
J'ai évalué le modèle avec une courbe ROC et une matrice de confusion:
##ROC-Curve
predRoc = predict(curClassifier, test_data, type = "prob")
myroc = pROC::roc(test_data$case_success, as.vector(predRoc[,2]))
plot(myroc, print.thres = "best")
##adjust optimal cut-off threshold for class probabilities
threshold = coords(myroc,x="best",best.method = "closest.topleft")[[1]] #get optimal cutoff threshold
predCut = factor( ifelse(predRoc[, "Yes"] > threshold, "Yes", "No") )
##Confusion Matrix (Accuracy, Spec, Sens etc.)
curConfusionMatrix = confusionMatrix(predCut, test_data$case_success, positive = "Yes")
La matrice de confusion et la précision qui en résultent:
Confusion Matrix and Statistics
Reference
Prediction No Yes
No 2757 693
Yes 375 6684
Accuracy : 0.8984
....
Maintenant, j'ai formé un Random Rorest avec les mêmes paramètres et les mêmes training_data en utilisant le package randomForest de base:
randomForestManual <- randomForest(case_success ~ ., data=train_data, mtry = 15, ntree=500,keep.forest=TRUE)
curClassifier = randomForestManual
Encore une fois, j'ai créé des prédictions pour les mêmes données de test que ci-dessus et évalué la matrice de confusion avec le même code que ci-dessus. Mais maintenant, j'ai obtenu différentes mesures:
Confusion Matrix and Statistics
Reference
Prediction No Yes
No 2702 897
Yes 430 6480
Accuracy : 0.8737
....
Quelle est la raison? Qu'est-ce que je rate?
seeds
argument detrainControl