وبلاگ
رگرسیون خطی چیست؟ راهنمای Linear Regression، کاربردها و نحوه کار
رگرسیون خطی یا Linear Regression یکی از سادهترین و مهمترین الگوریتمهای یادگیری ماشین است که برای مدلسازی رابطه بین یک متغیر وابسته و یک یا چند متغیر مستقل استفاده میشود. اگر هدف شما پیشبینی یک مقدار عددی مانند قیمت خانه، میزان فروش، حقوق یا تقاضای یک محصول باشد، رگرسیون یکی از روشهایی است که باید بشناسید.
ایده اصلی رگرسیون خطی ساده است: مدل تلاش میکند خطی پیدا کند که رابطه میان دادههای ورودی و خروجی را تا حد ممکن توضیح دهد. این خط سپس میتواند برای تخمین مقدار خروجی در دادههای جدید مورد استفاده قرار گیرد.
تعریف کوتاه: رگرسیون خطی روشی آماری و الگوریتمی برای مدلسازی رابطه خطی بین متغیرهاست که میتواند برای پیشبینی یک خروجی عددی استفاده شود.
سرفصل محتوا:
رگرسیون خطی چیست؟
در سادهترین حالت، رگرسیون خطی تلاش میکند رابطه بین یک متغیر ورودی و یک متغیر خروجی را با یک خط مستقیم توضیح دهد.
فرض کنید میخواهیم رابطه بین ساعات مطالعه و نمره امتحان را بررسی کنیم. ساعات مطالعه متغیر مستقل یا ورودی و نمره امتحان متغیر وابسته یا خروجی است. اگر افزایش ساعات مطالعه با افزایش نمره همراه باشد، میتوانیم از یک مدل رگرسیون خطی برای تخمین این رابطه استفاده کنیم.
مدل رگرسیون خطی ساده معمولاً به شکل زیر نوشته میشود:
در این رابطه:
- y: مقدار متغیر وابسته یا خروجی
- x: متغیر مستقل یا ورودی
- β0: عرض از مبدأ یا Intercept
- β1: ضریب متغیر مستقل یا Slope
- ε: خطا یا بخشی از تغییرات خروجی که مدل توضیح نمیدهد
هدف مدل این است که مقادیر مناسب برای ضرایب را پیدا کند تا خروجی پیشبینیشده تا حد امکان به مقدار واقعی نزدیک باشد.
رگرسیون خطی ساده و چندگانه چه تفاوتی دارند؟
رگرسیون خطی فقط به یک متغیر ورودی محدود نمیشود. بر اساس تعداد متغیرهای مستقل، دو حالت مهم وجود دارد.
رگرسیون خطی ساده
در Simple Linear Regression تنها یک متغیر مستقل داریم. برای مثال، پیشبینی نمره دانشآموز بر اساس ساعات مطالعه.
مثال: Hours Studied → Exam Score
رگرسیون خطی چندگانه
در Multiple Linear Regression چند متغیر مستقل برای پیشبینی یک خروجی عددی استفاده میشود.
برای مثال، قیمت یک خانه ممکن است بر اساس متغیرهایی مانند متراژ، تعداد اتاقها، سن ساختمان و فاصله از مرکز شهر پیشبینی شود.
مثال: Area + Rooms + Age + Location → House Price
فرم کلی مدل را میتوان به صورت زیر نمایش داد:
رگرسیون خطی چگونه کار میکند؟
مدل رگرسیون خطی مجموعهای از ضرایب را یاد میگیرد که بهترین برازش ممکن را برای دادههای آموزشی ایجاد کنند. برای این کار باید مشخص کنیم منظورمان از «بهترین خط» چیست.
اگر مدل برای یک نمونه مقدار ŷ را پیشبینی کند و مقدار واقعی y باشد، اختلاف میان این دو مقدار نشاندهنده خطای پیشبینی است.

