رگرسیون چندمتغیره

**مدل خطی عمومی** یک مدل خطی آماری است. به شکل زیر می‌توان نوشت:

: \mathbf{Y} = \mathbf{X}\mathbf{B} + \mathbf{U},

که در آن Y یک ماتریس با ردیف‌های اندازه‌گیری‌های چند متغیره است، X یک ماتریس است که می‌تواند یک ماتریس طراحی باشد، B یک ماتریس شامل متغیرهایی است که معمولاً تخمین زده می‌شوند و U ماتریسی است که شامل خطاها و نویز است. خطاها معمولاً نسبت به اندازه‌گیری‌ها و طبق یک توزیع معمولی چندمتغیره ناهمبسته فرض می‌شوند. اگر که خطاها مطابق با یک توزیع معمولی چند متغیره نباشند، مدل خطی تعمیم‌یافته برای منطقی تر کردن فرض‌ها در مورد Y و U مورد استفاده قرار می‌گیرد.

مدل خطی عمومی تعدادی از مدل‌های آماری مختلف را با هم مرتبط می‌کند: آنالیز واریانس، آنالیز کوواریانس، آنالیز چندمتغیره واریانس، آنالیز چندمتغیره کوواریانس، رگرسیون خطی معمولی، آزمون تی استیودنت و آزمون اف. مدل خطی عمومی تعمیم یافته‌ای از چند مدل رگرسیون خطی در مورد بیش از یک متغیر وابسته است. اگر Y، B و U بردارهای ستون باشند، معادله ماتریس بالا بیانگر چند رگرسیون خطی خواهد بود.

آزمون‌های فرضی با مدل خطی عمومی را می‌توان به دو روش انجام داد: چندمتغیره یا به شکل آزمون‌های متعدد تک متغیره مستقل. در آزمون‌های چندمتغیره ستون‌های Y با هم مورد بررسی قرار می‌گیرند درحالیکه در آزمون‌های تک متغیره ستون‌های Y مستقلاً بررسی می‌شوند. به‌طور مثال به عنوان آزمون‌های تک متغیره با ماتریس طراحی یکسان.

## رگرسیون چند خطی

### ساختار ریاضی مسئله
رگرسیون چند خطی تعمیمی از رگرسیون خطی است با در نظر گرفتن بیش از یک متغیر مستقل و یک مورد خاص مدل‌های خطی عمومی تشکیل شده با محدود کردن تعداد متغیرهای وابسته به یک. به عنوان مثال اگر فرض کنیم متغیر ما m بُعد دارد یعنی \vec{x} = [x_1, x_2, \dots, x_m] مسئله رگرسیون به یک مسئله بهینه‌سازی برای پیدا کردن m+1 پارامتر تبدیل می‌شود. به این معنی که ما یک پارامتر چند متغیره به اسم \vec{\beta} = [\beta_0, \beta_1, \cdots, \beta_m] داریم و سعی می‌کنیم که متغیر وابسته که همان y است را با ترکیبی خطی از **<math>\vec{x}</math>** بردارد ورودی، تخمین بزنیم یعنی y \approx \beta_0 + \sum_{i=1}^m \beta_i\times x_i. حال اگر یک بعد دیگر به متغیر **<math>\vec{x}</math>** اضافه کنیم و مقدارش را همیشه عدد ثابت 1
 در نظر بگیریم (x_0 = 1) و **<math>\vec{x}</math>** را به صورتِ \vec{x} = [1, x_1, x_2, \dots, x_m] تغییر دهیم، تخمینی که از **<math>y</math>** داریم در واقع ضرب نقطه ای بردار ورودی و بردار پارامترهای ماست یعنی y \approx \sum_{i=0}^ m \beta_i \times x_i = \vec{\beta} \,\,.\, \vec{x}. حال فرض کنیم که تعداد مثال‌هایی که قرار است برای تخمین پارامترها استفاده کنیم n
 است و این مثال‌ها را به این شکل نمایش دهیم D = (\vec{x_{1}}, y_1), \cdots (\vec{x_{n}}, y_n). پارامتر بهینه پارامتری است که یک تابع هزینه را به حداقل برساند و تخمینهایی ما را به متغیر وابسته بسیار نزدیک کند. تابع هزینه را با جمع مربع تفاضل تخمین‌ها با متغیر وابسته تعریف می‌کنیم، به این شکل که L(D, \vec{\beta}) = \sum_{i=1}^{n} (\vec{\beta} \, . \, \vec{x_{i}} - y_i)^2، با این حساب پارامتر بهینه می‌شود:

