Boosting در یادگیری ماشین چیست؟
Boosting روشی است که در یادگیری ماشین برای کاهش خطاها در تحلیل دادههای پیشبینانه استفاده میشود. دانشمندان داده نرمافزارهای یادگیری ماشین، که مدلهای یادگیری ماشین نامیده میشوند، را بر روی دادههای برچسبخورده آموزش میدهند تا دربارهی دادههای بدون برچسب حدس بزنند. یک مدل یادگیری ماشین منفرد ممکن است بسته به دقت مجموعه دادهی آموزشی خطاهای پیشبینی داشته باشد. برای مثال، اگر یک مدل تشخیص گربه فقط بر روی تصاویر گربههای سفید آموزش داده شده باشد، ممکن است گاهی یک گربه سیاه را اشتباه شناسایی کند. Boosting سعی میکند این مشکل را با آموزش چندین مدل بهصورت متوالی برطرف کند تا دقت کل سیستم بهبود یابد.
چرا Boosting مهم است؟
Boosting دقت پیشبینی و عملکرد مدلهای یادگیری ماشین را با تبدیل چندین یادگیرنده ضعیف به یک مدل یادگیری قوی بهبود میدهد. مدلهای یادگیری ماشین میتوانند یادگیرنده ضعیف یا یادگیرنده قوی باشند:
یادگیرندههای ضعیف
یادگیرندههای ضعیف دقت پیشبینی پایینی دارند، مشابه حدس تصادفی. آنها مستعد بیشبرازش (overfitting) هستند یعنی نمیتوانند دادههایی را که خیلی با مجموعه داده اصلی متفاوت هستند طبقهبندی کنند. برای مثال، اگر مدلی را برای شناسایی گربهها بر اساس اینکه حیواناتی با گوشهای نوکتیز هستند آموزش دهید، ممکن است نتواند گربهای با گوشهای خمیده را تشخیص دهد.
یادگیرندههای قوی
یادگیرندههای قوی دقت پیشبینی بالاتری دارند. Boosting یک سیستم از یادگیرندههای ضعیف را به یک سیستم یادگیری قوی واحد تبدیل میکند. برای مثال، برای شناسایی تصویر گربه، آن یک یادگیرنده ضعیف را که گوشهای نوکتیز را تشخیص میدهد با یک یادگیرنده دیگر که چشمهای بهشکل گربه را تشخیص میدهد ترکیب میکند. پس از تحلیل تصویر حیوان برای گوشهای نوکتیز، سیستم دوباره آن را برای چشمهای گربهای تحلیل میکند. این کار دقت کلی سیستم را بهبود میبخشد.
Boosting چگونه کار میکند؟
برای درک نحوه عملکرد Boosting، ابتدا باید توضیح دهیم مدلهای یادگیری ماشین چگونه تصمیم میگیرند. اگرچه تغییرات زیادی در پیادهسازی وجود دارد، دانشمندان داده اغلب از Boosting همراه با الگوریتمهای درخت تصمیم استفاده میکنند:
درختهای تصمیم (Decision Trees)
درختهای تصمیم ساختارهایی در یادگیری ماشین هستند که با تقسیم مجموعه داده به زیرمجموعههای کوچکتر و کوچکتر بر اساس ویژگیهایشان کار میکنند. ایده این است که درختهای تصمیم دادهها را بارها تقسیم میکنند تا فقط یک کلاس باقی بماند. برای مثال، درخت ممکن است مجموعهای از پرسشهای بله یا خیر بپرسد و دادهها را در هر مرحله به دستهها تقسیم کند.
روش مجموعهای Boosting (Boosting Ensemble Method)
Boosting یک مدل مجموعهای (ensemble) ایجاد میکند، با ترکیب چندین درخت تصمیم ضعیف بهصورت متوالی. این روش به خروجی هر درخت وزن میدهد. سپس طبقهبندیهای نادرست از اولین درخت تصمیم وزن بیشتری میگیرند و به درخت بعدی داده میشوند. پس از چرخههای متعدد، روش Boosting این قوانین ضعیف را به یک قانون پیشبینی قدرتمند ترکیب میکند.
مقایسه Boosting با Bagging
Boosting و Bagging دو روش مجموعهای رایج هستند که دقت پیشبینی را بهبود میبخشند. تفاوت اصلی این روشها در روش آموزش است. در Bagging، دانشمندان داده دقت یادگیرندههای ضعیف را با آموزش چندین مورد بهطور همزمان روی مجموعه دادههای مختلف بهبود میدهند. در مقابل، Boosting یادگیرندههای ضعیف را یکی پس از دیگری آموزش میدهد.
آموزش در Boosting چگونه انجام میشود؟
روش آموزش بسته به نوع فرآیند Boosting که الگوریتم Boosting نامیده میشود تغییر میکند. با این حال، یک الگوریتم مراحل عمومی زیر را برای آموزش مدل Boosting طی میکند:
مرحله ۱
الگوریتم Boosting به هر نمونه داده وزن مساوی اختصاص میدهد. سپس دادهها را به اولین مدل یادگیری ماشین، که الگوریتم پایه (base algorithm) نامیده میشود، وارد میکند. الگوریتم پایه برای هر نمونه داده پیشبینی انجام میدهد.
مرحله ۲
الگوریتم Boosting پیشبینیهای مدل را ارزیابی میکند و وزن نمونههایی را که خطای بیشتری دارند افزایش میدهد. همچنین بر اساس عملکرد مدل وزنی اختصاص میدهد. مدلی که پیشبینیهای عالی تولید میکند، تأثیر بیشتری بر تصمیم نهایی خواهد داشت.
مرحله ۳
الگوریتم دادههای وزندهیشده را به درخت تصمیم بعدی منتقل میکند.
مرحله ۴
الگوریتم مراحل ۲ و ۳ را تکرار میکند تا زمانی که نمونههای خطاهای آموزشی به زیر یک آستانه خاص برسند.
انواع Boosting چیست؟
سه نوع اصلی Boosting به شرح زیر هستند:
Boosting تطبیقی (Adaptive Boosting / AdaBoost)
AdaBoost یکی از اولین مدلهای Boosting توسعهیافته بود. این روش در هر تکرار فرآیند Boosting خود را تطبیق میدهد و سعی در اصلاح خطا دارد.
AdaBoost در ابتدا وزن مساوی به هر مجموعه داده میدهد. سپس پس از هر درخت تصمیم، بهطور خودکار وزن نقاط داده را تنظیم میکند. به اقلامی که اشتباه طبقهبندی شدهاند وزن بیشتری داده میشود تا در دور بعدی اصلاح شوند. این فرآیند تکرار میشود تا زمانی که خطای باقیمانده (Residual Error)، یعنی تفاوت بین مقادیر واقعی و پیشبینیشده، به زیر یک آستانه قابل قبول برسد.
میتوانید AdaBoost را با بسیاری از پیشبینها استفاده کنید، و معمولاً نسبت به سایر الگوریتمهای Boosting حساسیت کمتری دارد. این روش وقتی میان ویژگیها همبستگی یا بُعد بالای داده وجود داشته باشد، عملکرد خوبی ندارد. در کل، AdaBoost نوع مناسبی از Boosting برای مسائل طبقهبندی است.
Boosting گرادیانی (Gradient Boosting / GB)
Gradient Boosting مشابه AdaBoost است، زیرا آن هم یک تکنیک آموزشی متوالی است. تفاوت میان AdaBoost و GB این است که GB به اقلامی که اشتباه طبقهبندی شدهاند وزن بیشتری نمیدهد. در عوض، نرمافزار GB تابع خطا (loss function) را با تولید یادگیرندههای پایه بهصورت متوالی بهینه میکند تا یادگیرنده فعلی همیشه مؤثرتر از قبلی باشد. این روش تلاش میکند نتایج دقیقی را از ابتدا تولید کند، بهجای اصلاح خطاها در کل فرآیند، مانند AdaBoost. به همین دلیل، نرمافزار GB میتواند نتایج دقیقتری به همراه داشته باشد. Gradient Boosting میتواند هم در مسائل طبقهبندی و هم در مسائل رگرسیون استفاده شود.
Boosting گرادیانی پیشرفته (Extreme Gradient Boosting / XGBoost)
XGBoost، Boosting گرادیانی را برای سرعت محاسباتی و مقیاس بهبود میدهد. XGBoost از چندین هسته (core) پردازنده استفاده میکند تا یادگیری در حین آموزش بهصورت موازی انجام شود. این یک الگوریتم Boosting است که میتواند مجموعه دادههای بسیار بزرگ را مدیریت کند، و آن را برای کاربردهای Big Data جذاب میسازد. ویژگیهای کلیدی XGBoost شامل موازیسازی، محاسبات توزیعشده، بهینهسازی کش و پردازش out-of-core است.
مزایای Boosting چیست؟
Boosting مزایای عمده زیر را ارائه میدهد:
سهولت پیادهسازی
Boosting الگوریتمهایی دارد که بهراحتی قابل فهم و تفسیر هستند و از اشتباهات خود یاد میگیرند. این الگوریتمها نیازی به پیشپردازش دادهها ندارند و روالهای داخلی برای مدیریت دادههای گمشده دارند. علاوه بر این، بیشتر زبانها کتابخانههای داخلی برای پیادهسازی الگوریتمهای Boosting دارند، با پارامترهای زیادی که میتوانند عملکرد را تنظیم دقیق کنند.
کاهش بایاس (Bias)
بایاس حضور عدم قطعیت یا نادقتی در نتایج یادگیری ماشین است. الگوریتمهای Boosting چندین یادگیرنده ضعیف را به روش متوالی ترکیب میکنند، که مشاهدات را بهصورت تکراری بهبود میبخشد. این رویکرد کمک میکند بایاس بالایی که در مدلهای یادگیری ماشین رایج است کاهش یابد.
کارایی محاسباتی
الگوریتمهای Boosting ویژگیهایی را که دقت پیشبینی را افزایش میدهند در طول آموزش اولویتبندی میکنند. آنها میتوانند به کاهش ویژگیهای داده کمک کنند و مجموعه دادههای بزرگ را بهطور مؤثر مدیریت کنند.
چالشهای Boosting چیست؟
محدودیتهای رایج در حالتهای Boosting به شرح زیر است:
آسیبپذیری در برابر دادههای پرت (Outliers)
مدلهای Boosting در برابر دادههای پرت یا مقادیری که با بقیه مجموعه داده متفاوت هستند آسیبپذیرند. زیرا هر مدل سعی میکند خطاهای مدل قبلی خود را اصلاح کند، دادههای پرت میتوانند نتایج را بهشدت منحرف کنند.
پیادهسازی بلادرنگ (Real-time)
ممکن است استفاده از Boosting در پیادهسازیهای بلادرنگ چالشبرانگیز باشد، زیرا الگوریتم پیچیدهتر از سایر فرآیندهاست. روشهای Boosting تطبیقپذیری بالایی دارند، بنابراین میتوانید از طیف وسیعی از پارامترهای مدل استفاده کنید که بلافاصله بر عملکرد مدل تأثیر میگذارند.