رگرسیون در یادگیری ماشین «Regression» یک تکنیک نظارتشده «Supervised Learning» است که هدف آن پیشبینی یک مقدار عددی پیوسته بر اساس یک یا چند ویژگی مستقل است. این روش روابط بین متغیرها را پیدا میکند تا بتوان پیشبینیهایی انجام داد. در این مقاله از سری مقالات آموزشی پی استور به بررسی و تشریح تکنیک رگرسیون در یادگیری ماشین خواهیم پرداخت.
رگرسیون چیست؟
رگرسیون یکی از مهمترین تکنیکهای یادگیری ماشین نظارتشده است که برای پیشبینی مقادیر پیوسته بر اساس مجموعهای از متغیرهای مستقل استفاده میشود. این روش با تحلیل رابطه بین متغیرها، مدلی ایجاد میکند که بتواند الگوهای موجود در دادهها را شناسایی کرده و بر اساس آنها پیشبینیهای دقیقی انجام دهد. به عنوان مثال، میتوان از رگرسیون برای پیشبینی قیمت یک خانه بر اساس عواملی مانند اندازه، موقعیت مکانی و تعداد اتاقها استفاده کرد. رگرسیون نهتنها در علوم داده و یادگیری ماشین بلکه در بسیاری از زمینههای دیگر مانند اقتصاد، پزشکی، و مهندسی نیز کاربرد گستردهای دارد.
مدلهای رگرسیون به اشکال مختلفی مانند رگرسیون خطی، رگرسیون چندجملهای، رگرسیون بردار پشتیبان، و مدلهای مبتنی بر درخت تصمیم پیادهسازی میشوند. یکی از مزایای اصلی این روش، سادگی و قابلیت تفسیر آن است که باعث میشود در بسیاری از تحلیلهای آماری و پیشبینیهای تجاری مورد استفاده قرار گیرد. با این حال، رگرسیون محدودیتهایی نیز دارد؛ به عنوان مثال، در صورت وجود روابط پیچیده و غیرخطی بین متغیرها، مدلهای ساده مانند رگرسیون خطی نمیتوانند عملکرد مناسبی داشته باشند. به همین دلیل، انتخاب نوع مناسب رگرسیون بسته به ویژگیهای داده و مسئله موردنظر از اهمیت بالایی برخوردار است.
در رگرسیون، دو نوع متغیر وجود دارد:
- متغیر وابسته (Dependent Variable – Target): متغیری که قصد پیشبینی آن را داریم، مانند قیمت خانه.
- متغیرهای مستقل (Independent Variables – Features): متغیرهای ورودی که بر پیشبینی تأثیر میگذارند، مانند موقعیت مکانی، تعداد اتاقها و غیره.
مسئله تحلیل رگرسیون زمانی کاربرد دارد که مقدار خروجی یک مقدار واقعی یا پیوسته باشد، مانند «حقوق» یا «وزن». مدلهای مختلفی برای رگرسیون وجود دارند، اما سادهترین آنها رگرسیون خطی (Linear Regression) است.
انواع رگرسیون در یادگیری ماشین
رگرسیون بر اساس تعداد متغیرهای پیشبینیکننده و ماهیت رابطه بین متغیرها به انواع مختلفی تقسیم میشود:
۱- رگرسیون خطی ساده (Simple Linear Regression)
رگرسیون خطی یکی از سادهترین و پرکاربردترین مدلهای آماری است. در این روش فرض میشود که بین متغیر مستقل و وابسته یک رابطه خطی وجود دارد، به این معنی که تغییرات متغیر وابسته متناسب با تغییرات متغیر مستقل است. به عنوان مثال، پیشبینی قیمت یک خانه بر اساس اندازه آن.
۲- رگرسیون خطی چندگانه (Multiple Linear Regression)
این مدل، رگرسیون خطی ساده را گسترش میدهد و از چندین متغیر مستقل برای پیشبینی متغیر هدف استفاده میکند. به عنوان مثال، پیشبینی قیمت خانه بر اساس چندین ویژگی مانند اندازه، موقعیت مکانی، تعداد اتاقها و غیره.
۳- رگرسیون چندجملهای (Polynomial Regression)
این نوع رگرسیون برای مدلسازی روابط غیرخطی بین متغیر وابسته و متغیرهای مستقل استفاده میشود. این روش با افزودن جملات چندجملهای به مدل خطی، روابط پیچیدهتری را شناسایی میکند. به عنوان مثال، برای پیشبینی روند غیرخطی مانند رشد جمعیت در طول زمان، از این نوع رگرسیون استفاده میشود.
۴- رگرسیون Ridge و Lasso
این دو مدل نسخههای منظمشده (Regularized) از رگرسیون خطی هستند که با جریمه دادن به ضرایب بزرگ از بیشبرازش (Overfitting) جلوگیری میکنند. وقتی تعداد ویژگیها زیاد باشد و خطر بیشبرازش وجود داشته باشد، از این نوع الگوریتمهای رگرسیون استفاده میشود.
۵- رگرسیون بردار پشتیبان (Support Vector Regression – SVR)
SVR نوعی الگوریتم رگرسیون بر اساس ماشین بردار پشتیبان (Support Vector Machine – SVM) است. SVM معمولاً برای مسائل طبقهبندی استفاده میشود، اما میتوان از آن برای رگرسیون نیز بهره برد. در SVR، یک ابرصفحه (Hyperplane) پیدا میشود که مجموع مربعات باقیمانده بین مقادیر پیشبینیشده و واقعی را به حداقل میرساند.
۶- رگرسیون درخت تصمیم (Decision Tree Regression)
در این روش، از ساختار درختی برای تصمیمگیری استفاده میشود، به این صورت که هر شاخه درخت نمایانگر یک تصمیم و هر برگ، نشاندهنده یک خروجی است. به عنوان مثال، برای پیشبینی رفتار مشتریان بر اساس ویژگیهایی مانند سن، درآمد و غیره، از این نوع رگرسیون استفاده میشود.
۷- رگرسیون جنگل تصادفی (Random Forest Regression)
جنگل تصادفی (Random Forest) یک روش تجمیعی (Ensemble) است که چندین درخت تصمیم را ساخته و هر درخت بر روی یک زیرمجموعه متفاوت از دادههای آموزشی تمرین میکند. پیشبینی نهایی از طریق میانگینگیری از پیشبینیهای همه درختها به دست میآید. به عنوان مثال، میتوان از این روش برای تحلیل ترک مشتریان یا دادههای فروش استفاده کرد.
معیارهای ارزیابی رگرسیون
در یادگیری ماشین، ارزیابی مدل نشاندهنده میزان عملکرد آن است. برخی از معیارهای محبوب برای ارزیابی مدلهای رگرسیون عبارتند از:
۱- خطای میانگین مطلق (Mean Absolute Error – MAE): میانگین مقدار مطلق اختلاف بین مقادیر پیشبینیشده و واقعی.
$$MAE = {1 \over n}\sum\limits_{i = 1}^n {|{y_i} – {{\hat y}_i}|} $$
که در آن \({{y_i}}\) مقدار واقعی نمونه \(i\) و \({{{\hat y}_i}}\) مقدار پیش بینی شده نمونه \(i\) ام میباشد.
۲- خطای میانگین مربعات (Mean Squared Error – MSE): میانگین مجذور اختلاف بین مقادیر پیشبینیشده و واقعی.
$$MSE = {1 \over n}\sum\limits_{i = 1}^n {{{({y_i} – {{\hat y}_i})}^2}} $$
۳- ریشه خطای میانگین مربعات (Root Mean Squared Error – RMSE): جذر مقدار MSE که یک معیار پرکاربرد است.
$$RMSE = \sqrt {{1 \over n}\sum\limits_{i = 1}^n {{{({y_i} – {{\hat y}_i})}^2}} } $$
۴- تابع هزینه هابر (Huber Loss): یک تابع هزینه ترکیبی که از MAE به MSE برای خطاهای بزرگتر تغییر میکند و بین مقاومت در برابر نویز و حساسیت به دادههای پرت، تعادل برقرار میکند.
$${L_\delta } = \left\{ {\matrix{ {\matrix{ {{1 \over 2}{{(y – \hat y)}^2}} & {if|(y – \hat y) < \delta |} \cr } } \cr {\matrix{ {\delta ((y – \hat y) – {۱ \over 2}\delta )} & {otherwize} \cr } } \cr } } \right.$$
۵- ضریب تعیین (R2 – Score): مقدار بزرگتر نشاندهنده برازش بهتر مدل است و مقدار آن بین ۰ تا ۱ متغیر است.
$${R^2} = 1 – {{\sum\limits_{i = 1}^n {{{({y_i} – {{\hat y}_i})}^2}} } \over {\sum\limits_{i = 1}^n {{{({y_i} – \bar y)}^2}} }}$$
مثال از مدل رگرسیون در یادگیری ماشین
به عنوان مثال، اگر یک مجموعه داده مسکن (Housing Dataset) داشته باشیم و بخواهیم قیمت خانه را پیشبینی کنیم، میتوانیم از رگرسیون خطی استفاده کنیم. کد زیر نمونهای از پیادهسازی رگرسیون خطی در پایتون (Python) است:
import numpy as np import pandas as pd import matplotlib.pyplot as plt from sklearn.model_selection import train_test_split from sklearn.linear_model import LinearRegression from sklearn.metrics import mean_squared_error, r2_score # بارگذاری مجموعه داده data = pd.read_csv("housing_data.csv") # انتخاب ویژگیها و متغیر هدف X = data[["Size"]] y = data["Price"] # تقسیم دادهها به مجموعه آموزش و تست X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # ایجاد مدل رگرسیون خطی model = LinearRegression() 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"Mean Squared Error: {mse}") print(f"R2 Score: {r2}") # ترسیم نمودار plt.scatter(X_test, y_test, color="blue", label="Actual Prices") plt.plot(X_test, y_pred, color="red", linewidth=2, label="Predicted Prices") plt.xlabel("Size of House") plt.ylabel("Price") plt.legend() plt.show()
این کد با استفاده از کتابخانههای Scikit-Learn و Pandas، یک مدل رگرسیون خطی را آموزش داده و آن را ارزیابی میکند. همچنین، نموداری از مقادیر واقعی و پیشبینیشده را نمایش میدهد.
کاربردهای رگرسیون
- پیشبینی قیمتها (Predicting Prices): برای پیشبینی قیمت خانه بر اساس اندازه، موقعیت مکانی و سایر ویژگیها استفاده میشود.
- پیشبینی روندها (Forecasting Trends): برای پیشبینی میزان فروش یک محصول بر اساس دادههای فروش گذشته کاربرد دارد.
- شناسایی عوامل خطر (Identifying Risk Factors): برای شناسایی عوامل خطر در بیماران قلبی با استفاده از دادههای پزشکی بیمار مورد استفاده قرار میگیرد.
- تصمیمگیری (Making Decisions): میتوان از آن برای توصیه خرید سهام بر اساس دادههای بازار استفاده کرد.
مزایای رگرسیون
- سادگی درک و تفسیر: مدلهای رگرسیون بهراحتی قابل فهم و تحلیل هستند.
- مقاومت در برابر دادههای پرت (Outliers): برخی از مدلهای رگرسیون میتوانند با دادههای پرت سازگار شوند.
- قابلیت پردازش روابط خطی: بهخوبی روابط خطی را در دادهها مدیریت میکند.
معایب رگرسیون
- فرض خطی بودن (Linearity): بسیاری از مدلهای رگرسیون فرض میکنند که رابطه بین متغیرهای مستقل و وابسته خطی است.
- حساسیت به همخطی چندگانه (Multicollinearity): زمانی که دو یا چند متغیر مستقل بهشدت با یکدیگر همبستگی داشته باشند، ممکن است مدل دچار مشکل شود.
- نامناسب برای روابط بسیار پیچیده: در شرایطی که رابطه بین متغیرها بسیار پیچیده و غیرخطی باشد، مدلهای رگرسیون عملکرد مناسبی ندارند.
نتیجهگیری
رگرسیون در یادگیری ماشین یک تکنیک اساسی برای پیشبینی مقادیر پیوسته بر اساس ویژگیهای ورودی است. این روش در کاربردهای دنیای واقعی مانند پیشبینی قیمتها، تحلیل روندها و ارزیابی ریسکها مورد استفاده قرار میگیرد. با وجود سادگی و کارایی بالا، رگرسیون ابزاری مهم برای درک روابط بین دادهها محسوب میشود.