ভারসাম্যহীন ডেটাসেটের জন্য xgboost এ স্কেল_পোস_ওয়েটের সঠিক ব্যবহার কী?


26

আমার খুব ভারসাম্যহীন ডেটাসেট রয়েছে। আমি টিউনিংয়ের পরামর্শ অনুসরণ এবং ব্যবহার করার চেষ্টা করছি scale_pos_weightতবে কীভাবে এটি টিউন করব তা নিশ্চিত নই।

আমি দেখতে পাচ্ছি RegLossObj.GetGradient:

if (info.labels[i] == 1.0f) w *= param_.scale_pos_weight

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

  1. কোনও নোডের প্রসঙ্গে, প্রার্থী বিভক্ত হওয়ার ক্ষয় হ্রাস মূল্যায়ন করতে
  2. কোনও পাতার নোডের প্রসঙ্গে, সেই নোডকে দেওয়া ওজনকে অনুকূল করতে

সুতরাং আগে কীভাবে ভাল হবে তা জানার উপায় নেই scale_pos_weight- এটি কোনও নোডের জন্য খুব আলাদা একটি সংখ্যা যা ইতিবাচক এবং নেতিবাচক উদাহরণগুলির মধ্যে 1: 100 অনুপাত এবং 1: 2 অনুপাত সহ একটি নোডের সাথে শেষ হয়।

কোন ইঙ্গিত?


সম্ভবত, আপনি সিভিতে প্যারামিটারটি 5 গুন 5 পুনরাবৃত্তিগুলির সাথে টিউন করতে পারেন। তবে, এটি করতে আপনার কোড লিখতে হতে পারে।
ব্যবহারকারী 2149631

উত্তর:


22

সাধারণত, স্কেল_পোস_ওয়েটটি ধনাত্মক শ্রেণীর সাথে নেতিবাচক শ্রেণির সংখ্যার অনুপাত। ধরুন, ডেটাসেটে নেতিবাচক শ্রেণীর 90 টি পর্যবেক্ষণ এবং ধনাত্মক শ্রেণীর 10 টি পর্যবেক্ষণ রয়েছে, তবে স্কেল_পোস_ওয়েটের আদর্শ মান 9 হওয়া উচিত। আপনি নীচের লিঙ্কটি পরীক্ষা করতে পারেন। http://xgboost.readthedocs.io/en/latest/parameter.html


1
এটি কীভাবে কোনও মাল্টিক্লাস ডেটাসেটের জন্য আবেদন করবে? কিভাবে 28 ক্লাস? এটি আমার কাছে পরিষ্কার নয়
গ্যাব্রিয়েল জিগেলার

1
@ গ্যাব্রিয়েল আমি বিশ্বাস করি তবে ক্লাস ওজনে যাওয়াই ভাল হবে। একটি বনাম বিশ্রামের পদ্ধতির ব্যবহার করে আপনি স্কেল_পোস_ওয়েট ব্যবহার করতে পারেন। উদাহরণস্বরূপ, 28 টি ক্লাসের জন্য ডমি তৈরি করুন। তারপরে আপনি প্রত্যেককে বাইনারি শ্রেণিবদ্ধকরণ সমস্যা হিসাবে ব্যবহার করতে পারেন। এইভাবে আপনি 28 টি বিভিন্ন মডেলের সাথে লেনদেন করবেন।
হর্ষিত মেহতা

আমি দেখতে পাচ্ছি, কিন্তু যখন আমি ওয়ানভ্রেস্ট ব্যবহার করি তখন ক্লাসিফায়ারও আমাকে মাল্টিলেবেল আউটপুট দেয় না, তাই না? 28 এর মধ্যে কেবল এক
শ্রেণিই নয়

কিভাবে? উদাহরণস্বরূপ: ক্লাসগুলি হ'ল এ, বি, সি। সুতরাং আপনার শ্রেণিবদ্ধকরণের জন্য বাইনারি শ্রেণিবদ্ধক থাকতে পারে (এ / নয় এ), অন্য একটি হবে (বি / নয় বি)। ক্লাস সংখ্যা 'এন' জন্য আপনি এটি করতে পারেন। তারপরে প্রতিটি শ্রেণিবদ্ধের সাথে সম্পর্কিত সমস্ত সম্ভাবনার মধ্যে আপনার ক্লাস নির্ধারণের জন্য একটি উপায় খুঁজে বের করতে হবে।
হর্ষিত মেহতা

আমি মাল্টিলেবলের জন্য ওয়ানভ্রেস্ট ব্যবহার করতে অভ্যস্ত, তবে আমি এটি ব্যবহার করে দেখব! ধন্যবাদ!
গ্যাব্রিয়েল জিগেলার

3

সমস্ত ডকুমেন্টেশন বলে যে এটি হওয়া উচিত:

scale_pos_weight = count(negative examples)/count(Positive examples)

অনুশীলনে, এটি বেশ ভালভাবে কাজ করে তবে আপনার ডেটাসেটটি যদি ভারসাম্যহীন হয় তবে আমি আরও রক্ষণশীল কিছু ব্যবহার করার পরামর্শ দেব:

scale_pos_weight = sqrt(count(negative examples)/count(Positive examples)) 

খুব উচ্চ ওজনের দ্বারা ইতিবাচক উদাহরণগুলির গুণনের প্রভাব সীমাবদ্ধ করতে এটি দরকারী।


1

আমি আপনার প্রশ্ন এবং হতাশার বিষয়টি বুঝতে পেরেছি, তবে আমি নিশ্চিত নই যে এটি এমন কিছু যা বিশ্লেষণাত্মকভাবে গণনা করা যেতে পারে, বরং আপনাকে @ ইউজার 2149631 হিসাবে ক্রস বৈধতা ব্যবহার করে বেশিরভাগ হাইপার প্যারামিটারের জন্য আপনার ডেটার জন্য অনুমিতভাবে একটি ভাল সেটিংস নির্ধারণ করতে হবে সুপারিশ করেছে। এর পরিবর্তে বৈশিষ্ট্য নির্বাচনের মাধ্যমে এক্সজিবিস্টের জন্য এফপিআর কমিয়ে Xgboost এবং স্কলারন এপিআই দিয়ে সিলেক্টএফপিআর ব্যবহার করে আমি কিছুটা সাফল্য পেয়েছি, তারপরে আরও 0 এবং 1.0 এর মধ্যে স্কেল_পোস_ওয়েট টিউন করে। O.9 আপনার ডেটা উপর নির্ভর করে ওয়াইএমএমভি ভাল হিসাবে কাজ করে বলে মনে হচ্ছে। আপনি যদি প্রতিটি ডকুমেন্টটি ডক্সের মাধ্যমে দেখে থাকেন তবে এক্সজি বুস্টকে প্রেরণ করার সময় আপনি প্রতিটি ডেটা পয়েন্ট পৃথকভাবে ওজন করতে পারেন। আপনাকে তাদের এপিআই ব্যবহার করতে হবে স্কেলার্ন র‍্যাপার নয়। এইভাবে আপনি অন্যগুলির তুলনায় এক সেট ডেটার পয়েন্টকে ওজন করতে পারবেন এবং এটি এটি ব্যবহার করে বুস্টিং অ্যালগরিদমকে প্রভাবিত করবে।


0

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

https://www.analyticsvidhya.com/blog/2017/03/imbalanced-classification-problem/

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