یادگیری گروهی
یادگیری گروهی یا یادگیری جمعی (Ensemble Learning) یکی از مباحث مهم و کاربردی در یادگیری ماشین هست. این مبحث از سری جلسات آموزش یادگیری ماشین رایگان هست. با من و هوسم همراه باشید…
یادگیری گروهی یا Ensemble Learning چیست؟
یادگیری گروهی یا Ensemble Learning برای ما انسانها کاملا قابل فهم هست. ما انسانها به خرد جمعی یا Wisdom of the crowd اعتقاد داریم. منظور از خرد جمعی این هست که بجای لحاظ کردن نظر یک نفر، نظر مجموعهای گوناگون از افراد را داشته باشیم. پس با موضوع جالبی در یادگیری ماشین سروکار داریم. در زیر تعریف یادگیری گروهی یا Ensemble Learning را برای شما آوردهام:
ترکیب بهینه چند مدل یادگیری ماشین برای پیش بینی دقیقتر و مقاومتر
چطور هست کمی درباره عبارتهای تعریف بالا بیشتر صحبت کنم؟
- چند مدل یادگیری ماشین: مانند خرد جمعی انسان، اینجا هم چند مدل یادگیری ماشین داریم.
- ترکیب بهینه: مهم هست که مدلهای یادگیری ماشین را چگونه ترکیب کنیم. هر ترکیبی جواب بهتر نمیدهد!
- پیشبینی دقیقتر: انتظار داریم که ترکیب بهینه مدلها ما را به دقت بالاتری نسبت به مدلهای تکی برساند.
- پیشبینی مقاومتر: مهم هست که مدل ما نسبت به دادههای نویزی یا چالشی نسبت به مدلهای تکی مقامتر باشد.
درادامه، میخواهم با یک مثال ساده شما را با مدل یادگیری جمعی آشنا کنم. این مثال را خیلی دقیق بررسی کنید.
مثال یادگیری گروهی در یادگیری ماشین
دیتاستی بنام حمله قلبی (Kaggle Heart Attack) داریم که یک مساله دستهبندی دوکلاسه هست. میخواهم یک مدل یادگیری گروهی ساده روی این دیتاست آموزش دهم. یک نمونه ساده از مدل یادگیری گروهی برای این مساله در شکل زیر آوردهام. روشهای یادگیری گروهی متنوع هستند و شما فعلا یک حالت ساده را میبینید. مدل گروهی ما، ترکیبی از سه مدل ماشین بردار پشتیبان (Support Vector Machine)، رگرسیون لجستیک (Logistic Regression) و درخت تصمیم (Decision Tree) را نشان میدهد.

لازم هست درباره فرآیند آموزش و ارزیابی این مدل توضیح دهم:
- آموزش مدل یادگیری گروهی: هریک از مدلهای موجود در مدل گروهی باید بهصورت جداگانه آموزش ببینند. یعنی، مدل SVM را جداگانه روی دیتاست حمله قلبی آموزش میدهم. سپس، میروم سراغ مدل بعدی تا آخرین مدل. دقت کنید که در این مرحله هیچ صحبتی از یادگیری گروهی نیست. صرفا من سه مدل ساده دارم که درحال آموزش آنها بهصورت جداگانه هستم.
- ارزیابی مدل یادگیری گروهی: وقتی مدلها بهصورت جداگانه آموزش دیدند، آنها را در داخل ساختار شکل بالا قرار میدهم. مربعهای زرد رنگ، پیشبینی مدلها برای یک نمونه داده تستی هست. این پیشبینیها در اختیار بلوک رایگیری (Majority Voting) قرار میگیرند. این بلوک هم کلاس نهایی را براساس بیشترین تکرار تعیین میکند. به عنوان نمونه، اگر دو مدل به کلاس 1 و یک مدل به کلاس 0 رای دادهاند، خروجی نهایی کلاس 1 میشود. با منطق ما انسانها هم میخواند، مثلا سیستم امتیازدهی در ورزشی مانند وزنهبرداری که سه داور نظر میدهند و نتیجه نهایی نظر اکثریت است.
براساس توضیحات بالا، تکتک مدلها را روی دیتاست حمله قلبی آموزش دادم. نتیجه را در جدول زیر میتوانید مشاهده کنید؛ بهترین دقت را مدل SVM و KNN با 88.52% دارند. وقتی این سه مدل را در ساختار مدل گروهی شکل بالا قرار دادم، دقت به 90.16% رسید. جالب هست نه؟! یعنی، ترکیب چند متخصص باعث شد که ما بتوانیم افراد بیشتری را خطر حمله قلبی نجات دهیم.

