رگرسیون خطی: راهنمای جامع با پایتون
رگرسیون خطی یکی از پرکاربردترین و سادهترین الگوریتمهای یادگیری ماشین است که برای پیشبینی یک متغیر وابسته (هدف) بر اساس یک یا چند متغیر مستقل (پیشبین) استفاده میشود. این الگوریتم فرض میکند که یک رابطه خطی بین متغیرهای مستقل و وابسته وجود دارد. در این مقاله، به بررسی عمیق رگرسیون خطی، مفاهیم کلیدی، انواع آن، نحوه پیادهسازی در پایتون و ارزیابی مدل خواهیم پرداخت.
مفاهیم کلیدی
قبل از ورود به جزئیات پیادهسازی، درک مفاهیم اساسی رگرسیون خطی ضروری است:
- متغیر وابسته (Dependent Variable): متغیری که قصد پیشبینی آن را داریم. معمولاً با ‘y’ نشان داده میشود.
- متغیر مستقل (Independent Variable): متغیری که برای پیشبینی متغیر وابسته استفاده میشود. معمولاً با ‘x’ نشان داده میشود.
- خط رگرسیون (Regression Line): خطی که بهترین برازش را با دادهها انجام میدهد و رابطه بین متغیرهای مستقل و وابسته را نشان میدهد.
- شیب (Slope): نشاندهنده میزان تغییر در متغیر وابسته به ازای یک واحد تغییر در متغیر مستقل است.
- عرض از مبدأ (Intercept): مقدار متغیر وابسته زمانی که متغیر مستقل برابر با صفر است.
- خطای باقیمانده (Residual Error): تفاوت بین مقدار واقعی متغیر وابسته و مقدار پیشبینی شده توسط مدل.
انواع رگرسیون خطی
رگرسیون خطی به دو دسته اصلی تقسیم میشود:
- رگرسیون خطی ساده (Simple Linear Regression): زمانی که فقط یک متغیر مستقل برای پیشبینی متغیر وابسته استفاده میشود.
- رگرسیون خطی چندگانه (Multiple Linear Regression): زمانی که دو یا چند متغیر مستقل برای پیشبینی متغیر وابسته استفاده میشود.
معادله رگرسیون خطی ساده به صورت زیر است:
y = β0 + β1x + ε
که در آن:
- y: متغیر وابسته
- x: متغیر مستقل
- β0: عرض از مبدأ
- β1: شیب
- ε: خطای باقیمانده
معادله رگرسیون خطی چندگانه به صورت زیر است:
y = β0 + β1x1 + β2x2 + … + βnxn + ε
که در آن:
- y: متغیر وابسته
- x1, x2, …, xn: متغیرهای مستقل
- β0: عرض از مبدأ
- β1, β2, …, βn: شیبهای مربوط به هر متغیر مستقل
- ε: خطای باقیمانده
پیادهسازی رگرسیون خطی در پایتون
برای پیادهسازی رگرسیون خطی در پایتون، میتوان از کتابخانههایی مانند Scikit-learn، Statsmodels و NumPy استفاده کرد. در اینجا، از Scikit-learn به دلیل سادگی و کارایی آن استفاده میکنیم.
آمادهسازی دادهها
ابتدا، دادههای خود را آماده کنید. این شامل بارگیری دادهها، پاکسازی دادهها و تقسیم دادهها به مجموعههای آموزشی و آزمایشی است.
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score
# بارگیری دادهها (مثال: از یک فایل CSV)
data = pd.read_csv('data.csv')
# انتخاب متغیرهای مستقل و وابسته
X = data[['feature1', 'feature2']] # متغیرهای مستقل
y = data['target'] # متغیر وابسته
# تقسیم دادهها به مجموعههای آموزشی و آزمایشی
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) و ضریب تعیین (R2) استفاده کنید.
# محاسبه میانگین مربعات خطا
mse = mean_squared_error(y_test, y_pred)
# محاسبه ضریب تعیین
r2 = r2_score(y_test, y_pred)
print(f'میانگین مربعات خطا: {mse}')
print(f'ضریب تعیین: {r2}')
تفسیر نتایج
میانگین مربعات خطا (MSE): نشاندهنده میانگین مربع تفاوت بین مقادیر واقعی و مقادیر پیشبینی شده است. هرچه MSE کمتر باشد، مدل بهتر است.
ضریب تعیین (R2): نشاندهنده نسبت واریانس متغیر وابسته که توسط متغیرهای مستقل توضیح داده میشود. مقدار R2 بین 0 و 1 است. هرچه R2 به 1 نزدیکتر باشد، مدل بهتر است.
پیشفرضهای رگرسیون خطی
رگرسیون خطی بر اساس چند پیشفرض کلیدی استوار است. نقض این پیشفرضها میتواند منجر به نتایج نادرست شود. این پیشفرضها عبارتند از:
- خطی بودن (Linearity): رابطه بین متغیرهای مستقل و وابسته باید خطی باشد.
- استقلال خطاها (Independence of Errors): خطاها باید مستقل از یکدیگر باشند.
- همواری خطاها (Homoscedasticity): واریانس خطاها باید برای همه مقادیر متغیرهای مستقل ثابت باشد.
- نرمال بودن خطاها (Normality of Errors): خطاها باید به طور نرمال توزیع شده باشند.
بررسی این پیشفرضها و در صورت لزوم، اعمال تغییرات لازم برای بهبود مدل ضروری است.
نکات تکمیلی
- مقیاسبندی ویژگیها (Feature Scaling): مقیاسبندی ویژگیها میتواند به بهبود عملکرد مدل کمک کند، به خصوص زمانی که متغیرهای مستقل دارای مقیاسهای مختلفی هستند.
- انتخاب ویژگی (Feature Selection): انتخاب ویژگیهای مرتبط و حذف ویژگیهای غیرضروری میتواند به سادهسازی مدل و بهبود عملکرد آن کمک کند.
- تنظیم پارامترها (Hyperparameter Tuning): تنظیم پارامترهای مدل میتواند به بهبود عملکرد آن کمک کند.
نتیجهگیری
رگرسیون خطی یک ابزار قدرتمند و پرکاربرد برای پیشبینی و تحلیل دادهها است. با درک مفاهیم کلیدی، انواع آن، نحوه پیادهسازی در پایتون و ارزیابی مدل، میتوانید از این الگوریتم برای حل مسائل مختلف در زمینههای مختلف استفاده کنید. به یاد داشته باشید که بررسی پیشفرضهای رگرسیون خطی و اعمال تغییرات لازم برای بهبود مدل ضروری است.

بدون دیدگاه