برنامه نویسی

آزادسازی پتانسیل رگرسیون جنگل تصادفی: راهنمای پیاده‌سازی پایتون با تنظیم فراپارامتر.

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

رگرسیون تصادفی جنگل

Random Forest Regressor یک الگوریتم یادگیری مجموعه ای است که درخت های تصمیم گیری و مفهوم تصادفی را ترکیب می کند. این الگوریتم به خانواده الگوریتم یادگیری نظارت شده تعلق دارد. این الگوریتم در حین کار بر روی داده ها، درخت های تصمیم گیری متعددی را ایجاد می کند و پیش بینی های همه درختان را ترکیب می کند تا خروجی نهایی را ارائه دهد.

نام Random Forest برگرفته از دو مفهوم است: Randomness and forests. جنگل به معنای مجموعه ای از درختان است که این مدل با تولید درخت های تصمیم گیری متعدد و ترکیب همه آنها ایجاد می کند.

در الگوریتم درخت تصمیم از تمام داده ها برای ایجاد تنها یک درخت و پیش بینی با استفاده از آن استفاده می شود. اما در الگوریتم جنگل تصادفی با استفاده از ورودی داده شده توسط کاربر، درخت ایجاد می کند n_estimators و با ترکیب خروجی از همه این درخت ها، پیش بینی یا خروجی می دهد.

رگرسیور تصادفی جنگل چگونه کار می کند

  1. آماده سازی داده ها :
    مرحله اول آماده سازی داده های آموزشی است. هر نقطه داده باید با مجموعه ای از ویژگی ها و یک مقدار هدف عددی مربوطه نشان داده شود.

  2. تولید درختان :
    در این مرحله الگوریتم درختان را با توجه به ورودی داده شده توسط کاربر به پارامتر ایجاد می کند n_estimators. هر درخت با استفاده از یک گروه تصادفی کوچک از داده ها از مجموعه داده آموزشی ساخته می شود. این گروه از داده ها به صورت تصادفی انتخاب می شوند و می توانند بارها مورد استفاده قرار گیرند.

  3. رشد درختان :
    هر درخت با استفاده از گروه های کوچکتری از داده ها ساخته می شود که با استفاده از ویژگی های انتخاب شده ایجاد می شوند. ما این فرآیند را تا زمانی انجام می دهیم که نتوانیم داده ها را بیشتر تقسیم کنیم یا شرایط خاصی را برآورده کنیم. هدف ما این است که مطمئن شویم مقادیری که می‌خواهیم پیش‌بینی کنیم تا حد امکان در هر گروه کوچک‌تر مشابه هستند.

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

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

تنظیم بیش از حد پارامتر

Hyper Parameters رفتار الگوریتم را کنترل می کند و این پارامترها باید قبل از فرآیند یادگیری یا آموزش تنظیم شوند. تنظیم این پارامترها می تواند بر عملکرد مدل تأثیر بگذارد. ما در اینجا دو پارامتر مهم هایپر و تنظیم آنها را مورد بحث قرار خواهیم داد.

  1. n_estimators : این پارامتر تعداد tress تصمیم را در جنگل تصادفی تعیین می کند. با افزایش تعداد درختان می توان عملکرد مدل را بهبود بخشید اما پیچیدگی محاسباتی را نیز افزایش داد. ما می‌توانیم مقادیر مختلفی را انتخاب کنیم و یکی از مقادیری را که بهترین نتایج را می‌دهد، نهایی کنیم.

  2. max_depth : نشان دهنده حداکثر عمق درخت تصمیم است. یک درخت عمیق‌تر می‌تواند روابط پیچیده‌تری را در داده‌ها ثبت کند، اما می‌تواند به بیش از حد برازش نیز منجر شود. با تنظیم این پارامتر، می توانیم تعادل مناسبی بین پیچیدگی و تعمیم مدل پیدا کنیم.

برای تنظیم این پارامترها می‌توانیم از جستجوی شبکه، جستجوی تصادفی یا بهینه‌سازی بیزی استفاده کنیم.

