Skip to main content

جاده کد

مقدمه

در زمینه یادگیری ماشین، مدل‌های رگرسیون برای پیش‌بینی مقادیر عددی پیوسته استفاده می‌شوند. یکی از الگوریتم‌های قدرتمند و پرکاربرد در این حوزه، جنگل تصادفی (Random Forest) است که به عنوان یک روش ensemble (تجمعی) عمل می‌کند. در این مقاله، به بررسی جامع کلاس RandomForestRegressor از کتابخانه معروف Scikit-learn می‌پردازیم و نحوه استفاده از آن در حل مسائل رگرسیونی را با مثال‌های عملی توضیح خواهیم داد.


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

جنگل تصادفی یک الگوریتم یادگیری ماشین است که از تعداد زیادی درخت تصمیم (Decision Tree) تشکیل شده است. هر درخت روی یک نمونه تصادفی از داده‌ها آموزش دیده و پیش‌بینی می‌کند. سپس، نتایج تمام درخت‌ها با هم ترکیب می‌شوند (معمولاً با میانگین گرفتن در مسائل رگرسیون)، تا یک پیش‌بینی دقیق‌تر و پایدارتر به دست آید.

در مورد رگرسیون، این روش به نام RandomForestRegressor در کتابخانه Scikit-learn پیاده‌سازی شده است.


مزایای RandomForestRegressor

  1. عدم نیاز به تنظیم دقیق هایپر-پارامترها: در مقایسه با مدل‌های دیگر، جنگل تصادفی به طور کلی بدون تنظیم فراوان هایپر-پارامترها عملکرد خوبی دارد.
  2. مقاومت بالا نسبت به بیش‌برازش (Overfitting): به دلیل استفاده از تعداد زیادی درخت و نمونه‌برداری تصادفی، این مدل تمایل کمتری به بیش‌برازش دارد.
  3. مدل‌سازی غیرخطی: قادر به مدل‌سازی روابط پیچیده و غیرخطی بین ویژگی‌ها و متغیر هدف است.
  4. قابلیت محاسبه اهمیت ویژگی‌ها: می‌توان از جنگل تصادفی برای شناسایی ویژگی‌های مهم استفاده کرد.

نحوه کارکرد RandomForestRegressor

هر درخت در جنگل تصادفی:

  • روی یک زیرمجموعه تصادفی از داده‌ها (با جایگذاری – Bootstrapping) آموزش داده می‌شود.
  • در هر گره، فقط زیرمجموعه‌ای تصادفی از ویژگی‌ها برای انتخاب بهترین ویژگی اسپلیت (split) در نظر گرفته می‌شود.

در مرحله پیش‌بینی، خروجی تمام درخت‌ها میانگین گرفته می‌شود و به عنوان نتیجه نهایی ارائه می‌شود.


استفاده از RandomForestRegressor در Scikit-learn

ابتدا مراحل اصلی استفاده از این کلاس را مرور می‌کنیم:

1. وارد کردن کتابخانه‌ها

from sklearn.ensemble import RandomForestRegressor
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error, r2_score
import numpy as np

2. بارگزاری و آماده‌سازی داده‌ها

فرض کنید داده‌هایمان در قالب یک DataFrame به نام df موجود است و ستون هدف target نام دارد.

X = df.drop('target', axis=1)
y = df['target']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

3. ایجاد و آموزش مدل

model = RandomForestRegressor(n_estimators=100, random_state=42)
model.fit(X_train, y_train)

4. پیش‌بینی و ارزیابی

y_pred = model.predict(X_test)

mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)

print(f'MSE: {mse:.2f}')
print(f'R2 Score: {r2:.2f}')

5. مشاهده اهمیت ویژگی‌ها

import pandas as pd
feature_importances = pd.Series(model.feature_importances_, index=X.columns)
print(feature_importances.sort_values(ascending=False))

تنظیمات مهم (Hyperparameters)

برخی از پارامترهای مهم RandomForestRegressor عبارتند از:

پارامترتوضیح
n_estimatorsتعداد درخت‌های در جنگل
max_depthحداکثر عمق هر درخت
min_samples_splitحداقل تعداد نمونه‌ها لازم برای اسپلیت یک گره
min_samples_leafحداقل تعداد نمونه‌ها لازم در یک گره برگ
max_featuresحداکثر تعداد ویژگی‌ها که برای اسپلیت در هر گره در نظر گرفته می‌شود

مثال کامل

import pandas as pd
from sklearn.ensemble import RandomForestRegressor
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error, r2_score

# داده‌های نمونه
data = {
    'feature1': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
    'feature2': [10, 9, 8, 7, 6, 5, 4, 3, 2, 1],
    'target': [100, 200, 300, 400, 500, 600, 700, 800, 900, 1000]
}
df = pd.DataFrame(data)

X = df[['feature1', 'feature2']]
y = df['target']

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

model = RandomForestRegressor(n_estimators=100, random_state=42)
model.fit(X_train, y_train)

y_pred = model.predict(X_test)

mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)

print(f'MSE: {mse:.2f}')
print(f'R2 Score: {r2:.2f}')

کاربردهای عملی

  • پیش‌بینی قیمت خانه‌ها
  • پیش‌بینی تقاضا در مدیریت زنجیره تأمین
  • پیش‌بینی میزان فروش
  • پیش‌بینی آلاینده‌ها در محیط زیست
  • پیش‌بینی عملکرد دانشجویان

نتیجه‌گیری

الگوریتم جنگل تصادفی (Random Forest) یکی از قدرتمندترین روش‌های رگرسیون در یادگیری ماشین است که به خوبی می‌تواند با داده‌های پیچیده و غیرخطی کار کند. کلاس RandomForestRegressor در Scikit-learn ابزاری کاربردی برای استفاده از این الگوریتم است که با سادگی و انعطاف‌پذیری بالا، قابلیت استفاده در پروژه‌های مختلف را فراهم می‌کند.

با استفاده از این کلاس، می‌توانید به راحتی مدلی قوی برای پیش‌بینی مقادیر عددی بسازید و حتی اهمیت ویژگی‌های داده‌هایتان را نیز استخراج کنید.


منابع

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *