র্যান্ডম ফরেস্ট - কীভাবে ওভারফিটিং পরিচালনা করবেন


41

আমার একটি কম্পিউটার বিজ্ঞানের পটভূমি রয়েছে তবে ইন্টারনেটে সমস্যা সমাধানের মাধ্যমে নিজেকে ডেটা বিজ্ঞান শেখানোর চেষ্টা করছি।

আমি গত কয়েক সপ্তাহ ধরে প্রায় এই সমস্যাটি নিয়ে কাজ করছি (প্রায় 900 টি সারি এবং 10 টি বৈশিষ্ট্য)। আমি প্রথমে লজিস্টিক রিগ্রেশন ব্যবহার করছিলাম তবে এখন আমি এলোমেলো বনগুলিতে স্যুইচ করেছি। আমি যখন আমার প্রশিক্ষণ ডেটাতে আমার এলোমেলো বন মডেল চালাই তখন আমি নিচের (> 99%) জন্য সত্যই উচ্চ মানের পাই। যাইহোক আমি যখন পরীক্ষার ডেটাতে একই মডেলটি চালিত করি তখন ফলাফলগুলি খুব ভাল হয় না (প্রায় 77 77% নির্ভুলতা)। এটি আমাকে বিশ্বাস করতে পরিচালিত করে যে আমি প্রশিক্ষণের ডেটা ফিট করছি।

এলোমেলো বনাঞ্চলে ওভার ফিটিং প্রতিরোধ সম্পর্কে সেরা অনুশীলনগুলি কী কী?

আমি আর আরস্টুডিওকে আমার বিকাশের পরিবেশ হিসাবে ব্যবহার করছি। আমি randomForestপ্যাকেজটি ব্যবহার করছি এবং সমস্ত পরামিতিগুলির জন্য ডিফল্ট গ্রহণ করেছি


4
ব্রেইম্যান দাবি করেছেন যে আরএফ খুব বেশি মানায় না। stat.berkeley.edu/~breiman/RandomForests/cc_home.htm এই ধারণাটি যে তিনি সঠিক, সম্ভবত আপনার প্রশিক্ষণ এবং পরীক্ষার সেটগুলির মধ্যে কিছুটা অসঙ্গতি রয়েছে?
মনিকা

আরএফ এড়াতে overfit টেস্ট ডেটার পারবে না যদি আপনি টিউনিং প্যারামিটার নিখুত
ঢেকুর ভারসাম্যের

আমি একটি সম্পূর্ণ পরিলক্ষিত টিউনিং প্যারামিটারের নমুনা খুঁজে পাই। stackoverflow.com/questions/34997134/...
সোরেন Havelund Welling,

উত্তর:


30

এলোমেলো বনাঞ্চলে অত্যধিক ফিটনেস এড়াতে, আপনাকে প্রধান জিনিসটি করতে হবে এমন একটি টিউনিং প্যারামিটারকে অনুকূলিত করা যা বুটস্ট্র্যাপড ডেটা থেকে প্রতিটি গাছকে বাড়ানোর জন্য এলোমেলোভাবে বেছে নেওয়া এমন বৈশিষ্ট্যগুলির সংখ্যা পরিচালনা করে। সাধারণত, আপনি মাধ্যমে এই কাজ ধা ক্রস বৈধতা, যেখানে { 5 , 10 } , এবং সুরকরণ পরামিতি চয়ন ছোট নমুনা ভবিষ্যদ্বাণী ত্রুটি পরীক্ষা। তদতিরিক্ত, একটি বৃহত্তর বনভূমি বৃদ্ধি ভবিষ্যদ্বাণীমূলক নির্ভুলতার উন্নতি করবে, যদিও আপনি কয়েক শতাধিক গাছ উঠলে সাধারণত ফিরতে হয়।kk{5,10}


1
ধন্যবাদ. এমন কিছু টিউটোরিয়াল রয়েছে যা দেখায় কীভাবে এই পরামিতিগুলি অনুকূল করা যায়?
অভি

আপনার স্ট্যানফোর্ড অনলাইন কোর্সের জন্য নিবন্ধন করতে হবে, এটি বেশ সহজ, তবে এখানে এটি করার জন্য একটি ভিডিও টিউটোরিয়াল দেওয়া হয়েছে: class.stanford.edu/courses/HumanitiesScience/StatLearning/…
ব্র্যাশ ভারসাম্যহীন