\vec{\hat{\beta}} = \mbox{argmin}_{\vec{\beta}} L(D, \vec{\beta}) = \mbox{argmin}_{\vec{\beta}} \sum_{i=1}^{n} (\vec{\beta} \, . \, \vec{x_{i}} - y_i)^2

### تخمین پارامتر بهینه از روش [[کمترین مربعات]]
در این روش برای بدست آوردن \vec{\hat{\beta}} یا همان پارامتر بهینه، از تابع L(D, \vec{\beta})نسبت به \vec{\beta} گرادیان می‌گیریم و گرادیان را برابر صفر قرار می‌دهیم و پارامتر نمونه را بدست می‌آوریم. از آنجا که تابع L(D, \vec{\beta}) نسبت به \vec{\beta} تابعی کاملاً محدب است، در نقطه مینیمم گرادیان ما صفر خواهد بود و این روش پارامتر بهینه را بدست می‌دهد. برای تسهیل کار شکل تابع را با بکارگیری چند ماتریس ساده می‌کنیم. دو ماتریس برای این کار نیاز داردیم ماتریس X و ماتریس Y. ماتریس X ماتریس ورودهای چندمتغیره ماست. هر سطر معادل یک نمونه از داده ماست، سطر iام برابر است با iامین نمونه ورودی ما یعنی بردار \vec{x_{i}}، از اینرو X یک ماتریس n\times (m+1) خواهد بود. ماتریس Y از طرف دیگر برابر است با مجموعه متغیرهای وابسته داده ما. سطر iام این ماتریس برابر است با متغیر وابسته برای iامین نمونه داده ما یا همان y_i. ماتریس Y یک ماتریس n\times 1 است. با کمک این دو ماتریس می‌توان تابع هزینه را به شکل ذیل تعریف کرد:

L(D, \vec{\beta})= ||X\vec{\beta} - Y||^2 = (X\vec{\beta} - Y)^T (X\vec{\beta} - Y) = Y^{T}Y- Y^{T}X\vec{\beta}- \vec{\beta}^{T}X^TY+\vec{\beta}^{T}X^TX\vec{\beta}

حال گرادیان این تابع را نسبت به \vec{\beta} پیدا می‌کنیم که می‌شود:

\frac{\partial L(D, \vec{\beta})}{\partial \vec{\beta}}= \frac{\partial \left(Y^{T}Y- Y^{T}X\vec{\beta}- \vec{\beta}^{T}X^TY+\vec{\beta}^{T}X^TX\vec{\beta}\right)}{\partial \vec{\beta}} = -2X^TY + 2X^TX\vec{\beta}

با برابر قرار دادن گرادیان با صفر پارامتر بهینه بدست می‌آید:

-2X^TY + 2X^TX\vec{\beta} = 0 \Rightarrow X^TY  = X^TX\vec{\beta} \Rightarrow \vec{\hat{\beta}} = (X^TX)^{-1}X^TY

پس پارامتر بهینه ما برابر است با:

{\bf \vec{\hat{\beta}} = (X^TX)^{-1}X^TY}

