ক্যারেট প্যাকেজ সহ র‌্যান্ডমফোরেস্টের ফাইনালমোডেল ব্যবহারের পূর্বাভাসের পূর্বে প্রিপ্রোসেসিংয়ের দরকার আছে?


12

আমি 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"))

এর পরে, আমি একটি টেস্টসেটে নতুন র্যান্ডমফোরস্টটি পরীক্ষা করি (নতুন ডেটা)

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 

আমি এখন $ ফাইনাল মডেলটি পরীক্ষা করতে চাই এবং আমার মনে হয় এটি আমাকে একই ফলাফল দেবে, তবে কোনওভাবে আমি পেয়েছি

> 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 

আমি কী মিস করছি?

@ টপ্পো সম্পাদনা করুন:

আমি প্রি-প্রসেসড বিকল্প ছাড়াই আরও একটি র্যান্ডমফরেস্ট শিখেছি এবং অন্য ফলাফল পেয়েছি:

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     

প্রথম উদাহরণে, আপনি যে ট্রেনের বস্তুটি বলেছিলেন তার সাথে পূর্বাভাস দিয়েছিলেন RFFit, দ্বিতীয় বার আপনি যখন মডেল অবজেক্টটি ব্যবহার করে ভবিষ্যদ্বাণী করেছিলেন, আমার ধারণা। সুতরাং পার্থক্যটি ট্রেনের অবজেক্টের সাথে অন্যান্য জিনিস পাস করার ক্ষেত্রেও হতে পারে যা ট্রেনের অবজেক্টটি ব্যবহার না করেই আপনার নতুন পরীক্ষার ডেটা একরকম আলাদাভাবে প্রক্রিয়া করে।
ডক্টরেট

4
২ য় trainমডেলের জন্য আপনি কিছুটা আলাদা ফলাফল পাবেন যদি না আপনি চালানোর আগে এলোমেলো সংখ্যা বীজ সেট না করে (দেখুন ?set.seed)। যথার্থ মানগুলি 0.8135 এবং 0.8111, যা বেশ কাছাকাছি এবং কেবল পুনরায় মডেলিংয়ের মডেল এবং মডেল গণনার কারণে are
টপেপো

উত্তর:


17

পার্থক্যটি হ'ল প্রাক প্রক্রিয়াজাতকরণ। predict.trainস্বয়ংক্রিয়ভাবে নতুন ডেটা কেন্দ্র করে এবং স্কেল করে (যেহেতু আপনি এটি চেয়েছিলেন) যখন predict.randomForestযা দেওয়া হয় তা গ্রহণ করে। যেহেতু গাছের বিভাজনগুলি প্রক্রিয়াজাত মানগুলির উপর ভিত্তি করে, ভবিষ্যদ্বাণীগুলি বন্ধ হয়ে যাবে।

ম্যাক্স


তবে RFFitঅবজেক্টটি প্রিপ্রসেসড trainপদ্ধতিতে তৈরি করা হয়েছে ... সুতরাং এটি একটি কেন্দ্রিক এবং মাপানো বস্তুটি ফিরিয়ে আনতে হবে (এটি উচিত নয়?)। যদি তাই হয় -> $finalModelএগুলিও ছোট করে কেন্দ্রীভূত করা উচিত
ফ্র্যাঙ্ক

2
হ্যাঁ তবে, উপরের কোড অনুসারে আপনি কেন্দ্রিককরণ এবং স্কেলিং প্রয়োগ করেন নি testSetpredict.trainযে predict.randomForestনা কিন্তু না।
টপেপো

সুতরাং একই টেস্টসেট ব্যবহার predict(RFFit$finalModel, testSet)এবং ব্যবহারের মধ্যে কোনও পার্থক্য নেই predict(RFFit, testSet)?
ফ্র্যাঙ্ক

6
predict(RFFit$finalModel, testSet)এবং predict(RFFit, testSet)বিভিন্ন যদি আপনি ব্যবহার হতে হবে preProcবিকল্পটি train। আপনি যদি না করেন তবে তারা একই ডেটাসেটের প্রশিক্ষণ দিচ্ছে। অন্য কথায়, আপনি যে কোনও প্রাক-প্রসেসিংয়ের জন্য জিজ্ঞাসা করছেন তা প্রশিক্ষণের আগে চালানোর আগেই করা হয়ে যায় randomForest। এটি আপনার পূর্বাভাস (ব্যবহার করে predict(RFFit, testSet)) যে কোনও ডেটাতে একই প্রাক প্রসেসিং প্রয়োগ করে । আপনি যদি finalModelঅবজেক্টটি ব্যবহার করেন তবে আপনি predict.randomForestপরিবর্তে ব্যবহার করছেন predict.trainএবং প্রাক-প্রসেসিংয়ের কোনওটিই পূর্বাভাসের আগে করা হয় না।
টোপপো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.