تابع هزینه در رگرسیون خطی چیست؟
برای پیدا کردن بهترین ضرایب مدل، باید میزان خطا را اندازهگیری کنیم. یکی از رایجترین معیارها در رگرسیون خطی Mean Squared Error یا MSE است.
در MSE، اختلاف بین مقدار واقعی و مقدار پیشبینیشده برای هر نمونه به توان دو میرسد و سپس میانگین این خطاها محاسبه میشود.
مدل تلاش میکند ضرایبی را پیدا کند که مقدار تابع هزینه را کاهش دهند. در نتیجه، هرچه MSE کمتر باشد، پیشبینیهای مدل در مجموع به مقادیر واقعی نزدیکتر هستند.
البته MSE تنها معیار ارزیابی رگرسیون نیست و معیارهایی مانند MAE، RMSE و R² نیز در پروژههای واقعی کاربرد زیادی دارند.
حداقل مربعات و روش Ordinary Least Squares
یکی از روشهای کلاسیک برای پیدا کردن ضرایب رگرسیون خطی، Ordinary Least Squares (OLS) یا روش حداقل مربعات معمولی است.
ایده OLS این است که ضرایب مدل به گونهای انتخاب شوند که مجموع مربعات خطاهای پیشبینی حداقل شود. به همین دلیل، رگرسیون خطی در حالت کلاسیک یک مسئله بهینهسازی مشخص و قابل حل دارد.
برای برخی مسائل، ضرایب را میتوان بهصورت تحلیلی محاسبه کرد و در مسائل دیگر میتوان از روشهای عددی مانند Gradient Descent استفاده کرد.
Gradient Descent در رگرسیون خطی
Gradient Descent یا نزول گرادیان یک روش بهینهسازی تکرارشونده است که میتواند برای پیدا کردن پارامترهای مناسب مدل استفاده شود.
ایده آن این است که از یک مقدار اولیه برای پارامترها شروع کنیم و در هر مرحله در جهتی حرکت کنیم که مقدار تابع هزینه کاهش پیدا کند.
یکی از پارامترهای مهم در Gradient Descent، Learning Rate یا نرخ یادگیری است. نرخ یادگیری تعیین میکند اندازه هر گام در فرایند بهینهسازی چقدر باشد.
- Learning Rate خیلی کوچک: همگرایی میتواند بسیار کند شود.
- Learning Rate خیلی بزرگ: الگوریتم ممکن است از نقطه بهینه عبور کند یا ناپایدار شود.
- Learning Rate مناسب: معمولاً باعث میشود مدل با سرعت مناسب به جواب همگرا شود.
در رگرسیون خطی با تابع هزینه MSE، سطح هزینه نسبت به پارامترهای مدل ساختاری محدب دارد؛ بنابراین برخلاف بسیاری از مسائل غیرمحدب، مشکل حداقلهای محلی متفاوتی وجود ندارد و در شرایط مناسب روشهای بهینهسازی میتوانند به کمینه سراسری برسند.
تفاوت Regression و Classification چیست؟
یکی از اشتباهات رایج در شروع یادگیری ماشین، یکی دانستن Regression و Classification است. هر دو میتوانند از یادگیری با ناظر استفاده کنند، اما نوع خروجی آنها متفاوت است.
| ویژگی | Regression | Classification |
|---|---|---|
| نوع خروجی | مقدار عددی | کلاس یا دسته |
| مثال | پیشبینی قیمت خانه | تشخیص اسپم بودن ایمیل |
| نمونه خروجی | 125.5 | Spam / Not Spam |
| نوع یادگیری | معمولاً Supervised | معمولاً Supervised |
اگر خروجی سؤال شما یک مقدار عددی مانند قیمت، درآمد، دما یا میزان فروش باشد، مسئله میتواند یک مسئله Regression باشد. اگر خروجی یکی از چند کلاس مشخص باشد، معمولاً با Classification مواجه هستیم.
فرضهای مهم رگرسیون خطی
رگرسیون خطی زمانی عملکرد و تفسیر بهتری دارد که برخی فرضهای آماری آن تا حد قابل قبولی برقرار باشند. این فرضها بهویژه هنگام استفاده از رگرسیون برای استنباط آماری اهمیت زیادی دارند.
رابطه خطی
مدل فرض میکند رابطه میان متغیرهای توضیحی و خروجی را بتوان به شکل خطی نسبت به پارامترها مدل کرد. اگر رابطه واقعی کاملاً غیرخطی باشد، یک مدل خطی ساده ممکن است نتواند ساختار داده را به خوبی توضیح دهد.
استقلال خطاها
در بسیاری از کاربردهای کلاسیک، فرض میشود خطاهای مدل نسبت به یکدیگر مستقل باشند. این موضوع در دادههای سری زمانی اهمیت ویژهای پیدا میکند.
همسانی واریانس
در برخی کاربردهای آماری، فرض میشود پراکندگی خطاها در محدودههای مختلف پیشبینی تقریباً ثابت باشد. تغییر شدید این پراکندگی میتواند نشانهای از Heteroscedasticity باشد.
همخطی چندگانه
در رگرسیون خطی چندگانه، اگر متغیرهای مستقل ارتباط بسیار زیادی با یکدیگر داشته باشند، تفسیر ضرایب میتواند دشوار شود. این مسئله با عنوان Multicollinearity شناخته میشود.
چگونه عملکرد مدل رگرسیون خطی را ارزیابی کنیم؟
صرفاً نگاه کردن به خط رگرسیون برای ارزیابی یک مدل کافی نیست. باید از معیارهای مناسب استفاده کنیم و عملکرد مدل را روی دادههایی که برای آموزش استفاده نشدهاند نیز بررسی کنیم.
MAE
Mean Absolute Error میانگین قدر مطلق اختلاف میان مقدار واقعی و پیشبینیشده است. تفسیر آن نسبتاً ساده است، زیرا در همان واحد متغیر هدف بیان میشود.
MSE
Mean Squared Error میانگین مربع خطاهاست. به دلیل توان دوم، خطاهای بزرگ را بیشتر جریمه میکند.
RMSE
Root Mean Squared Error جذر MSE است و مانند متغیر هدف در همان واحد اندازهگیری بیان میشود.
R²
R-squared یا ضریب تعیین نشان میدهد مدل چه مقدار از تغییرات متغیر هدف را در چارچوب تعریف این معیار توضیح میدهد. با این حال، R² بهتنهایی معیار کافی برای ارزیابی کیفیت یک مدل نیست.
دادههای پرت چه تأثیری بر رگرسیون خطی دارند؟
رگرسیون خطی، بهخصوص زمانی که از کمینهسازی خطای مربعی استفاده میشود، میتواند نسبت به برخی دادههای پرت حساس باشد. یک مشاهده بسیار دور از الگوی اصلی ممکن است تأثیر زیادی بر خط برازش داشته باشد.
به همین دلیل پیش از آموزش مدل باید دادهها بررسی شوند و مشخص شود نقاط پرت ناشی از خطای ثبت داده هستند یا واقعاً بخشی از رفتار مسئله محسوب میشوند.
حذف خودکار تمام نقاط پرت نیز راهکار درستی نیست؛ زیرا ممکن است همین نقاط، اطلاعات مهمی درباره رفتار واقعی سیستم در اختیار ما قرار دهند.
رگرسیون خطی چه کاربردهایی دارد؟
پیشبینی قیمت
یکی از مثالهای شناختهشده، تخمین قیمت خانه بر اساس متراژ، تعداد اتاقها، موقعیت و سایر ویژگیهاست.
فروش و تقاضا
کسبوکارها میتوانند از مدلهای رگرسیون برای برآورد فروش یا تقاضای آینده بر اساس متغیرهای مرتبط استفاده کنند.
تحلیل مالی
رگرسیون خطی در تحلیل رابطه میان متغیرهای اقتصادی و مالی و همچنین برخی مدلهای مالی کاربرد دارد.
علوم و پژوهش
پژوهشگران میتوانند از رگرسیون برای بررسی رابطه میان متغیرهای کمی استفاده کنند؛ البته تفسیر علی باید با طراحی پژوهش و روش آماری مناسب پشتیبانی شود و صرفاً از وجود یک ضریب رگرسیون نمیتوان رابطه علت و معلولی نتیجه گرفت.
علوم زیستی و پزشکی
در تحلیل دادههای زیستی و پزشکی، رگرسیون میتواند برای مدلسازی رابطه میان متغیرهای کمی و بررسی اثر متغیرهای توضیحی استفاده شود. انتخاب مدل و تفسیر نتایج باید متناسب با نوع داده و طراحی مطالعه انجام شود.
یک مثال ساده از رگرسیون خطی
فرض کنید اطلاعات مربوط به ساعات مطالعه و نمره امتحان چند دانشآموز را در اختیار داریم:
| ساعات مطالعه | نمره |
|---|---|
| 1 | 52 |
| 2 | 58 |
| 3 | 64 |
| 4 | 70 |
| 5 | 77 |
در این مثال، هدف این است که مدلی پیدا کنیم که رابطه میان ساعات مطالعه و نمره را تقریب بزند. پس از آموزش مدل، میتوانیم مثلاً ساعات مطالعه یک دانشآموز جدید را به مدل بدهیم و یک نمره پیشبینیشده دریافت کنیم.
البته چنین مدلی به معنای آن نیست که افزایش هر ساعت مطالعه الزاماً باعث افزایش مشخصی در نمره میشود. رگرسیون میتواند یک رابطه آماری را مدل کند، اما اثبات رابطه علت و معلولی به شواهد و طراحی پژوهشی مناسب نیاز دارد.
پیادهسازی رگرسیون خطی با Python
یکی از رایجترین ابزارها برای پیادهسازی مدلهای یادگیری ماشین در Python، کتابخانه scikit-learn است.
برای مثال، میتوان یک مدل Linear Regression را به شکل زیر ساخت:
from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(X_train, y_train)
predictions = model.predict(X_test)
در این فرایند، X_train شامل ویژگیهای ورودی و y_train شامل مقادیر هدف برای آموزش مدل هستند. پس از آموزش، مدل میتواند برای دادههای جدید پیشبینی انجام دهد.
در یک پروژه واقعی، فقط اجرای fit() و predict() کافی نیست. تقسیم داده به مجموعههای آموزش و آزمون، آمادهسازی ویژگیها، بررسی دادههای پرت، انتخاب معیار ارزیابی و تحلیل خطاها نیز بخش مهمی از فرایند مدلسازی هستند.
مزایای رگرسیون خطی
- سادگی: مفهوم و ساختار مدل نسبتاً ساده و قابل فهم است.
- سرعت: آموزش مدل در بسیاری از مجموعهدادهها بسیار سریع انجام میشود.
- قابلیت تفسیر: ضرایب مدل میتوانند اطلاعات مفیدی درباره رابطه میان ویژگیها و خروجی ارائه کنند.
- مناسب برای Baseline: رگرسیون خطی میتواند یک مدل پایه مناسب برای مقایسه با مدلهای پیچیدهتر باشد.
- نیاز محاسباتی پایین: در بسیاری از مسائل به منابع محاسباتی زیادی نیاز ندارد.
- کاربرد گسترده: در تحلیل داده، آمار، اقتصاد، علوم و یادگیری ماشین کاربرد دارد.
محدودیتها و معایب رگرسیون خطی
- وابستگی به فرض خطی بودن: اگر رابطه واقعی بهشدت غیرخطی باشد، مدل خطی ممکن است عملکرد مناسبی نداشته باشد.
- حساسیت به دادههای پرت: بهخصوص در استفاده از خطای مربعی، نقاط پرت میتوانند بر مدل اثر زیادی بگذارند.
- مشکل Multicollinearity: همبستگی شدید میان ویژگیهای ورودی میتواند تفسیر ضرایب را دشوار کند.
- Underfitting: یک مدل بیش از حد ساده ممکن است ساختارهای پیچیده موجود در داده را ثبت نکند.
- عدم اثبات علیت: ضریب رگرسیون بهتنهایی نشاندهنده رابطه علت و معلولی نیست.
رگرسیون خطی و Overfitting و Underfitting
یکی از اهداف اصلی مدلسازی، ساخت مدلی است که نه فقط روی دادههای آموزشی، بلکه روی دادههای جدید نیز عملکرد مناسبی داشته باشد.
Overfitting زمانی رخ میدهد که مدل بیش از حد به دادههای آموزشی وابسته شود و عملکرد آن روی دادههای جدید کاهش پیدا کند. از طرف دیگر، Underfitting زمانی رخ میدهد که مدل بیش از حد ساده باشد و حتی ساختارهای مهم دادههای آموزشی را نیز به خوبی یاد نگیرد.
رگرسیون خطی به دلیل ساختار نسبتاً سادهاش در برخی مسائل پیچیده ممکن است دچار Underfitting شود. در چنین شرایطی میتوان مدلهای دیگر یا ویژگیهای مناسبتر را بررسی کرد.
چه زمانی از رگرسیون خطی استفاده کنیم؟
رگرسیون خطی انتخاب مناسبی است زمانی که:
- متغیر هدف عددی است.
- شواهدی از یک رابطه تقریباً خطی میان ویژگیها و خروجی وجود دارد.
- به یک مدل سریع و قابل تفسیر نیاز داریم.
- میخواهیم یک Baseline برای مقایسه مدلهای پیچیدهتر ایجاد کنیم.
- داده و مسئله با فرضهای مدل سازگار هستند.
اگر رابطه میان متغیرها پیچیده و غیرخطی باشد، ممکن است روشهایی مانند درخت تصمیم، Random Forest، Gradient Boosting یا مدلهای غیرخطی عملکرد مناسبتری داشته باشند.
تفاوت رگرسیون خطی با سایر الگوریتمهای رگرسیون
| الگوریتم | ایده اصلی | پیچیدگی |
|---|---|---|
| Linear Regression | مدلسازی رابطه خطی | پایین |
| Polynomial Regression | مدلسازی رابطه با ویژگیهای چندجملهای | متوسط |
| Decision Tree Regression | تقسیم داده به نواحی مختلف | متوسط |
| Random Forest Regression | ترکیب چندین درخت تصمیم | بالاتر |
| Gradient Boosting | ساخت تدریجی مجموعهای از مدلهای ضعیفتر | بالاتر |
این مقایسه به معنی بهتر بودن یک الگوریتم در همه شرایط نیست. انتخاب مدل باید بر اساس ساختار داده، هدف پروژه، قابلیت تفسیر موردنیاز و عملکرد روی دادههای دیدهنشده انجام شود.
یادگیری ماشین را از یک الگوریتم شروع کنید، اما با پروژه ادامه دهید
رگرسیون خطی یکی از بهترین نقاط شروع برای درک مفاهیمی مانند ویژگی، هدف، خطا، آموزش مدل و ارزیابی در Machine Learning است.
رگرسیون خطی در یادگیری ماشین چه جایگاهی دارد؟
رگرسیون خطی یکی از الگوریتمهای پایه در Supervised Learning است. یادگیری آن فقط به شناخت یک الگوریتم محدود نمیشود؛ بلکه بسیاری از مفاهیم بنیادی Machine Learning مانند ویژگیها، متغیر هدف، تابع هزینه، آموزش، پیشبینی و ارزیابی مدل را میتوان با آن بهخوبی یاد گرفت.
پس از یادگیری رگرسیون خطی، درک الگوریتمهای پیچیدهتر نیز سادهتر میشود؛ زیرا بسیاری از مفاهیم اصلی مدلسازی و ارزیابی در آنها نیز وجود دارند.
مسیر یادگیری رگرسیون خطی
اگر قصد دارید رگرسیون را به شکل عملی یاد بگیرید، بهتر است این مسیر را دنبال کنید:
- آشنایی با Python
- یادگیری NumPy و pandas
- مبانی آمار و احتمال
- شناخت متغیرهای مستقل و وابسته
- درک مفهوم Regression
- یادگیری Linear Regression
- آشنایی با MSE، MAE، RMSE و R²
- تقسیم داده به Train و Test
- پیادهسازی مدل با scikit-learn
- بررسی خطا و ارزیابی مدل
- مقایسه با مدلهای غیرخطی و الگوریتمهای پیشرفتهتر
- حل یک پروژه واقعی
بعد از یادگیری رگرسیون، میتوانید سراغ الگوریتمهای دیگر یادگیری با ناظر مانند Classification بروید و در ادامه مفاهیمی مانند Clustering و سایر روشهای یادگیری ماشین را یاد بگیرید.
سؤالات متداول درباره رگرسیون خطی
رگرسیون خطی چیست؟
رگرسیون خطی روشی برای مدلسازی رابطه خطی بین یک یا چند متغیر مستقل و یک متغیر وابسته است. یکی از کاربردهای مهم آن پیشبینی مقادیر عددی مانند قیمت، فروش یا تقاضاست.
رگرسیون خطی در یادگیری ماشین چه نوع الگوریتمی است؟
رگرسیون خطی معمولاً یک الگوریتم یادگیری با ناظر یا Supervised Learning محسوب میشود، زیرا مدل با استفاده از دادههایی که مقدار هدف آنها مشخص است آموزش میبیند.
تفاوت Regression و Classification چیست؟
در Regression خروجی معمولاً یک مقدار عددی است، در حالی که در Classification خروجی یک کلاس یا دسته مشخص است. برای مثال، پیشبینی قیمت یک خانه Regression و تشخیص اسپم بودن ایمیل Classification است.
آیا رگرسیون خطی فقط برای یک متغیر مستقل استفاده میشود؟
خیر. در Simple Linear Regression یک متغیر مستقل داریم، اما در Multiple Linear Regression میتوان چندین متغیر مستقل را برای پیشبینی یک متغیر هدف استفاده کرد.
تابع هزینه در رگرسیون خطی چیست؟
تابع هزینه معیاری برای اندازهگیری میزان خطای مدل است. Mean Squared Error یا MSE یکی از رایجترین معیارها برای آموزش و ارزیابی رگرسیون خطی است.
آیا رگرسیون خطی برای دادههای غیرخطی مناسب است؟
اگر رابطه واقعی میان ویژگیها و متغیر هدف بهشدت غیرخطی باشد، یک مدل خطی ساده ممکن است عملکرد مناسبی نداشته باشد. در چنین شرایطی میتوان مدلها یا تبدیلهای مناسب دیگری را بررسی کرد.
آیا رگرسیون خطی میتواند رابطه علت و معلولی را ثابت کند؟
خیر. رگرسیون میتواند رابطه آماری میان متغیرها را مدل کند، اما وجود یک رابطه رگرسیونی بهتنهایی به معنی اثبات رابطه علت و معلولی نیست.
آیا برای استفاده از رگرسیون خطی باید Gradient Descent را بدانیم؟
برای درک عمیقتر فرایند بهینهسازی دانستن Gradient Descent مفید است، اما رگرسیون خطی کلاسیک را میتوان با روشهای دیگری مانند Ordinary Least Squares نیز حل کرد. بنابراین Gradient Descent تنها روش ممکن برای آموزش رگرسیون خطی نیست.
جمعبندی
رگرسیون خطی یکی از پایهایترین روشهای مدلسازی و پیشبینی در آمار و یادگیری ماشین است. این الگوریتم با پیدا کردن رابطهای خطی میان ویژگیهای ورودی و یک متغیر هدف، امکان توضیح رابطه دادهها و پیشبینی مقادیر جدید را فراهم میکند.
مفاهیمی مانند Linear Regression، MSE، MAE، RMSE، R²، Gradient Descent و Train/Test Split بخش مهمی از پایههای یادگیری ماشین را تشکیل میدهند و یادگیری آنها مسیر ورود به الگوریتمهای پیشرفتهتر را هموار میکند.
با این حال، رگرسیون خطی برای همه مسائل مناسب نیست. اگر رابطه دادهها غیرخطی، دادهها بسیار پیچیده یا نقاط پرت و همخطی شدید وجود داشته باشند، باید مدل و روش مناسبتری انتخاب شود.
از یادگیری الگوریتم تا ساخت مدل واقعی
اگر میخواهید Machine Learning را فقط بهصورت تئوری یاد نگیرید، مسیر یادگیری را با Python، تحلیل داده، مدلسازی و پروژههای واقعی ادامه دهید.