این متن به معرفی الگوریتم SMOTEBoost می‌پردازد که برای حل مشکل عدم تعادل کلاس‌ها در داده‌ها با برچسب‌های گسسته (discrete) طراحی شده است. این الگوریتم از ترکیب SMOTE و روش boosting استاندارد AdaBoost استفاده می‌کند تا مدل بهتری از کلاس اقلیت ارائه دهد. این کار با ارائه نه تنها نمونه‌های کلاس اقلیت که در تکرار boosting قبلی به اشتباه طبقه‌بندی شده‌اند، بلکه با نمایش گسترده‌تر از آن نمونه‌ها (که توسط SMOTE به دست می‌آید) به یادگیرنده انجام می‌شود. از آنجا که الگوریتم‌های boosting وزن مساوی به همه نمونه‌های طبقه‌بندی شده اشتباه می‌دهند و از مجموعه‌ای از داده‌ها که عمدتاً از کلاس اکثریت تشکیل شده‌اند نمونه‌برداری می‌کنند، نمونه‌برداری بعدی از مجموعه آموزشی همچنان به سمت کلاس اکثریت متمایل است. بنابراین، برای کاهش بایاس ذاتی در روش یادگیری به دلیل عدم تعادل کلاس و افزایش وزن نمونه‌برداری کلاس اقلیت، SMOTE در هر دور از boosting معرفی می‌شود. معرفی SMOTE تعداد نمونه‌های کلاس اقلیت را برای یادگیرنده افزایش می‌دهد و تمرکز را بر این موارد در توزیع در هر دور boosting قرار می‌دهد. علاوه بر به حداکثر رساندن حاشیه برای مجموعه داده کلاس skewed، این روش تنوع را در بین دسته‌بندی‌کننده‌ها در ensemble نیز افزایش می‌دهد، زیرا در هر تکرار مجموعه متفاوتی از نمونه‌های مصنوعی تولید می‌شود.

این کد SMOTEBoost را پیاده‌سازی می‌کند. SMOTEBoost الگوریتمی برای مقابله با مشکل عدم تعادل کلاس در داده‌ها با برچسب‌های کلاس گسسته است. این الگوریتم از ترکیبی از SMOTE و روش استاندارد boosting یعنی AdaBoost استفاده می‌کند تا با ارائه نه تنها نمونه‌های کلاس اقلیت که در تکرار boosting قبلی به اشتباه طبقه‌بندی شده‌اند، بلکه با نمایش گسترده‌تر از آن نمونه‌ها (که توسط SMOTE به دست می‌آید)، مدل بهتری از کلاس اقلیت ارائه دهد. از آنجا که الگوریتم‌های boosting وزن مساوی به همه نمونه‌های طبقه‌بندی شده اشتباه می‌دهند و از مجموعه‌ای از داده‌ها که عمدتاً از کلاس اکثریت تشکیل شده‌اند نمونه‌برداری می‌کنند، نمونه‌برداری بعدی از مجموعه آموزشی همچنان به سمت کلاس اکثریت متمایل است. بنابراین، برای کاهش بایاس ذاتی در روش یادگیری به دلیل عدم تعادل کلاس و افزایش وزن نمونه‌برداری کلاس اقلیت، SMOTE در هر دور از boosting معرفی می‌شود. معرفی SMOTE تعداد نمونه‌های کلاس اقلیت را برای یادگیرنده افزایش می‌دهد و تمرکز را بر این موارد در توزیع در هر دور boosting قرار می‌دهد. علاوه بر به حداکثر رساندن حاشیه برای مجموعه داده کلاس skewed، این روش تنوع را در بین دسته‌بندی‌کننده‌ها در ensemble نیز افزایش می‌دهد، زیرا در هر تکرار مجموعه متفاوتی از نمونه‌های مصنوعی تولید می‌شود.

پیاده‌سازی فعلی SMOTEBoost به طور مستقل توسط نویسنده برای اهداف تحقیقاتی انجام شده است. به منظور اینکه کاربران بتوانند از بسیاری از یادگیرنده‌های ضعیف مختلف برای boosting استفاده کنند، یک رابط با Weka API ایجاد شده است. در حال حاضر، چهار الگوریتم Weka می‌تواند به عنوان یادگیرنده ضعیف استفاده شود: J48، SMO، IBk، Logistic.

توضیحات جامع و جزئی

