جنگل تصادفی (Random Forest) چیست؟
جنگل تصادفی یک الگوریتم یادگیری ماشین است که برای طبقهبندی (Classification) و رگرسیون (Regression) استفاده میشود. این روش بر اساس مجموعهای از درختهای تصمیمگیری (Decision Trees) عمل میکند و با ترکیب نتایج آنها پیشبینی دقیقی ارائه میدهد. ایدهی اصلی این روش افزایش دقت پیشبینی و کاهش احتمال بیشبرازش (Overfitting) است.
1. ساختار و نحوه کار جنگل تصادفی
- ایجاد زیرمجموعههای تصادفی از دادهها (Bootstrap Sampling)
الگوریتم ابتدا چندین نمونهی تصادفی از دادههای آموزشی میگیرد. این فرآیند که نمونهبرداری با جایگزینی نامیده میشود، به الگوریتم اجازه میدهد تا درختهای مختلف با ورودیهای متنوع ایجاد کند. - ساخت درختهای تصمیمگیری مستقل
- برای هر زیرمجموعهی داده، یک درخت تصمیمگیری ساخته میشود.
- در هر گره، به جای بررسی تمام ویژگیها، الگوریتم یک زیرمجموعهی تصادفی از ویژگیها را انتخاب میکند تا بهترین شکاف (Split) را پیدا کند.
- این تصادفی بودن در انتخاب دادهها و ویژگیها باعث تنوع بین درختها میشود.
- ترکیب پیشبینیها
- در مسائل طبقهبندی، جنگل تصادفی از روش رأیگیری اکثریت (Majority Voting) استفاده میکند (کلاسی که بیشترین رأی را از درختها گرفته باشد).
- در مسائل رگرسیون، میانگین پیشبینیهای تمام درختها محاسبه میشود.
- کاهش بیشبرازش:
به دلیل استفاده از چندین درخت و میانگینگیری، احتمال بیشبرازش کاهش مییابد. - مقاوم در برابر نویز:
جنگل تصادفی تأثیر نویز موجود در داده را کاهش میدهد، زیرا نویز بر یک درخت خاص اثر میگذارد، اما کل مدل را تحت تأثیر قرار نمیدهد. - کارایی بالا برای دادههای بزرگ:
جنگل تصادفی میتواند به طور مؤثر با مجموعههای دادهی بزرگ و پیچیده کار کند. - توانایی کار با ویژگیهای غیرخطی و تعاملات پیچیده:
درختهای تصمیمگیری میتوانند روابط غیرخطی و پیچیده بین متغیرها را کشف کنند.
3. معایب جنگل تصادفی
- مصرف منابع بالا:
ایجاد و اجرای چندین درخت به حافظه و زمان بیشتری نیاز دارد. - کاهش تفسیربودن (Interpretability):
در مقایسه با درختهای تصمیمگیری منفرد، جنگل تصادفی دشوارتر تفسیر میشود. - حساسیت به دادههای نامتعادل:
اگر کلاسهای خروجی بهطور نابرابر توزیع شده باشند، ممکن است الگوریتم به سمت کلاس غالب تمایل داشته باشد.
- طبقهبندی بیماریها در پزشکی
- پیشبینی قیمت در بازارهای مالی
- تشخیص تقلب در تراکنشهای بانکی
- تحلیل رفتار مشتریان در بازاریابی
در ادامه، یک مثال فرضی با استفاده از جنگل تصادفی برای طبقهبندی دادههای ساختگی در پایتون آورده شده است. در این مثال، هدف تشخیص این است که آیا یک داده به کلاس "1" یا "0" تعلق دارد.
کد مثال فرضی: جنگل تصادفی برای طبقهبندی
# وارد کردن کتابخانههای مورد نیاز
import numpy as np
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, classification_report
# تولید دادههای فرضی
# فرض کنید 1000 نمونه و 5 ویژگی داریم
np.random.seed(42)
X = np.random.rand(1000, 5) # دادههای ورودی
y = np.random.choice([0, 1], size=1000) # برچسبهای کلاس (0 یا 1)
# تقسیم دادهها به مجموعههای آموزشی و آزمایشی
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# ساخت مدل جنگل تصادفی
model = RandomForestClassifier(n_estimators=100, random_state=42)
# آموزش مدل با دادههای آموزشی
model.fit(X_train, y_train)
# پیشبینی کلاسها با دادههای آزمایشی
y_pred = model.predict(X_test)
# ارزیابی مدل
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy * 100:.2f}%")
# گزارش طبقهبندی
print("\nClassification Report:")
print(classification_report(y_test, y_pred))
# بررسی ویژگیهای مهم (Feature Importances)
importances = model.feature_importances_
print("\nFeature Importances:")
for i, importance in enumerate(importances):
print(f"Feature {i + 1}: {importance:.2f}")
نظرات