الگوریتم رگرسیون خطی (Linear Regression) یکی از سادهترین و پرکاربردترین الگوریتمهای یادگیری نظارتشده (Supervised Learning) است که برای پیشبینی مقادیر عددی پیوسته استفاده میشود. هدف این الگوریتم، یافتن بهترین رابطه خطی بین متغیرهای ورودی (Features) و متغیر خروجی (Target) است.
رگرسیون خطی چگونه کار میکند؟
فرض کنید میخواهید با استفاده از متراژ خانه، قیمت آن را پیشبینی کنید. رگرسیون خطی تلاش میکند خطی پیدا کند که کمترین فاصله را با دادههای واقعی داشته باشد.
مدل رگرسیون خطی به شکل زیر است:
که در آن:
- ŷ: مقدار پیشبینیشده
- b₀: عرض از مبدأ (Intercept)
- b₁: شیب خط (Slope)
- x: مقدار ورودی
مثال ساده
| متراژ (متر) | قیمت (میلیون تومان) |
|---|---|
| 80 | 4000 |
| 100 | 5000 |
| 120 | 6100 |
| 150 | 7600 |
پس از آموزش، ممکن است مدل به رابطه زیر برسد:
اگر خانهای 130 متر باشد:
بنابراین قیمت تقریبی 6570 میلیون تومان پیشبینی میشود.
هدف الگوریتم
هدف، کمینه کردن مجموع مربع خطاها (Least Squares) است؛ یعنی فاصله بین مقادیر واقعی و پیشبینیشده تا حد ممکن کم باشد.
انواع رگرسیون خطی
1. رگرسیون خطی ساده (Simple Linear Regression)
فقط یک ویژگی ورودی وجود دارد.
مثال:
- متراژ → قیمت خانه
2. رگرسیون خطی چندگانه (Multiple Linear Regression)
چندین ویژگی برای پیشبینی استفاده میشود.
مثال:
- متراژ
- تعداد اتاق
- سن ساختمان
- موقعیت مکانی
همگی برای پیشبینی قیمت خانه استفاده میشوند.
مراحل آموزش
- جمعآوری دادهها
- پاکسازی دادهها
- تقسیم دادهها به Train و Test
- آموزش مدل
- ارزیابی عملکرد
- استفاده برای پیشبینی دادههای جدید
معیارهای ارزیابی
رایجترین معیارها عبارتاند از:
- MAE (Mean Absolute Error)
- MSE (Mean Squared Error)
- RMSE (Root Mean Squared Error)
- R² Score (ضریب تعیین)
هرچه:
- MAE کمتر باشد بهتر است.
- MSE کمتر باشد بهتر است.
- RMSE کمتر باشد بهتر است.
- R² به عدد 1 نزدیکتر باشد بهتر است.
مزایا
- ساده و سریع
- قابل تفسیر
- نیاز به منابع محاسباتی کم
- مناسب برای دادههای کوچک
- پایه بسیاری از مدلهای یادگیری ماشین
معایب
- فقط روابط خطی را مدل میکند.
- نسبت به دادههای پرت (Outliers) حساس است.
- اگر ویژگیها همبستگی زیادی داشته باشند (Multicollinearity)، عملکرد کاهش مییابد.
- برای روابط پیچیده مناسب نیست.
کاربردها
- پیشبینی قیمت خانه
- پیشبینی فروش
- تخمین درآمد
- پیشبینی مصرف انرژی
- پیشبینی دما
- تحلیل مالی
- پیشبینی هزینه بیمه
- تحلیل بازار
پیادهسازی در پایتون (Scikit-learn)
from sklearn.linear_model import LinearRegression from sklearn.model_selection import train_test_split # دادهها X = [[80],[100],[120],[150]] y = [4000,5000,6100,7600] # ساخت مدل model = LinearRegression() # آموزش model.fit(X, y) # پیشبینی prediction = model.predict([[130]]) print(prediction)
تفاوت رگرسیون خطی و طبقهبندی
| رگرسیون خطی | طبقهبندی |
|---|---|
| خروجی عددی | خروجی دستهای |
| پیشبینی قیمت | تشخیص اسپم |
| پیشبینی دما | تشخیص بیماری |
| پیشبینی فروش | تشخیص تقلب |
جمعبندی
رگرسیون خطی یکی از مهمترین الگوریتمهای یادگیری ماشین است که برای پیشبینی مقادیر عددی بر اساس روابط خطی بین متغیرها استفاده میشود. به دلیل سادگی، سرعت بالا و قابلیت تفسیر، معمولاً اولین الگوریتمی است که در پروژههای تحلیل داده و یادگیری ماشین به کار گرفته میشود. با این حال، زمانی که رابطه بین دادهها غیرخطی یا بسیار پیچیده باشد، مدلهای پیشرفتهتر مانند درخت تصمیم، جنگل تصادفی یا شبکههای عصبی معمولاً عملکرد بهتری خواهند داشت.