جستجوی گرید شامل تصمیم گیری مجموعه ای از مقادیر برای هر پارامتر فوق و ارزیابی جامع همه ترکیبات ممکن است.

جستجوی تصادفی به صورت تصادفی از ترکیب هایپرپارامترها نمونه برداری کرده و عملکرد آنها را ارزیابی می کند.

بهینه سازی بیزی از یک مدل احتمالی برای جستجوی فراپارامترهای امیدوارکننده استفاده می کند.

برای توضیح مختصر و اطلاعات بیشتر در مورد تنظیم پارامترهایپر می توانید به این لینک مراجعه کنید

پیاده سازی رگرسیون جنگل تصادفی با استفاده از پایتون

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

مرحله 1: وارد کردن کتابخانه های ضروری

ابتدا کتابخانه های لازم را برای بارگذاری و دستکاری داده ها وارد می کنیم.

import numpy as np
import pandas as pd
from matplotlib import pyplot as plt
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

مرحله 2: بارگیری داده ها

ما از داده های حقوق و دستمزد برای این مثال ها استفاده خواهیم کرد.

sal_d = pd.read_csv('Position_Salaries.csv')
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

داده های ما به این شکل خواهد بود –

توضیحات تصویر

مرحله 3: ایجاد متغیرهای x و y

x متغیر مستقل و y متغیر وابسته خواهد بود.

x = sal_d.iloc[:,1:-1].values
y = sal_d.iloc[:,-1].values
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

مرحله 4: تنظیم فراپارامتر

در این مرحله استفاده خواهیم کرد GridSearchCV برای تنظیم هایپر پارامتر

## Importing required libraries.
from sklearn.ensemble import RandomForestRegressor
from sklearn.model_selection import GridSearchCV
from sklearn.metrics import mean_squared_error

## Defining param grid 
param_grid = {
    'n_estimators': [100, 200, 300],
    'max_depth': [None, 5, 10]
}

## Creating a random forest regressor object
rf_regressor = RandomForestRegressor(random_state=42)
# Perform grid search for hyperparameter tuning
grid_search = GridSearchCV(rf_regressor, param_grid, cv=5, scoring='neg_mean_squared_error')
grid_search.fit(x, y)

# Getting the best parameters and best score
best_params = grid_search.best_params_
best_score = -grid_search.best_score_

print("Best Parameters:", best_params)
print("Best Score (MSE):", best_score)

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

مرحله 5: آموزش مدل

در این مرحله از پارامترهای تنظیم شده بالا و کل مجموعه داده برای آموزش مدل خود استفاده خواهیم کرد.

rf_regressor_best = RandomForestRegressor(n_estimators=best_params['n_estimators'], max_depth=best_params['max_depth'], random_state=42)

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

کد بالا یک مدل با استفاده از پارامتر تنظیم شده در مرحله قبل ایجاد می کند.
در زیر کد متناسب با کل مجموعه داده است.

# Fiting the model to the training data using the best parameters
rf_regressor_best.fit(x, y)

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

مرحله 6: پیش بینی ها

در این مرحله ما برای ورودی منحصر به فرد که در مجموعه داده نخواهد بود پیش بینی می کنیم.

rf_regressor_best.predict([[6.5]])
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

نتیجه

با استفاده از تمام این مراحل، هر کسی می تواند با استفاده از پایتون، رگرسیور جنگل تصادفی را پیاده سازی کند. همچنین پارامترهای بیشتری از 2 وجود دارد که با تنظیم این پارامترها می توانیم مدل خود را بیشتر بهبود ببخشیم.

تمام این مراحل توسط من در پایتون انجام می شود همچنین این اطلاعات تئوری از اینترنت و برخی از دوره های udemi است. که در کلماتم نوشتم اگر اشتباهی در بالا وجود دارد لطفا نظر دهید.

نوشته های مشابه

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

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

دکمه بازگشت به بالا