যদি আমি এটি সঠিকভাবে বুঝতে পারি তবে আমরা মডেলটি প্রতিটি পদক্ষেপে চেষ্টা করবে এমন বৈশিষ্ট্যগুলির সংখ্যার বিপরীতে এলোমেলো বন মডেলটিতে যে বৈশিষ্ট্যগুলি রয়েছে সেগুলি নির্ধারণ করতে আমরা ক্রস বৈধতা ব্যবহার করি। সঠিক?
অভি

4
আমি এই উত্তরের বিরুদ্ধে তর্ক করব: আরএফগুলির দুটি আকর্ষণীয় বৈশিষ্ট্য হ'ল এগুলিকে সরিয়ে দেওয়া কঠিন এবং ডিফল্ট প্যারামিটারগুলি সাধারণত মোটামুটি ভাল। এই উত্তরটি বোঝা যাচ্ছে যে আরএফ ডিফল্টগুলির সংবেদনশীল, যা খুব কমই
চার্লস

7
আমন্ত্রণমূলকভাবে, আমি এলোমেলো বন, গাইডেড এলোমেলো বন, নিয়মিত র্যান্ডম অরণ্যকে নিয়মিত করা, বা নিয়মিত র্যান্ডম বনাঞ্চলকে গাইড করতে মোটেও অসুবিধা পাইনি। ক্রস বৈধকরণে এগুলি নিয়মিত খুব ভাল সম্পাদন করে তবে ওভার ফিটিংয়ের কারণে নতুন ডেটা ব্যবহার করার সময় খুব খারাপ। আমি বিশ্বাস করি এর মডেলিং ঘটনার ধরণের সাথে সম্পর্ক রয়েছে। যান্ত্রিক প্রক্রিয়া মডেলিং করার সময় এটি খুব বেশি সমস্যা হয় না, তবে আচরণগত মডেলের মতো কিছু নিয়ে আমি একটি সুনির্দিষ্ট রেগ্রেশন সহ আরও অনেক স্থিতিশীল ফলাফল পাই।
হ্যাক-আর

33

আপনার প্রশিক্ষণ ডেটাতে আপনি কীভাবে 99% এউসি পাচ্ছেন? পার্থক্য আছে যে সচেতন থাকুন

predict(model)

এবং

predict(model, newdata=train)

প্রশিক্ষণ ডেটাসেটের পূর্বাভাস পাওয়ার সময়। প্রথম বিকল্পটি এলোমেলো বন থেকে ব্যাগের বাইরে থাকা পূর্বাভাস পায়। প্রশিক্ষণের ডেটাতে বাস্তবের সাথে পূর্বাভাসিত মানগুলির তুলনা করার সময় এটি আপনি সাধারণত চান।

দ্বিতীয়টি আপনার প্রশিক্ষণ ডেটার সাথে এমন আচরণ করে যেন এটি একটি নতুন ডেটাসেট, এবং প্রতিটি গাছের নিচে পর্যবেক্ষণগুলি চালায়। এর ফলে ভবিষ্যদ্বাণীগুলি এবং বাস্তবের মধ্যে কৃত্রিমভাবে ঘনিষ্ঠ সম্পর্ক তৈরি হবে, যেহেতু আরএফ অ্যালগরিদম সাধারণত পৃথক গাছগুলিকে ছাঁটাই করে না, বরং ওভারফিটিং নিয়ন্ত্রণের জন্য গাছের নকশার উপর নির্ভর করে। সুতরাং আপনি যদি প্রশিক্ষণের ডেটা সম্পর্কে ভবিষ্যদ্বাণী পেতে চান তবে এটি করবেন না।


3
আমি পূর্বাভাস (মডেল, ডেটা = ট্রেন) ব্যবহার করছিলাম। আমি এখন পূর্বাভাস (মডেল) এ চলে এসেছি এবং আমার নিচ কমে গেছে 87% এ। এটা কি ভাল জিনিস না খারাপ জিনিস?
অভি

2
ধন্যবাদ! আমি দেখতে পেয়েছি যে এটি আমার জন্যও সমস্যা ছিল। আরএফ মডেলগুলির জন্য 'প্রশিক্ষণ ত্রুটি' হিসাবে কী কী পদক্ষেপটি ব্যবহার করতে হবে সে সম্পর্কে আমি একটি ফলো-আপ প্রশ্ন পোস্ট করেছি: stats.stackexchange.com/questions/162353/…
বার্ক ইউ।