### تخمین پارامتر بهینه از روش گرادیان کاهشی تصادفی (Stochastic Gradient Descent)
روش پارامتر تخمین پارامتر بهینه از طریق کمترین مربعات ممکن است چند اشکال اساسی داشته باشد. یکی آنکه محاسبه(X^TX)^{-1} ممکن است زمانبر باشد. بُعدِ ماتریس مربعی X^TX برابر است با (m+1) \times (m+1) و اگر بعد m بالا باشد زمان محاسبه معکوس این ماتریس می‌تواند مسئله ساز شود. مضاف بر این، ماتریس ممکن است معکوس پذیر نباشد. از این رو روش‌های کاراتر و سریعتری برای تخمین پارامتر بهینه مورد استفاده قرار می‌گیرد. یکی از این روش‌ها روش گرادیان کاهشی تصادفی است. در این روش هر بار یک مثال را به صورت اتفاقی از نمونه‌های داده انتخاب کرده، گرادیان تابع هزینه را حساب می‌کنیم و کمی در جهت خلاف گرادیان پارامتر را حرکت می‌دهیم تا به یک پارامتر جدید برسیم. گرادیان جهت موضعی بیشترین افزایش را در تابع به ما نشان می‌دهد، برای بیشترین کاهش موضعی در خلاف جهت گرادیان باید حرکت کرد. اینکار را آنقدر ادامه می‌دهیم که گرادیان به اندازه کافی به صفر نزدیک شود. بجای اینکه داده‌ها را به صورت تصادفی انتخاب کنیم می‌توانیم به ترتیب داده شماره 1تا داده شماره n را انتخاب کنیم و بعد دوباره به داده اولی برگردیم و این کار را به صورت چندین انجام دهیم تا گرادیان تابع به اندازه کافی به صفر نزدیک شود. از لحاظ ریاضی این کار را می‌توان به شکل پایین انجام داد، پارامتر \vec{\beta} را در ابتدا به صورت تصادفی مقدار دهی می‌کنیم و بعد برای داده i ام و تمامی jها، یعنی از j=1 تا j=m+1 تغییر پایین را اعمال می‌کنیم، دراینجا \alpha همان مقداریست که در جهت گرادیان هربار حرکت می‌کنیم و 
\left(y_i - \vec{x_i}.\vec{\beta}\right)\vec{x_{i,j}} مشتق جزئی داده i ام در بُعد j ام است:



 \begin{cases}\mbox{Initialize}\,\,\vec{\beta^{\,old}}\,\, \mbox{randomly}\\\mbox{loop until convergence :}\\ \,\,\mbox{for}\,\,\,\,i=0\,\,\,\,\mbox{to}\,\,\,\,n :\\\,\,\,\,\,\,\mbox{for}\,\,\,\,j=0\,\,\,\,\mbox{to}\,\,\,\,m: \\ \,\,\,\,\,\,\,\,\,\,\,\,\vec{\beta^{\,new}_j} = \vec{\beta^{\,old}_j} + \alpha \left(y_i - \vec{\beta^{\,old}}\, . \,\vec{x_i}\right)\vec{x_{i,j}}\\\,\,\,\,\,\,\beta^{\,old}= \beta^{\,new}\end{cases}
 

### تفسیر احتمالی از طریق درست نمایی بیشینه
برای بدست آوردن پارامتر بهینه \vec{\hat{\beta}} تابع هزینه یعنی L(D, \vec{\beta}) را به حداقل می‌رسانیم. می‌توان به همین پارامتر بهینه از روش درست نمایی بیشینه هم رسید. فرض می‌کنیم که متغیر وابسته یعنی y یک متغیر تصادفی است که مقدارش از یک توزیع طبیعی (توزیع گاوسی) پیروی می‌کند. این توزیع احتمال، واریانس ثابتی به اسم \sigma دارد ولی میانگین آن ترکیبی خطی از متغیرهای مستقل یعنی \vec{x} = [1, x_1, x_2, \dots, x_m] است. به عبارت دیگر میانگین ما برابر است با \vec{\beta} \, . \, \vec{x}. با احتساب میانگین و واریانس توزیع متغیر وابسته ما می‌شود y\sim N(\vec{\beta} \, . \, \vec{x}, \sigma). حال اگر فرض کنیم داده‌های ما نسبت به هم مستقل هستند تابع درست نمایی برای تمام داده‌ها می‌شود:

H(D, \vec{\beta}) = \prod_{i=1}^{n}Pr(y_i|\vec{x_i}\,\,;\vec{\beta}, \sigma) = \prod_{i=1}^{n}\frac{1}{\sqrt{2\pi}\sigma}exp\left(-\frac{\left(y_i - \vec{\beta} \, . \, \vec{x_i} \right)^2}{2\sigma^2}\right)

حال باید به دنبال پارامتری باشیم که این تابع بزرگنمایی را بیشینه کند. از آنجا که تابع لگاریتم مطلقاً صعودیست، بجای بیشینه کردن این تابع لگاریتمش را هم می‌شود بیشنه کرد و پارامتر بهینه را از آن طریق پیدا کرد:

I(D, \vec{\beta}) = \log\prod_{i=1}^{n}Pr(y_i|\vec{x_i}\,\,;\vec{\beta}, \sigma) = \log\prod_{i=1}^{n}\frac{1}{\sqrt{2\pi}\sigma}exp\left(-\frac{\left(y_i - \vec{\beta} \, . \, \vec{x_i} \right)^2}{2\sigma^2}\right) = n\log\frac{1}{\sqrt{2\pi}\sigma} - \frac{1}{2\sigma^2}\sum_{i=1}^n \left(y_i - \vec{\beta} \, . \, \vec{x_i} \right)^2

پارامتر بهینه از این طریق برابر است با:

