class_weight
বিজ্ঞান-শিখার লজিস্টিক রিগ্রেশনটির প্যারামিটারটি কীভাবে চালিত হয় তা বুঝতে আমার অনেক সমস্যা হচ্ছে ।
পরিস্থিতি
আমি খুব ভারসাম্যহীন ডেটা সেটে বাইনারি শ্রেণিবদ্ধকরণ করতে লজিস্টিক রিগ্রেশন ব্যবহার করতে চাই। ক্লাসগুলিকে 0 (নেতিবাচক) এবং 1 (ধনাত্মক) হিসাবে লেবেলযুক্ত এবং পর্যবেক্ষণ করা তথ্যগুলি প্রায় 19: 1 অনুপাতের সাথে সর্বাধিক নমুনার নেতিবাচক ফলাফল রয়েছে।
প্রথম প্রয়াস: ম্যানুয়ালি প্রশিক্ষণ ডেটা প্রস্তুত করা
প্রশিক্ষণ এবং পরীক্ষার (প্রায় 80/20) জন্য আমার বিতর্কিত সেটগুলিকে বিচ্ছিন্ন করে দিয়েছি। তারপরে আমি এলোমেলোভাবে 19: 1 এর চেয়ে বিভিন্ন অনুপাতে প্রশিক্ষণ ডেটা হাতে পাওয়ার জন্য প্রশিক্ষণ ডেটা নমুনা দিয়েছিলাম; 2: 1 -> 16: 1 থেকে।
তারপরে আমি এই বিভিন্ন প্রশিক্ষণের ডেটা সাবসেটগুলিতে লজিস্টিক রিগ্রেশন প্রশিক্ষণ দিয়েছি এবং বিভিন্ন প্রশিক্ষণের অনুপাতে একটি ফাংশন হিসাবে পুনরুদ্ধার (= টিপি / (টিপি + এফএন)) প্লট করেছি। অবশ্যই, পুনরুদ্ধারটি অসম্পূর্ণ টেস্টের নমুনাগুলিতে গণনা করা হয়েছিল যার পর্যবেক্ষণ অনুপাত 19: 1 ছিল। দ্রষ্টব্য, যদিও আমি বিভিন্ন মডেলকে বিভিন্ন প্রশিক্ষণের ডেটাতে প্রশিক্ষণ দিয়েছি, আমি তাদের সকলের জন্য একই (বিচ্ছিন্ন) পরীক্ষার ডেটাতে পুনরুদ্ধার গণনা করেছি।
ফলাফল প্রত্যাশার মতো ছিল: 2: 1 প্রশিক্ষণের অনুপাত অনুসারে পুনরুদ্ধারটি প্রায় 60% ছিল এবং এটি 16: 1 এ পৌঁছানোর সাথে সাথে দ্রুত পড়ে গিয়েছিল। বেশ কয়েকটি অনুপাত 2: 1 -> 6: 1 ছিল যেখানে রিকালটি শালীনভাবে 5% এর উপরে ছিল।
দ্বিতীয় প্রচেষ্টা: গ্রিড অনুসন্ধান
এরপরে, আমি বিভিন্ন নিয়মিতকরণের পরামিতিগুলি পরীক্ষা করতে চেয়েছিলাম এবং তাই আমি গ্রিডসন্ধান সিভি ব্যবহার করেছি এবং C
প্যারামিটারের পাশাপাশি প্যারামিটারের বেশ কয়েকটি মানের একটি গ্রিড তৈরি করেছি class_weight
। Nণাত্মক: আমার অনুক্রমের মি অনুপাতের অনুবাদ করতে class_weight
আমি অভিধানের ভাষায় ধনাত্মক প্রশিক্ষণের নমুনাগুলি ভেবেছিলাম যে আমি বেশ কয়েকটি অভিধান নিম্নলিখিত হিসাবে নির্দিষ্ট করেছি:
{ 0:0.67, 1:0.33 } #expected 2:1
{ 0:0.75, 1:0.25 } #expected 3:1
{ 0:0.8, 1:0.2 } #expected 4:1
এবং আমি এছাড়াও অন্তর্ভুক্ত করা None
এবং auto
।
এবার ফলাফলগুলি পুরোপুরি নষ্ট হয়ে গেল। আমার সমস্ত স্মৃতিগুলি class_weight
বাদে প্রতিটি মূল্যের জন্য ক্ষুদ্র (<0.05) প্রকাশিত হয়েছিল auto
। সুতরাং আমি কেবল ধরে নিতে পারি যে অভিধানটি কীভাবে সেট করবেন সে সম্পর্কে আমার বোঝাটি class_weight
ভুল। মজার বিষয় হল, class_weight
গ্রিড অনুসন্ধানে 'অটো' এর মান সমস্ত মানের জন্য প্রায় 59% ছিল C
এবং আমি অনুমান করেছি যে এটি 1: 1 এর ভারসাম্য?
আমার প্রশ্নগুলো
class_weight
আপনি আসলে যা দেন তা থেকে প্রশিক্ষণের ডেটাতে বিভিন্ন ভারসাম্য অর্জন করতে আপনি কীভাবে সঠিকভাবে ব্যবহার করবেন? বিশেষত,class_weight
n: m অনুপাতের ইতিবাচক প্রশিক্ষণের নমুনাগুলি ব্যবহার করতে আমি কোন অভিধানটি পাস করতে পারি ?আপনি যদি
class_weight
গ্রিডসন্ধান সিভিতে বিভিন্ন অভিধানগুলি পাস করেন , ক্রস-বৈধকরণের সময়কালে এটি অভিধান অনুসারে প্রশিক্ষণ ভাড়ার ডেটাগুলিকে ভারসাম্য বজায় রাখে তবে পরীক্ষার ভাগে আমার স্কোরিং ফাংশনটি গণনার জন্য সত্য প্রদত্ত নমুনা অনুপাত ব্যবহার করবে? এটি গুরুত্বপূর্ণ কারণ যে কোনও মেট্রিকটি কেবলমাত্র তখনই কার্যকর যখন এটি পর্যবেক্ষণ অনুপাতে থাকা ডেটা থেকে আসে।অনুপাত পর্যন্ত
auto
মূল্য কি করতে পারেclass_weight
? আমি ডকুমেন্টেশনটি পড়েছি এবং আমি ধরে নিয়েছি "তাদের ফ্রিকোয়েন্সিটির সাথে বিপরীত সমানুপাতিক উপাত্তগুলিতে ভারসাম্য বোধ করি" এর অর্থ এটি এটিকে 1: 1 করে makes এটা কি সঠিক? তা না হলে কেউ কি স্পষ্ট করে বলতে পারেন?