দুর্দান্ত, আপনাকে ধন্যবাদ !! আমিও এই ভুলটি করছিলাম! @ অভির কাছে: এটি একটি ভাল জিনিস, কারণ পূর্ববর্তী এউসি অযৌক্তিকভাবে উচ্চ ছিল। এই এক আরও বাস্তববাদী। ক্রস-বৈধকরণের চেষ্টা করুন এবং এটি থেকে এটিসি পরিমাপ করুন এবং আপনি সম্ভবত অনুরূপ মান দেখতে পাবেন।
কৌতুহল

7

সিদ্ধান্ত গাছের জন্য ওভারফিটিং হ্যান্ডেল করার দুটি উপায় রয়েছে: (ক) গাছগুলি সম্পূর্ণরূপে বৃদ্ধি পাবে না (খ) ছাঁটাই

একই গাছের বনাঞ্চলে প্রযোজ্য - সেগুলি খুব বেশি বৃদ্ধি এবং ছাঁটাই করবেন না।

আমি randomForestখুব বেশি ব্যবহার করি না , তবে আমার জ্ঞান অনুসারে, এমন অনেকগুলি পরামিতি রয়েছে যা আপনি আপনার বন সুরের জন্য ব্যবহার করতে পারেন:

  • nodesize - টার্মিনাল নোডের সর্বনিম্ন আকার
  • maxnodes - টার্মিনাল নোডের সর্বাধিক সংখ্যা
  • mtry - প্রতিটি গাছ তৈরিতে ব্যবহৃত ভেরিয়েবলের সংখ্যা (ধন্যবাদ @ ব্যবহারকারী 7777)

1
এবং mtry, প্রতিটি গাছ তৈরির জন্য অ্যালগরিদমটি ভেরিয়েবলের সংখ্যা আঁকায়, ডিফল্টরূপে মোট বৈশিষ্ট্যের সংখ্যার বর্গমূল।
মনিকা

আমি ম্যাক্সনোড ছেড়ে এর পরিবর্তে কম স্যাম্পসাইজ করতাম। উভয় decresing maxnodes এবং কম গভীরতা এবং একটি আরো শক্তসমর্থ বন সঙ্গে sampsize দিতে গাছ, তবে নিম্ন গাছ পারস্পরিক সম্পর্ক আরো sampsize, ও বন ক্রস যাচাই ভবিষ্যদ্বাণী ত্রুটি কম বিন্দুতে মিলিত সম্ভবত থাকবে দেখুন stackoverflow.com/questions/34997134/...
সোরেন Havelund ওয়েলিং

2

আপনি ক্রস বৈধকরণ পদ্ধতিগুলি ব্যবহার করতে চাইতে পারেন, যেমন কে ফোল্ড ক্রস বৈধতা।


আপনার বৈশিষ্ট্যগুলি সাধারণকরণ / স্কেল করা দরকার?
চার্লস

4
@ আমার ক্ষমা প্রার্থনা করুন। এলোমেলো বন ব্যবহার করে বৈশিষ্ট্যগুলি স্কেল করা সত্যিই প্রয়োজন হয় না। দেখুন: স্ট্যাকওভারফ্লো.com
প্রশ্নগুলি

আমার মনে হয় ক্রস-বৈধকরণ কার্যকর হবে। এটি বিভক্ত নমুনা বৈধতা সহ তুলনামূলকভাবে ছোট একটি ডেটাসেট যা সম্ভাব্য ত্রুটির অস্থির প্রাক্কলন উত্পাদন করে (যদিও স্বীকার করে আমি বুঝতে পারি যে এটি এখানে সমস্যা নয়)
চার্লস

1

আপনি গ্রিডসার্ক ব্যবহার করে আপনার পরামিতিগুলি টিউন করতে পারেন

from sklearn.ensemble import RandomForestClassifier

from sklearn.grid_search import GridSearchCV

random_classifier = RandomForestClassifier()

parameters = { 'max_features':np.arange(5,10),'n_estimators':[500],'min_samples_leaf': [10,50,100,200,500]}

random_grid = GridSearchCV(random_classifier, parameters, cv = 5)

একটি চেষ্টা করা সম্পাদক পরামর্শ দেয় যে মডিউলটি GridSearchCVরয়েছে তাকে বলা হয় model_selection, এবং এভাবে কোডের দ্বিতীয় লাইন হওয়া উচিত from sklearn.model_selection import GridSearchCV
গুং - মনিকা পুনরায়

0

[5, 15] এর ব্যাপ্তিতে সর্বোচ্চ_পথের প্যারামিটারটি টিউন করার চেষ্টা করুন তবে এর চেয়ে বেশি নয় কারণ আপনি যদি গভীরতা নেন তবে ওভারফিট করার উচ্চ সম্ভাবনা থাকে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.