جنگل تصادفی (Random Forest)

آموزش جنگل تصادفی: ترکیب چند درخت با Bagging، هایپرپارامترها و چرایی دقت بالاتر

جنگل تصادفی چیست؟

یک درخت ناپایدار و مستعد Overfitting است. راه‌حل؟ صدها درخت بسازیم و رأی بگیریم! این ایده «حکمت جمعی» است.

چگونه کار می‌کند؟

  1. Bagging: برای هر درخت، نمونه‌ای تصادفی (با جای‌گذاری) از داده آموزش برداشته می‌شود
  2. تصادفی بودن ویژگی: در هر تقسیم، فقط زیرمجموعه تصادفی از ویژگی‌ها دیده می‌شوند
  3. رأی‌گیری: پیش‌بینی نهایی = اکثریت رأی همه درختان (یا میانگین در رگرسیون)

چرا کار می‌کند؟

هر درخت خطای متفاوتی دارد؛ ترکیب خطاهای غیرهمبسته، خطای کل را کم می‌کند. مثل اینکه از ۱۰۰ نفر نظرسنجی کنید به‌جای یک نفر!

پیاده‌سازی

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 است؛ تقریباً همیشه جواب خوب می‌دهد و نقطه شروع عالی برای هر مسئله است.

جمع‌بندی

این مبحث بخشی از دوره آموزش کامل ماشین لرنینگ است.

ابزارهای مرتبط