আমি কিছুটা বিভ্রান্ত: কীভাবে ক্যারেটের মাধ্যমে প্রশিক্ষিত মডেলের ফলাফলগুলি মূল প্যাকেজের মডেল থেকে আলাদা হতে পারে? আমি পড়েছি ক্যারেট প্যাকেজ সহ র্যান্ডমফোরেস্টের ফাইনালমোডেল ব্যবহারের পূর্বাভাসের পূর্বে প্রিপ্রোসেসিং প্রয়োজন কিনা? তবে আমি এখানে কোনও প্রাকপ্রসেসিং ব্যবহার করি না।
আমি ক্রেট প্যাকেজ ব্যবহার করে এবং বিভিন্ন মাতুর মানগুলির জন্য টিউন করে বিভিন্ন র্যান্ডম অরণ্যকে প্রশিক্ষণ দিয়েছি।
> 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
আমি ট্রেনিং_ডাটাতে মাত্রি = 15 সেরা প্যারামিটার হিসাবে পেয়েছি:
> 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-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
....
এখন আমি বেসিক র্যান্ডমফোরস্ট প্যাকেজটি ব্যবহার করে একই পরামিতি এবং একই প্রশিক্ষণ_ডাটা সহ একটি র্যান্ডম রোরেস্ট প্রশিক্ষণ দিয়েছি:
randomForestManual <- randomForest(case_success ~ ., data=train_data, mtry = 15, ntree=500,keep.forest=TRUE)
curClassifier = randomForestManual
আবার আমি উপরের মতো খুব একই টেস্ট_ডাটার জন্য পূর্বাভাস তৈরি করেছি এবং উপরের মত একই কোড দিয়ে বিভ্রান্তির ম্যাট্রিক্সকে মূল্যায়ন করেছি। তবে এখন আমি বিভিন্ন ব্যবস্থা পেয়েছি:
Confusion Matrix and Statistics
Reference
Prediction No Yes
No 2702 897
Yes 430 6480
Accuracy : 0.8737
....
কারণ কি? আমি কী মিস করছি?
seeds
trainControl