c_{\vec{\beta}} I(D, \vec{\beta}) =
\mbox{argmax}_{\vec{\beta}} \left(n\log\frac{1}{\sqrt{2\pi}\sigma} - \frac{1}{2\sigma^2}\sum_{i=1}^n \left(y_i - \vec{\beta} \, . \, \vec{x_i} \right)^2\right) = \mbox{argmin}_{\vec{\beta}} \sum_{i=1}^n \left(y_i - \vec{\beta} \, . \, \vec{x_i} \right)^2 = \mbox{argmin}_{\vec{\beta}} L(D, \vec{\beta}) = \vec{\hat{\beta}}

همان‌طور که دیدم پارامتری که I(D, \vec{\beta}) را بیشینه می‌کند همان پارامتری است که L(D, \vec{\beta}) را به حداقل می‌رساند. این به معنی معادل بودن روش کمترین مربعات با روش درست نمایی بیشنه در رگرسیون خطی است.

## تنظیم مدل (Regularization)
پیچیدگی مدل‌های پارامتری با تعداد پارامترهای مدل و مقادیر آن‌ها سنجیده می‌شود. هرچه این پیچیدگی بیشتر باشد خطر بیش‌برازش (Overfitting) برای مدل بیشتر است. پدیده بیش‌برازش زمانی رخ می‌دهد که مدل بجای یادگیری الگوهای داده، داده را را حفظ می‌کند و در عمل یادگیری به خوبی انجام نمی‌شود. برای جلوگیری از بیش‌برازش در مدل‌های خطی مانند رگرسیون خطی یا رگرسیون لجستیک جریمه‌ای به تابع هزینه اضافه می‌شود تا از افزایش زیاد پارامترها جلوگیری شود. به این کار تنظیم مدل یا Regularization گفته می‌شود. دو راه متداول تنظیم مدل‌های خطی روش‌های L_1 و L_2 هستند. در روش L_1 ضریبی از نُرمِ L_1به تابع هزینه اضافه می‌شود و در روش L_2 ضریبی از نُرمِ L_2 که همان نُرمِ اقلیدسی است به تابع هزینه اضافه می‌شود.

در تنظیم مدل به روش L_1 تابع هزینه را به این شکل تغییر می‌دهیم:

 L_r(D, \vec{\beta}) = L(D, \vec{\beta}) + \lambda ||\vec{\beta}||_1= \sum_{i=1}^{n} (\vec{\beta} \, . \, \vec{x_{i}} - y_i)^2 + \lambda\sum_{k=0}^m |\beta_k|

این روش تنظیم مدل که به روش لاسو (Lasso) نیز شهرت دارد باعث می‌شود که بسیاری از پارامترهای مدل نهائی صفر شوند و مدل به اصلاح خلوت (Sparse) شود.

در تنظیم مدل به روش L_2 تابع هزینه را به این شکل تغییر می‌دهیم:

 L_r(D, \vec{\beta}) = L(D, \vec{\beta}) + \lambda ||\vec{\beta}||^2_2= \sum_{i=1}^{n} (\vec{\beta} \, . \, \vec{x_{i}} - y_i)^2 + \lambda\sum_{k=0}^m \beta_k^2

در روش تنظیم از طریق L_2 سعی می‌شود طول اقلیدسی بردار  \vec{\beta} کوتاه نگه داشته شود. \lambda در روش L_1 و L_2 یک عدد مثبت است که میزان تنظیم مدل را معین می‌کند. هرچقدر \lambdaکوچکتر باشد جریمه کمتری برا بزرگی نرم بردار پارامترها یعنی \vec{\beta} پرداخت می‌کنیم. مقدار ایدئال \lambda از طریق آزمایش بر روی داده اعتبار (Validation Data) پیدا می‌شود.

## کاربردها
یک کاربرد مدل خطی عمومی در تحلیل پویش‌های مغزی متعدد در آزمایش‌های علمی است که Y شامل اطلاعات رسیده از پوینده‌های مغز است، X شامل متغیرهای تجربی طراحی و اختلال‌ها است. به‌طور معمول به روش تک متغیره آزموده می‌گردد (معمولاً در این پیکربندی به یک تک متغیر جرم ارجاع داده می‌شود) و معمولاً به نقشه‌برداری متغیری آماری معروف است.

## جستارهای وابسته
* رگرسیون خطی
* رگرسیون لجستیک
* رگرسیون پواسون

## منابع

رده:آمار چندمتغیره
رده:تحلیل رگرسیون
رده:مدل‌های رگرسیون