এলোমেলো বনের জন্য ওওবি এবং কনফিউশন ম্যাট্রিক্সকে কীভাবে ব্যাখ্যা করবেন?


35

আমি এলোমেলো বন মডেল চালানোর জন্য কারও কাছ থেকে একটি আর স্ক্রিপ্ট পেয়েছি। আমি কিছু কর্মচারী ডেটা দিয়ে এটি সংশোধন করে চালিত করেছি। আমরা স্বেচ্ছাসেবী বিচ্ছিন্নতার পূর্বাভাস দেওয়ার চেষ্টা করছি।

এখানে কিছু অতিরিক্ত তথ্য দেওয়া হল: এটি একটি শ্রেণিবদ্ধকরণ মডেল ছিল 0 = কর্মচারী থাকা, 1 = কর্মচারী সমাপ্ত, আমরা বর্তমানে কেবলমাত্র এক ডজন প্রেডিকটার ভেরিয়েবলের দিকে তাকিয়ে আছি, শব্দটি 'র ভারসাম্যহীন' যে শব্দটির রেকর্ডগুলি প্রায় 7 টি তৈরি করে মোট রেকর্ড সেট এর%।

আমি বিভিন্ন মাতৃ এবং ntree নির্বাচন সঙ্গে মডেল চালানো কিন্তু নীচে স্থির। ওওবি 6.8% যা আমি ভাল বলে মনে করি তবে বিভ্রান্তির ম্যাট্রিক্স শর্তগুলি পূর্বাভাস দেওয়ার জন্য একটি ভিন্ন গল্প বলে মনে হচ্ছে যেহেতু ত্রুটি হারটি 92.79% এ বেশিরভাগই আমি ধরে নিচ্ছি যে আমি এই মডেলটির উপর নির্ভর করতে পারি না এবং ব্যবহার করতে পারি না কারণ শর্তাবলী পূর্বাভাস জন্য উচ্চ ত্রুটি হার? বা আরএফ ব্যবহার করতে এবং শর্তাবলী পূর্বাভাস দেওয়ার জন্য একটি ছোট ত্রুটি হার পেতেও আমি কিছু করতে পারি?

 FOREST_model <- randomForest(theFormula, data=trainset, mtry=3, ntree=500, importance=TRUE, do.trace=100)
ntree      OOB      1      2
  100:   6.97%  0.47% 92.79%
  200:   6.87%  0.36% 92.79%
  300:   6.82%  0.33% 92.55%
  400:   6.80%  0.29% 92.79%
  500:   6.80%  0.29% 92.79%
> print(FOREST_model)

Call:
 randomForest(formula = theFormula, data = trainset, mtry = 3,      ntree = 500, importance = TRUE, do.trace = 100) 
               Type of random forest: classification
                     Number of trees: 500
No. of variables tried at each split: 3

        OOB estimate of  error rate: 6.8%
Confusion matrix:
     0  1 class.error
0 5476 16 0.002913328
1  386 30 0.927884615
> nrow(trainset)
[1] 5908

উত্তর:


20

বিভ্রান্তির ম্যাট্রিক্স ভোটের কাটঅফ দ্বারা নির্ধারিত একটি নির্দিষ্ট পয়েন্টে গণনা করা হয়। আপনার প্রয়োজনের উপর নির্ভর করে, যেমন আরও ভাল নির্ভুলতা (মিথ্যা ধনাত্মক হ্রাস) বা আরও ভাল সংবেদনশীলতা (মিথ্যা নেতিবাচক হ্রাস) আপনি একটি আলাদা কাট অফ পছন্দ করতে পারেন।

এই উদ্দেশ্যে আমি প্রস্তাব দিচ্ছি (i) একটি আরওসি বক্ররেখা , (ii) একটি প্রত্যাহার-নির্ভুলতা এবং (iii) একটি ক্যালিব্রেটিং বক্ররেখা কাটঅফ নির্বাচন করতে যাতে আপনার উদ্দেশ্যগুলি সবচেয়ে উপযুক্ত। এই সব খুব সহজেই থেকে 2 নিম্নলিখিত ফাংশন ব্যবহার করে অঙ্কিত করা যেতে পারে ROCR আর গ্রন্থাগার (এছাড়াও উপলব্ধ Cran ):

pred.obj <- prediction(predictions, labels,...)
performance(pred.obj, measure, ...)

উদাহরণ স্বরূপ:

rf <- randomForest (x,y,...);
OOB.votes <- predict (rf,x,type="prob");
OOB.pred <- OOB.votes[,2];

pred.obj <- prediction (OOB.pred,y);

RP.perf <- performance(pred.obj, "rec","prec");
plot (RP.perf);

ROC.perf <- performance(pred.obj, "fpr","tpr");
plot (ROC.perf);

plot  (RP.perf@alpha.values[[1]],RP.perf@x.values[[1]]);
lines (RP.perf@alpha.values[[1]],RP.perf@y.values[[1]]);
lines (ROC.perf@alpha.values[[1]],ROC.perf@x.values[[1]]);

আমি আপনার উত্তরে আগ্রহী, আপনার ভাগ করা কোডটি দিয়ে আমি প্লট করেছি। আপনি দয়া করে আপনার প্রস্তাবিত প্লট সম্পর্কে কিছু বিশদ জানতে আমাকে কিছু সংস্থান দেবেন? বা কীভাবে এটি ব্যাখ্যা করা যায় সে সম্পর্কে কয়েকটি বাক্য লিখবেন। অগ্রিম ধন্যবাদ.
এমকেএস

আমি আপনাকে পরামর্শ দিচ্ছি যে আপনি আরওসি বক্ররেখার জন্য এন্ট্রি দিয়ে শুরু করবেন যা উপরে উল্লিখিত এবং সেখানে উল্লিখিত অন্যান্য এন্ট্রিগুলির সাথে লিঙ্ক রয়েছে।
ইটামার