نکته یادتان باشد، مدلهای تکی بالا نباید شبیه هم عمل کنند. اگر سه مدل داشته باشیم که پیشبینی درست و غلط آنها دقیقا مشابه هم باشد، آن وقت دیگر ترکیب آنها و ساخت مدل گروهی اصولا بیمعنا میشود. متوجه هستید چه میگویم؟ درمورد این نکته خیلی فکر کنید. من در ویدئوی 463 از فصل هفدهم با موضوع یادگیری گروهی در دوره یادگیری ماشین جامع هوسم، از طریق ریاضیات و احتمال نشان دادم که حداکثر میزان کارایی ترکیب بهینه سه مدل میتواند چقدر باشد. اگر این دوره را دارید، حتما این ویدئو را ببینید؛ اگر هم این دوره را ندارید، احتمالا با همین سرنخی که دادم و کمک چتباتهای هوش مصنوعی بتوانید این موضوع را اثبات کنید.
انواع روشهای یادگیری گروهی
یادگیری گروهی مبحث وسیعی است. به تنهایی میتواند یک دوره آموزشی باشد. به عنوان نمونه، در دوره یادگیری ماشین جامع هوسم ما حدودا 7 ساعت درباره یادگیری گروهی صحبت کردیم که به نظرم میشد تا 10 ساعت هم جا داشت! اما، بهصورت کلی چهار رهیافت رایج در یادگیری گروهی وجود دارد. این چهار رهیافت عبارتاستاز:
- رهیافت Bagging
- رهیافت Boosting
- رهیافت Voting
- رهیافت Stacking
درادامه، درباره هریک از این رهیافتها را بهصورت مجزا توضیح میدهم.
رهیافت Bagging در یادگیری ماشین
رهیافت Bagging در یادگیری ماشین، یکی از رهیافتهای محبوب و پراستفاده است. بهگونهای که در بسیاری از مسابقات Kaggle، افراد روش پیشنهادی خود را با رهیافت Bagging ترکیب میکنند تا عملکرد کلی را چند درصدی بهبود دهند. بهصورت کلی، مطابق شکل زیر، رهیافت Bagging یعنی:
آموزش N مدل یکسان بهصورت مجزا روی زیرمجموعههایی تصادفی از داده آموزشی

ممکن هست، برای شما این سوال ایجاد شود که خود کلمه Bagging به چه معناست؟! کلمه Bagging مخفف عبارت Bootsratp Aggregating است. در ادامه، معنی این دو کلمه را بهصورت جداگانه توضیح میدهم:
- Bootsrap: این کلمه به معنی انتخاب یک زیرمجموعه تصادفی (Random Subset) از نمونههای آموزشی (Train Data) با قابلیت جایگذاری است. مثلا، یک زیرمجموعه تصادفی به حجم 70 درصد دیتاست اصلی میسازید. قابلیت جایگذاری هم یعنی، ممکن است یک نمونه چند بار انتخاب شود.
- Aggregating: ترکیب مدلهای انفرادی آموزشدیده برای پیشبینی نهایی (مثلا، انتخاب براساس رای اکثریت در دستهبندی و میانگینگیری از مدلها در رگرسیون)
سوال اشرفی، تو گفتی اگر مدلها عملکرد مشابهی داشته باشند، دیگر یادگیری گروهی چندان معنا ندارد. پس چرا اینجا در رهیافت بگینگ مدلهای یکسانی گذاشتهای؟! اول، خودتان به جوابش فکر کنید و بعد جواب من را بخوانید. جواب این سوال ساده است! برای اینکه ما هر مدل را روی یک زیرمجموعه تصادفی از دادههای آموزشی، آموزش میدهیم. وقتی داده آموزشی مدلها متنوع است، انتظار میرود مدلهای مختلف هم عملکرد دقیقا یکسانی نداشته باشند.
به نظر شما، دیگر چه کاری انجام دهیم که تنوع داده آموزشی بیشتر شود؟ چه راه حلی پیشنهاد میدهید؟ اول، به این سوال فکر کنید و بعد جواب من در بخش بعدی بخوانید!
جنگلهای تصادفی یا Random Forests در یادگیری ماشین
جنگلهای تصادفی یا Random Forests هم یکی از محبوبترینها در یادگیری ماشین است. جنگلهای تصادفی، رهیافتی است که از مجموعهای درخت تصمیم بر پایه رهیافت Bagging تشکیل شده است. اجازه دهید، عبارت Random Forests را بیشتر باز کنم:
- جنگل (Forest): یک جنگل واقعی از چه تشکیل شده؟! از مجموعهای درخت! در یادگیری ماشین هم یک جنگل تصادفی از مجموعهای درخت تصمیم (Decision Tree) تشکیل شده است.
- تصادفی (Random): این کلمه به معنی تصادفی بودن فرآیند ساخت زیردیتاست اشاره میکند. مشابه با رهیافت Bagging، برای آموزش درختهای تصمیم مختلف، زیرمجموعهای تصادفی از دیتاست آموزشی ساخته میشود. اما این زیردیتاست ساختهشده یک تفاوت مهم با رهیافت بگینگ دارد؛ علاوهبر انتخاب مجموعهای تصادفی از نمونهها، ویژگیهای دیتاست هم بهصورت تصادفی انتخاب میشوند. مثلا، 70 درصد از نمونهها و ویژگیهای یک دیتاست، بهصورت تصادفی انتخاب میشوند.
مثال دیتاست Heart Attack (که پیشتر به آن اشاره شد) برای آموزشدادن مدل Random Forests انتخاب شد؛ با 20 درخت تصمیم به عمق 3، به دقت 92.5 رسیدم. این عدد نسبت به ترکیب ساده سه مدل یادگیری ماشین با دقت 90.16 بسیار بالاتر است. 😎
رهیافت بوستینگ (Boosting) در یادگیری گروهی
رهیافت بوستینگ (Boosting) پادشاه مدلها در دیتاستهای جدولی است! این رهیافت روی دیتاستهای جدولی اغلب از رهیافتهای مبتنی بر یادگیری عمیق عملکرد بهتری دارد. اتفاقا، در بسیاری از مسابقات کگل با تمرکز روی دادههای جدولی، این رهیافت انتخاب اول افراد است. بوستینگ را میتوان اینگونه تعریف کرد:
آموزش متوالی مجموعهای مدل ضعیف با تمرکز بر اصلاح اشتباه مدلهای قبلی
تعریف بالا با شکل و توضیحات زیر واضحتر میشود:
- آموزش متوالی: برخلاف بگینگ، در بوستینگ، مجموعهای مدل یادگیری ماشین بهصورت متوالی درحال آموزش روی دیتاست آموزشی هستند.
- مدل ضعیف: یک مدل یادگیری ماشین که قدرت بالایی در پیشیبنی ندارد! یعنی، با یکسری مدل ضعیف که خطای یکدیگر را اصلاح میکنند، میتوانیم نتیجهای عالی بگیریم! شبیه مورچهها که هرکدام قدرت بالایی ندارند، اما در همکاری باهم کارهای خارقالعاده انجام میدهند. چه مدل ضعیفی انتخاب کنیم؟ معمولا، در بوستینگ از مدل درخت تصمیم استفاده میشود. شما هم میتوانید یک درخت تصمیم با عمق 1 را انتخاب کنید.
- اصلاح خطا: مدلهای ما ضعیف هستند. بنابراین، اشتباهات زیادی هم خواهند داشت. مثلا در مسئله دستهبندی، هر مدلی یکسری پیشبینیهای درست و اشتباه روی دیتاست آموزشی دارد. با کاهش وزن پیشبینیهای درست، تمرکز مدل بعدی را پیشبنیهای اشتباه بیشتر میکنیم.

