جنگل تصادفی (Random Forest)
آموزش جنگل تصادفی: ترکیب چند درخت با Bagging، هایپرپارامترها و چرایی دقت بالاتر
جنگل تصادفی چیست؟
یک درخت ناپایدار و مستعد Overfitting است. راهحل؟ صدها درخت بسازیم و رأی بگیریم! این ایده «حکمت جمعی» است.
چگونه کار میکند؟
- Bagging: برای هر درخت، نمونهای تصادفی (با جایگذاری) از داده آموزش برداشته میشود
- تصادفی بودن ویژگی: در هر تقسیم، فقط زیرمجموعه تصادفی از ویژگیها دیده میشوند
- رأیگیری: پیشبینی نهایی = اکثریت رأی همه درختان (یا میانگین در رگرسیون)
چرا کار میکند؟
هر درخت خطای متفاوتی دارد؛ ترکیب خطاهای غیرهمبسته، خطای کل را کم میکند. مثل اینکه از ۱۰۰ نفر نظرسنجی کنید بهجای یک نفر!
پیادهسازی
from sklearn.ensemble import RandomForestClassifier
model = RandomForestClassifier(
n_estimators=100, # تعداد درختان
max_depth=None, # هر درخت میتواند عمیق شود
random_state=42,
)
model.fit(X_train, y_train)
هایپرپارامترهای مهم
| پارامتر | معنی | پیشنهاد |
|---|---|---|
n_estimators | تعداد درختان | ۱۰۰ تا ۵۰۰ |
max_features | ویژگیهای هر تقسیم | √n برای دستهبندی |
max_depth | عمق هر درخت | None یا محدود |
min_samples_leaf | حداقل نمونه برگ | ۱ تا ۵ |
اهمیت ویژگی (Feature Importance)
جنگل بهصورت رایگان میگوید کدام ویژگی مهمتر است:
importances = model.feature_importances_
# برای هر ویژگی عددی بین ۰ و ۱
مزایا و معایب
| مزایا | معایب |
|---|---|
| دقت بالا بدون تنظیم زیاد | کندتر از یک درخت |
| مقاوم به Overfitting | تفسیر سختتر (جنگل!) |
| اهمیت ویژگی رایگان | حافظه بیشتر |
جنگل تصادفی «مدل سوئیسیچاقو» ML است؛ تقریباً همیشه جواب خوب میدهد و نقطه شروع عالی برای هر مسئله است.
جمعبندی
- جنگل = رأیگیری صدها درخت مستقل
- Bagging + تصادفی بودن ویژگی = تنوع درختان
- دقت بالا، مقاوم، با اهمیت ویژگی رایگان
این مبحث بخشی از دوره آموزش کامل ماشین لرنینگ است.