약간 혼란 스러워요 : 캐럿을 통한 훈련 된 모델의 결과는 원래 패키지의 모델과 어떻게 다를 수 있습니까? 캐럿 패키지와 함께 RandomForest의 FinalModel을 사용하여 예측 전에 사전 처리가 필요한지 여부를 읽습니다 .그러나 나는 여기서 전처리를 사용하지 않습니다.
캐럿 패키지를 사용하고 다른 mtry 값을 조정하여 다른 임의의 포리스트를 학습했습니다.
> 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
mtry = 15가 training_data에서 가장 좋은 매개 변수라는 것을 알았습니다.
> 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.
ROC 곡선과 혼동 행렬로 모델을 평가했습니다.
##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")
결과 혼동 매트릭스 및 정확도 :
Confusion Matrix and Statistics
Reference
Prediction No Yes
No 2757 693
Yes 375 6684
Accuracy : 0.8984
....
이제 기본 randomForest 패키지를 사용하여 동일한 매개 변수와 동일한 training_data로 Random Rorest를 훈련했습니다.
randomForestManual <- randomForest(case_success ~ ., data=train_data, mtry = 15, ntree=500,keep.forest=TRUE)
curClassifier = randomForestManual
다시 위에서와 동일한 test_data에 대한 예측을 작성하고 위와 동일한 코드로 혼동 행렬을 평가했습니다. 그러나 이제는 다른 조치를 취했습니다.
Confusion Matrix and Statistics
Reference
Prediction No Yes
No 2702 897
Yes 430 6480
Accuracy : 0.8737
....
이유가 무엇입니까? 내가 무엇을 놓치고 있습니까?
seeds
trainControl