معروفترین الگوریتمهای بوستینگ عبارتاستاز:
- LSBoost
- AdaBoost
- LogitBoost
- Gradient Boosting: مادر مدلهای بوستینگ مدرن!
- XGBoost: پراستفادهترین عضو خانواده بوستینگ؛ ساخته شده در سال 2016
- LightGBM: نسخه بهینهتر و سریعتر XGBoost؛ ساخته شده توسط مایکروسافت در سال 2017
- CatBoost: مدیریت بهتر ویژگیهای طبقهای (Categorical)؛ ساخته شده توسط Yandex (موتور جستجوی روسی) در سال 2017
خب، خسته نباشید! 😊 مقالهای نسبتا طولانی شد. قول داده بودم که اگر این آموزش را دوست داشتید، ادامهاش را بنویسم. بالاخره این کار را انجام دادم! به چهار رهیافت در یادگیری گروهی اشاره کردم؛ از بین آنها، درباره رهیافت Bagging و Boosting توضیح دادم. البته، درباره Random Forests هم توضیح دادم. از شما بابت کامنتها بسیار ممنونم. همچنان، علاقهمندم نظر و پیشنهاد شما را برای این پست نسبتا کاملشده بدانم. ممنون و خداحافظ 👋
مطالب زیر را حتما مطالعه کنید
چرخه حیات یادگیری ماشین (ML Lifecycle)
یادگیری ماشین بدون ریاضی و کدنویسی
پیشنیازهای یادگیری ماشین
یادگیری ماشین چیست
فرآیند کریسپ (CRISP)
آموزش سایکیت لرن
6 دیدگاه
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.
خیلی ممنون، جالب و کامل بود. خسته نباشید
امیدوارم زودتر کاملش کنید🪻😁
ممنون 😊
خوشمان آمد 😊😅
یکم عجیب بود برای مدل های با درصد خطای یکسان نباید کناره هم استفاده بشن مثلا هردو درصد خطاشون 70 درصد باشه ولی خب اون یه داده های متفاوت از یکدیگر رو خطا به حساب آورده
من خودم گیج شدم شاید درستش همین باشه باهم آورده نشه😅
سلام
نمره شما و چهار نفر دیگه در امتحان ریاضی 17 میشه. اگرچه، شما به یک اندازه درست و اشتباه داشتید، اما ممکن هست سوالهایی که درست/اشتباه حل کردید، با هم متفاوت باشه. اگر دقیقا یکسان باشه، از ترکیب جوابهای شما پنج نفر، نمره بهتری حاصل نمیشه. اما، اگر یکسان نباشه، از ترکیب جوابهای شما احتمالا میشه به نمره بهتری رسید.
بسیار عالی. خسته نباشید. و تشکر.
سپاس 🙏🌺