مشکل عدم تعادل کلاس: در بسیاری از مسائل دنیای واقعی، داده‌ها دارای توزیع نامتعادل کلاس هستند. به عنوان مثال، در یک مجموعه داده تشخیص پزشکی، ممکن است نمونه‌های بسیار بیشتری از بیمارانی که بیماری ندارند نسبت به بیمارانی که بیماری دارند، وجود داشته باشد. الگوریتم‌های یادگیری ماشین استاندارد تمایل دارند به سمت کلاس اکثریت بایاس شوند و منجر به عملکرد ضعیف در کلاس اقلیت می‌شوند، که اغلب کلاسی است که اهمیت بیشتری دارد.

SMOTEBoost: ترکیبی از دو تکنیک

SMOTEBoost این مشکل را با ترکیب دو تکنیک کلیدی حل می‌کند:

  1. SMOTE (Synthetic Minority Over-sampling Technique): SMOTE نمونه‌های مصنوعی از کلاس اقلیت ایجاد می‌کند. به جای تکرار ساده نمونه‌های موجود کلاس اقلیت، نمونه‌های جدید را با درون‌یابی بین نمونه‌های کلاس اقلیت همسایه در فضای ویژگی ایجاد می‌کند. این کار به گسترش نمایش کلاس اقلیت و کاهش بیش‌برازش کمک می‌کند.

  2. AdaBoost (Adaptive Boosting): AdaBoost یک الگوریتم boosting است که به صورت تکراری یک ensemble از یادگیرنده‌های ضعیف (به عنوان مثال، درختان تصمیم) می‌سازد. این الگوریتم به نمونه‌های آموزشی وزن می‌دهد و بر نمونه‌هایی که در تکرارهای قبلی به اشتباه طبقه‌بندی شده‌اند، تمرکز می‌کند. این امر به الگوریتم اجازه می‌دهد از اشتباهات خود یاد بگیرد و عملکرد خود را بهبود بخشد.

نحوه عملکرد SMOTEBoost

SMOTEBoost، SMOTE را در فرآیند AdaBoost ادغام می‌کند:

  1. Initialization (مقداردهی اولیه): وزن‌های مساوی به همه نمونه‌های آموزشی اختصاص داده می‌شود.

  2. Iteration (تکرار): برای هر دور boosting:

    • یک یادگیرنده ضعیف روی داده‌های آموزشی وزن‌دار آموزش داده می‌شود.
    • نمونه‌های کلاس اقلیت که به اشتباه طبقه‌بندی شده‌اند، شناسایی می‌شوند.
    • SMOTE روی این نمونه‌های اقلیت طبقه‌بندی شده اشتباه اعمال می‌شود تا نمونه‌های مصنوعی تولید شود.
    • داده‌های اصلی با نمونه‌های مصنوعی ترکیب می‌شوند.
    • وزن‌های نمونه‌های آموزشی به‌روزرسانی می‌شوند و وزن‌های بیشتری به نمونه‌های طبقه‌بندی شده اشتباه داده می‌شود.
  3. Ensemble (مجموعه): یادگیرنده‌های ضعیف با وزن‌دهی به پیش‌بینی‌هایشان بر اساس عملکردشان، به یک دسته‌بندی‌کننده قوی تبدیل می‌شوند.

مزایای SMOTEBoost

  • بهبود عملکرد کلاس اقلیت: با oversampling کلاس اقلیت و تمرکز بر نمونه‌های طبقه‌بندی شده اشتباه، SMOTEBoost به بهبود عملکرد دسته‌بندی‌کننده در کلاس اقلیت کمک می‌کند.
  • افزایش تنوع: تولید نمونه‌های مصنوعی تنوع داده‌های آموزشی را افزایش می‌دهد و منجر به یک دسته‌بندی‌کننده قوی‌تر و تعمیم‌یافته‌تر می‌شود.
  • مدیریت عدم تعادل کلاس: SMOTEBoost به طور خاص برای حل مشکل عدم تعادل کلاس طراحی شده است و آن را برای طیف گسترده‌ای از کاربردهای دنیای واقعی مناسب می‌سازد.

پیاده‌سازی کد شما

کد شما SMOTEBoost را با یک رابط به کتابخانه یادگیری ماشین Weka پیاده‌سازی می‌کند. این امر به شما امکان می‌دهد از الگوریتم‌های مختلف Weka (J48، SMO، IBk، Logistic) به عنوان یادگیرنده‌های ضعیف در مجموعه boosting خود استفاده کنید. این انعطاف‌پذیری مزیت قابل توجهی است، زیرا به شما امکان می‌دهد الگوریتم‌های پایه مختلف را آزمایش کنید و بهترین ترکیب را برای مجموعه داده خاص خود پیدا کنید.

دسته بندی: برچسب ها: