یادگیری ترکیبی (Ensemble Learning)
آموزش روشهای ترکیب مدلها: Bagging، Boosting، Voting و معرفی XGBoost و LightGBM
Ensemble چیست؟
بهجای یک مدل، چند مدل بسازیم و پیشبینیهایشان را ترکیب کنیم. مثل مشورت با چند متخصص بهجای یک نفر!
۱. Bagging (ترکیب موازی)
مدلها موازی و مستقل آموزش میبینند و رأی میگیرند:
- هر مدل روی نمونه تصادفی (Bootstrap) آموزش میبیند
- کاهش واریانس → ضد Overfitting
- مثال: جنگل تصادفی (که قبلاً دیدیم)
۲. Boosting (ترکیب سری)
مدلها پشتسرهم؛ هر مدل خطاهای مدل قبلی را تمرکز میکند:
- مدل ۱ آموزش میبیند؛ خطاها مشخص میشوند
- مدل ۲ روی نمونههای سخت (خطاها) وزن بیشتری میگذارد
- تکرار... و جمع وزندار پیشبینیها
- کاهش بایاس → دقت فوقالعاده
- مثالها: AdaBoost، Gradient Boosting، XGBoost، LightGBM
۳. Voting (رأیگیری ساده)
from sklearn.ensemble import VotingClassifier
ensemble = VotingClassifier([
("lr", LogisticRegression()),
("knn", KNeighborsClassifier()),
("rf", RandomForestClassifier()),
], voting="soft") # soft: میانگین احتمالها
Bagging در مقابل Boosting
| ویژگی | Bagging | Boosting |
|---|---|---|
| ساختار | موازی | سری |
| هدف | کاهش واریانس | کاهش بایاس |
| Overfitting | مقاوم ✅ | ممکن است (تنظیم لازم) |
| سرعت آموزش | موازیسازیپذیر ✅ | ترتیبی |
XGBoost و LightGBM
پیادهسازیهای قدرتمند و بهینه Gradient Boosting که در مسابقات Kaggle حاکماند:
- XGBoost: دقیق، Regularization داخلی، محبوب
- LightGBM: سریعتر و سبکتر برای داده بزرگ
# نصب: pip install xgboost
from xgboost import XGBClassifier
model = XGBClassifier(n_estimators=100)
model.fit(X_train, y_train)
برای داده جدولی (tabular)، مدلهای Boosting معمولاً بهترین دقت را دارند — حتی بهتر از شبکههای عصبی!
جمعبندی
- Bagging: موازی، ضد واریانس (جنگل تصادفی)
- Boosting: سری، ضد بایاس (XGBoost)
- Voting: سادهترین ترکیب مدلهای متنوع
این مبحث بخشی از دوره آموزش کامل ماشین لرنینگ است.