উত্তরটি অত্যন্ত স্কিউ ডেটা সেটে সিদ্ধান্ত গাছের সীমাবদ্ধতার সরাসরি সমাধান করে না।
স্মার্টচিস

19

আপনার সেটটি তীব্র ভারসাম্যহীন - আরএফ সাধারণত এই দৃশ্যে ব্যর্থ হয় (অর্থাত্ কেবলমাত্র বৃহত্তর শ্রেণীর পূর্বাভাস দেয়)।

"0" শ্রেণীর নমুনা বাছাই করে আপনার সেটকে ভারসাম্যপূর্ণ করার চেষ্টা করা উচিত কেবল "1" শ্রেণির মতো আকারের জন্য বা classwtপরামিতি দিয়ে খেলতে ।


1
classwtপ্যারামিটার থাকা সত্ত্বেও , আর লিংকে পি প্যাকেজের randomForest()কার্যক্রমে এটি এখনও কার্যকর হয়েছে বলে আমি মনে করি না । আপনি কি আগে এটি ব্যবহার করেছেন? আমি এটি বিভিন্ন মান সহ চেষ্টা করেছিলাম কিন্তু ডিফল্ট হিসাবে অভিন্ন ফলাফল পেয়েছি । randomForestclasswt=NULL
ঝুবার্ব

9

আপনার বিভ্রান্তির ম্যাট্রিক্সের উপর ভিত্তি করে, আপনি 5,908 ডেটা পয়েন্ট পেয়েছেন এবং এর বিশাল, বিশাল সংখ্যাগরিষ্ঠ টাইপ 0 ('কর্মচারী থাকা') of শ্রেণিবদ্ধকারী অতএব "অলস" হয়ে ও সংখ্যাগরিষ্ঠ শ্রেণীর বাছাই করে পালিয়ে যেতে পারে যদি না এটি একেবারে নিশ্চিত না হয় যে উদাহরণটি অন্য শ্রেণীর অন্তর্গত। নোট করুন যে আপনার সামগ্রিক ত্রুটির হার ~ 7%, যা ক্লাস 1 উদাহরণের শতাংশের সাথে খুব কাছাকাছি!

আপনার কাছে কয়েকটি বিকল্প রয়েছে:

  • আপনার মোটামুটি ভারসাম্য ক্লাস না হওয়া পর্যন্ত ক্লাস0 উদাহরণগুলি বাতিল করুন। আমি জানি না কীভাবে সর্বোত্তমভাবে প্রতিনিধি সাবসেটটি বেছে নিতে হবে (যদি অন্য কেউ ওজন করতে পারে?) তবে সাহিত্য রয়েছে কিনা তবে আপনি এলোমেলোভাবে উদাহরণ ফেলে দিয়ে শুরু করতে পারেন। আপনি subsetএলোমেলোভাবে র্যান্ডমফোরেস্টে পাস করতে পারেন , যা পরীক্ষার জন্য এই তুচ্ছ করা উচিত।

  • শ্রেণি0 এর অনুপাতযুক্ত সংখ্যার জন্য ক্ষতিপূরণ দেওয়ার জন্য আপনার ক্ষতির ফাংশন / শ্রেণি ওজন সামঞ্জস্য করুন। আপনি মূলত শ্রেণিবদ্ধের জন্য ক্লাস 1 এর চেয়ে ক্লাস 1 উদাহরণটিকে ভুল শ্রেণিবদ্ধ করা আরও ব্যয়বহুল করে তুলতে চান। Class0 = 1 / 0.07 ~ = 14x Class1 শুরু করার চেষ্টা করা বুদ্ধিমান হতে পারে তবে আপনি আপনার ব্যবসায়ের দাবির উপর ভিত্তি করে এটি সামঞ্জস্য করতে চাইতে পারেন (একধরণের ত্রুটি কতটা খারাপ)। আমি মনে করি classwtযে আপনি এখানে প্যারামিটারটি খুঁজছেন।

  • আপনি গাছের প্রশিক্ষণের ডেটাতে উভয় শ্রেণীর উদাহরণ পেয়েছেন তা নিশ্চিত করতে স্তরিত নমুনা ব্যবহার করুন। এটি সম্ভব যে আপনার কয়েকটি গাছ কেবলমাত্র ক্লাস0 ডেটার উপর প্রশিক্ষিত হয়েছিল যা স্পষ্টতই তাদের সাধারণীকরণের কার্য সম্পাদনের জন্য খারাপ আচরণ করবে। strataযুক্তি পরীক্ষা করে দেখুন ।


প্রভাবশালী শ্রেণি থেকে এলোমেলোভাবে নির্বাচন করা যুক্তিসঙ্গত বলে মনে হয়। তাদের সমান হওয়ার দরকার নেই: এমনকি 1: 5 অনুপাতেরও উন্নতি হওয়া উচিত।
ইটামার

@ ইটমার, অবশ্যই আমি প্রথমে চেষ্টা করব। যাইহোক, দেখে মনে হচ্ছে আপনার অবশ্যই যে উদাহরণগুলি ধরে রাখা হয়েছে সেগুলি বৃহত্তর ডেটা সেটের প্রতিনিধি are
ম্যাট ক্রাউস

1
একটি বিকল্প হতে পারে বৃহত্তর সেটটিতে পিসিএ (নীতি উপাদান উপাদান বিশ্লেষণ) চালানো, প্রথম নীতি উপাদান অনুসারে পয়েন্টগুলি ক্লাস্টার করা এবং প্রতিটি ক্লাস্টার থেকে একটি নমুনা বেছে নেওয়া।
ইটামার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.