رگرسیون لجستیک

**رگرسیون لجستیک**  یک مدل آماری رگرسیون برای متغیرهای وابسته دوسویی مانند بیماری یا سلامت، مرگ یا زندگی است. این مدل را می‌توان به عنوان مدل خطی تعمیم‌یافته‌ای که از تابع لوجیت به عنوان تابع پیوند استفاده می‌کند و خطایش از توزیع چندجمله‌ای پیروی می‌کند، به‌حساب‌آورد.
منظور از دو سویی بودن، رخ داد یک واقعه تصادفی در دو موقعیت ممکنه است. به عنوان مثال خرید یا عدم خرید، ثبت نام یا عدم ثبت نام، ورشکسته شدن یا ورشکسته نشدن و … متغیرهایی هستند که فقط دارای دو موقعیت هستند و مجموع احتمال هر یک آن‌ها در نهایت یک خواهد شد. کاربرد این روش عمدتاً در ابتدای ظهور در مورد کاربردهای پزشکی برای احتمال وقوع یک بیماری مورد استفاده قرار می‌گرفت. لیکن امروزه در تمام زمینه‌های علمی کاربرد وسیعی یافته‌است. به عنوان مثال مدیر سازمانی می‌خواهد بداند در مشارکت یا عدم مشارکت کارمندان کدام متغیرها نقش پیش‌بینی دارند؟ مدیر تبلیغاتی می‌خواهد بداند در خرید یا عدم خرید یک محصول یا برند چه متغیرهایی مهم هستند؟ یک مرکز تحقیقات پزشکی می‌خواهد بداند در مبتلا شدن به بیماری عروق کرنری قلب چه متغیرهایی نقش پیش‌بینی‌کننده دارند؟ تا با اطلاع‌رسانی از احتمال وقوع کاسته شود.

رگرسیون لجستیک می‌تواند یک مورد خاص از مدل خطی عمومی و رگرسیون خطی دیده شود. مدل رگرسیون لجستیک، بر اساس فرض‌های کاملاً متفاوتی (دربارهٔ رابطه متغیرهای وابسته و مستقل) از رگرسیون خطی است. تفاوت مهم این دو مدل در دو ویژگی رگرسیون لجستیک می‌تواند دیده شود. اول توزیع شرطی y|\vec{x} یک توزیع برنولی به جای یک توزیع گوسی است چونکه متغیر وابسته دودویی است. دوم مقادیر پیش‌بینی احتمالاتی است و محدود بین بازه صفر و یک و به کمک تابع توزیع لجستیک به‌دست می‌آید رگرسیون لجستیک احتمال خروجی پیش‌بینی می‌کند.

این مدل به صورت

:\operatorname{logit}(p)=\ln\left(\frac{p}{1-p}\right) = \beta_0 + \beta_1 x_{1,i} + \cdots + \beta_k x_{k,i},

:i = 1, \dots, n,\,

است که

:p = \Pr(y_i = 1).\,

:p = \Pr(y_i = 1|\vec{x_i};\vec{\beta}) = \frac{e^{\beta_0 + \beta_1 x_{1,i} + \cdots + \beta_k x_{k,i}}}{1+e^{\beta_0 + \beta_1 x_{1,i} + \cdots + \beta_k x_{k,i}}} = \frac{1}{1+e^{-\left(\beta_0 + \beta_1 x_{1,i} + \cdots + \beta_k x_{k,i}\right)}}.

جایگزین=|بندانگشتی|320x320پیکسل|تابع لجستیک استاندارد
رگرسیون لجستیک را می‌توان توسط تابع لجستیک تعریف کرد. دامنه این تابع اعداد حقیقی هستند و برد این تابع بین صفر و یک می‌باشد. این تابع با \sigma:\mathbb R\rightarrow (0,1) نمایش داده می‌شود و به نحو پایین محاسبه می‌شود:

\sigma (t) = \frac{e^t}{e^t+1} = \frac{1}{1+e^{-t}}

با احتساب تابع لجستیک، رگرسیون لجستیک را می‌توان به شکل پایین بازنویسی کرد:

\Pr(y_i = 1|\vec{x_i};\vec{\beta}) = \frac{1}{1+e^{-\left(\beta_0 + \beta_1 x_{1,i} + \cdots + \beta_k x_{k,i}\right)}} = \sigma\left(\beta_0 + \beta_1 x_{1,i} + \cdots + \beta_k x_{k,i}\right)

## برآورد پارامترهای بهینه
برای به‌دست آوردن پارامترهای بهینه یعنی \vec{\beta} =[\beta_0, \beta_1, \cdots , \beta_k] می‌توان از روش برآورد درست نمایی بیشینه (Maximum Likelihood Estimation) استفاده کرد. اگر فرض کنیم که تعداد مثال‌هایی که قرار است برای تخمین پارامترها استفاده کنیم n
 است و این مثال‌ها را به این شکل نمایش دهیم D = (\vec{x_{1}}, y_1), \cdots (\vec{x_{n}}, y_n). پارامتر بهینه پارامتری است که برآورد درست نمایی را بیشینه کند، البته برای سادگی کار برآورد لگاریتم درست نمایی را بیشینه می‌کنیم. لگاریتم درست نمایی داده D برای پارامتر \vec{\beta} را با L(D, \vec{\beta}) نمایش می‌دهیم:

L(D, \vec{\beta}) = \log \left(\prod_{i=1}^{n} Pr(y_i=1|\vec{x_{i}}; \vec{\beta})^{y_i} \times Pr(y_i=0|\vec{x_{i}}; \vec{\beta})^{1-y_i}\right) =
 \sum_{i=1}^{n} y_i \times \log Pr(y_i=1|\vec{x_{i}}; \vec{\beta})  + (1-y_i) \log Pr(y_i=0|\vec{x_{i}}; \vec{\beta})  

اگر برای داده i ام y_i = 1 باشد، هدف افزایش\Pr\left(y_i = 1|\vec{x_i};\vec{\beta}\right) است و اگر y_i صفر باشد هدف افزایش مقدار \Pr\left(y_i = 0|\vec{x_i};\vec{\beta}\right) است. از این رو از فرمول Pr(y_i=1|\vec{x_{i}}; \vec{\beta})^{y_i} \times Pr(y_i=0|\vec{x_{i}}; \vec{\beta})^{1-y_i}  استفاده می‌کنیم که اگر y_i = 1 باشد، فرمول به ما \Pr\left(y_i = 1|\vec{x_i};\vec{\beta}\right) را بدهد و اگر y_i = 0 بود به ما \Pr\left(y_i = 0|\vec{x_i};\vec{\beta}\right) را بدهد.

حال برای به‌دست آوردن پارامتر بهینه باید \vec{\beta} یی پیدا کنیم که مقدار L(D, \vec{\beta}) را بیشینه کند. از آنجا که این تابع نسبت به \vec{\beta} مقعر است حتماً یک بیشینه مطلق دارد. برای پیدا کردن جواب می‌توان از روش گرادیان افزایشی از نوع تصادفی اش استفاده کرد (Stochastic Gradient Ascent). در این روش هر بار یک مثال را به‌صورت اتفاقی از نمونه‌های داده انتخاب کرده، گرادیان درست نمایی را حساب می‌کنیم و کمی در جهت گرادیان پارامتر را حرکت می‌دهیم تا به یک پارامتر جدید برسیم. گرادیان جهت موضعی بیشترین افزایش را در تابع به ما نشان می‌دهد، برای همین در آن جهت کمی حرکت می‌کنیم تا به بیشترین افزایش موضعی تابع برسیم. اینکار را آنقدر ادامه می‌دهیم که گرادیان به اندازه کافی به صفر نزدیک شود. به‌جای اینکه داده‌ها را به‌صورت تصادفی انتخاب کنیم می‌توانیم به ترتیب داده شماره 1تا داده شماره  n را انتخاب کنیم و بعد دوباره به داده اولی برگردیم و این کار را به‌صورت متناوب چندین بار انجام دهیم تا به اندازه کافی گرادیان به صفر نزدیک شود. از لحاظ ریاضی این کار را می‌توان به شکل پایین انجام داد، پارامتر \vec{\beta} را در ابتدا به‌صورت تصادفی مقدار دهی می‌کنیم و بعد برای داده  iام و تمامی  j‌ها، یعنی از  j=1 تا j=m+1 تغییر پایین را اعمال می‌کنیم، دراینجا \alpha همان مقداریست که در جهت گرادیان هربار حرکت می‌کنیم و 
\left(y_i - \frac{1}{1+e^{-\left(\beta_0 + \beta_1 x_{1,i} + \cdots + \beta_k x_{k,i}\right)}}\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 - \frac{1}{1+e^{-\left(\beta^{\,old}_0 + \beta^{\,old}_1 x_{1,i} + \cdots + \beta^{\,old}_k x_{k,i}\right)}}\right)\vec{x_{i,j}}\\\,\,\,\,\,\,\beta^{\,old}= \beta^{\,new}\end{cases}
 

## تنظیم مدل (Regularization)
پیچیدگی مدل‌های پارامتری با تعداد پارامترهای مدل و مقادیر آن‌ها سنجیده می‌شود. هرچه این پیچیدگی بیشتر باشد خطر بیش‌برازش (Overfitting) برای مدل بیش‌تر است. پدیده بیش‌برازش زمانی رخ می‌دهد که مدل به‌جای یادگیری الگوهای داده، داده را را حفظ کند و در عمل، فرآیند یادگیری به خوبی انجام نمی‌شود. برای جلوگیری از بیش‌برازش در مدل‌های خطی مانند رگرسیون خطی یا رگرسیون لجستیک جریمه‌ای به تابع هزینه اضافه می‌شود تا از افزایش زیاد پارامترها جلوگیری شود. تابع هزینه را در رگرسیون لجستیک با منفی لگاریتم درست‌نمایی تعریف می‌کنیم تا کمینه کردن آن به بیشینه کردن تابع درست نمایی بینجامد. به این کار نرمال‌سازی (تنظیم مدل یا Regularization) گفته می‌شود. دو راه متداول تنظیم مدل‌های خطی روش‌های L_1 و  L_2 هستند. در روش L_1 ضریبی از نُرمِ L_1 به تابع هزینه اضافه می‌شود و در روش L_2 ضریبی از نُرمِ L_2 که همان نُرمِ اقلیدسی است به تابع هزینه اضافه می‌شود.
بندانگشتی|446x446پیکسل|کانتورهای قرمز تابع هزینه را نمایش می‌دهند و اشکال آبی مقید سازی نرم پارامتر را. شکل سمت چپ مربوط به <math>L_1</math> است که پارامتر <math>\beta</math> با نابرابری <math>|\beta_1| + |\beta_2| \leq t</math> مقید شده‌است و شکل سمت راست مربوط به <math>L_2</math> است که پارامتر آن با نابرابری <math>\beta_1^2 + \beta_2^2 \leq t^2</math>  مقید شده‌است.
در تنظیم مدل به روش L_1 تابع هزینه را به این شکل تغییر می‌دهیم:

 L_r(D, \vec{\beta}) = -L(D, \vec{\beta}) + \lambda ||\vec{\beta}||_1= - \sum_{i=1}^{n} y_i \times \log Pr(y_i=1|\vec{x_{i}}; \vec{\beta})  + (1-y_i) \log Pr(y_i=0|\vec{x_{i}}; \vec{\beta})  + \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} y_i \times \log Pr(y_i=1|\vec{x_{i}}; \vec{\beta})  + (1-y_i) \log Pr(y_i=0|\vec{x_{i}}; \vec{\beta})  + \lambda\sum_{k=0}^m \beta_k^2

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

### تفسیر احتمالی تنظیم مدل
اگر به‌جای روش درست نمایی بیشینه از روش بیشینه سازی احتمال پسین استفاده کنیم به ساختار «تنظیم مدل» یا همان regularization خواهیم رسید. اگر مجموعه داده را با D نمایش بدهیم و پارامتری که به دنبال تخمین آن هستیم را با \vec{\beta}، احتمال پسین Pr\left(\vec{\beta}\,|\,D\right)، طبق قانون بیز متناسب خواهد بود با حاصلضرب درست نمایی یعنی Pr\left(D\,|\,\vec{\beta}\right) و احتمال پیشین یعنی Pr\left(\vec{\beta}\right):

Pr\left(\vec{\beta}\,|\,D\right) = \frac{Pr\left(D\,|\,\vec{\beta}\right)\times Pr\left(\vec{\beta}\right)}{Pr\left(D\right)}

ازین رو

 \mbox{argmax}_{\vec{\beta}} Pr\left(\vec{\beta}\,|\,D\right) = \mbox{argmax}_{\vec{\beta}} \frac{Pr\left(D\,|\,\vec{\beta}\right)\times Pr\left(\vec{\beta}\right)}{Pr\left(D\right)} =
\mbox{argmax}_{\vec{\beta}} Pr\left(D\,|\,\vec{\beta}\right)\times Pr\left(\vec{\beta}\right)

معادله خط پیشین نشان می‌دهد که برای یافتن پارامتر بهینه فقط کافیست که احتمال پیشین را نیز در معادله دخیل کنیم. اگر احتمال پیشین را یک توزیع احتمال با میانگین صفر و کوواریانس \tau^2I در نظر بگیریم به معادله پایین می‌رسیم:

\mbox{argmax}_{\vec{\beta}} \,\, \log Pr\left(D\,|\,\vec{\beta}\right) =
\mbox{argmax}_{\vec{\beta}} \,\,
\log \prod_{i=1}^{n}Pr(y_i|\vec{x_i}\,\,;\vec{\beta}) Pr\left(\vec{\beta}\right) =
\mbox{argmax}_{\vec{\beta}} \,\,
\log
\left(\prod_{i=1}^{n} Pr(y_i=1|\vec{x_{i}}; \vec{\beta})^{y_i} \times Pr(y_i=0|\vec{x_{i}}; \vec{\beta})^{1-y_i}

\frac{1}{\sqrt{2\pi}\tau}exp\left(\frac{-||\vec{\beta}||^2}{2\tau}\right)\right)

با ساده کردن این معادله به نتیجه پایین می‌رسیم:

 \mbox{argmax}_{\vec{\beta}} \,\, \log Pr\left(D\,|\,\vec{\beta}\right) = \mbox{argmax}_{\vec{\beta}} \sum_{i=1}^{n} y_i \times \log Pr(y_i=1|\vec{x_{i}}; \vec{\beta})  + (1-y_i) \log Pr(y_i=0|\vec{x_{i}}; \vec{\beta})  - \frac{1}{2\tau^2}||\vec{\beta}||^2 -\log \sqrt{2\pi}\tau

با تغییر علامت معادله، بیشینه‌سازی را به کمینه‌سازی تغییر می‌دهیم،  \lambda در این معادله همان  \frac{1}{2\tau^2} است:

 \mbox{argmax}_{\vec{\beta}} \,\, \log Pr\left(D\,|\,\vec{\beta}\right) = \mbox{argmin}_{\vec{\beta}} -\left(\sum_{i=1}^{n} y_i \times \log Pr(y_i=1|\vec{x_{i}}; \vec{\beta})  + (1-y_i) \log Pr(y_i=0|\vec{x_{i}}; \vec{\beta})\right)  + \lambda||\vec{\beta}||^2 

همان‌طور که دیدیم جواب همان تنظیم مدل با نرم L_2 است.

حال اگر توزیع پیشین را از نوع توزیع لاپلاس با میانگین صفر در نظر بگیریم به تنظیم مدل با نرم L_1 خواهیم رسید.

از آنجا که میانگین هر دو توزیع پیشین صفر است، پیش‌فرض تخمین پارامتر بر این بنا شده‌است که اندازه پارامتر مورد نظر کوچک و به صفر نزدیک باشد و این پیش‌فرض با روند تنظیم مدل همخوانی دارد.

## کاربردها
رگرسیون لجستیک در زمینه‌های مختلف از جمله یادگیری ماشین، اکثر رشته‌های پزشکی و علوم اجتماعی مورد استفاده قرار می‌گیرد. برای مثال، میزان آسیب‌دیدگی ، که به‌طور گسترده برای پیش‌بینی مرگ و میر در بیماران مصدوم مورد استفاده قرار می‌گیرد، توسط بوید و همکارانش با استفاده از رگرسیون لجستیک ایجاد شد. مقیاسهای پزشکی دیگری که برای ارزیابی شدت بیماری به کار می‌رود با استفاده از رگرسیون لجستیک ساخته شده‌اند. رگرسیون لجستیک ممکن است برای پیش‌بینی خطر ابتلا به یک بیماری خاص (به عنوان مثال دیابت؛ بیماری انسداد قلب)، بر اساس ویژگی‌های مشاهده شده بیمار (سن، جنس، شاخص توده بدنی، نتایج آزمایش‌های مختلف خون و غیره) مورد استفاده قرار گیرد. رگرسیون لجستیک در علوم سیاسی هم کاربرد دارد. به عنوان مثال این مدل می‌تواند بر روی پیش‌بینی این‌که رای‌دهنده اهل نپال به کنگره نپال یا حزب کمونیست نپال یا هر حزب دیگری رأی دهد، بر اساس سن، درآمد، جنس، نژاد، وضعیت سکونت، آراء در انتخابات‌های قبلی و غیره کار کند. این روش همچنین می‌تواند در مهندسی مورد استفاده قرار گیرد، به ویژه برای پیش‌بینی احتمال عدم موفقیت یک فرایند، سیستم یا محصول معین. همچنین در برنامه‌های بازاریابی مانند پیش‌بینی تمایل مشتری برای خرید یک محصول یا متوقف کردن اشتراک و غیره مورد استفاده قرار گیرد.
در آموزش می‌توان از رگرسیون لجستیک برای پیش بینی احتمال کلیک کردن دانشجویان روی دعوت به عمل در ای میل‌های آموزشی استفاده کرد.

کاربرد ها در علم پزشکی : 

#### ۱. پیش‌بینی خطر ابتلا به بیماری‌ها:

* استفاده از رگرسیون لجستیک برای پیش‌بینی خطر ابتلا به بیماری‌های قلبی بر اساس عوامل خطر مانند سن، جنسیت، فشار خون و سطح کلسترول.

#### ۲. بررسی اثربخشی درمان‌ها:

* استفاده از رگرسیون خطی چندگانه برای بررسی تأثیر چندین درمان مختلف بر سطح قند خون بیماران دیابتی.

#### ۳. مدل‌سازی داده‌های شمارشی:

* استفاده از رگرسیون پواسون برای مدل‌سازی تعداد مراجعات بیماران به اورژانس در یک سال.

#### ۴. تحلیل بقا:

* استفاده از مدل کاکس برای بررسی عوامل مؤثر بر زمان بقا بیماران مبتلا به سرطان.

## تاریخچه
تابع لجستیک به عنوان مدلی برای پیش‌بینی رشد جمعیت توسط پیر فرانسوا ورهولست و کمک آدولف کوتله در دهه ۱۸۳۰ و ۱۸۴۰ توسعه یافت و «لجستیک» نامگذاری شد.

تابع لجستیک به‌طور مستقل در شیمی برای مدل‌سازی واکنش خودکاتالیزی توسعه یافت. واکنش خودکاتالیزی یک واکنش شیمیایی است که یکی از محصولات واکنش خود یک فروکافت برای همان واکنش یا یک واکنش جفت باشد.

تابع لجستیک به‌طور مستقل به عنوان مدلی برای پیش‌بینی رشد جمعیت در سال ۱۹۲۰ توسط ریموند پرل و لاول رید دوباره ایجاد و به چاپ رسید که منجر به استفاده آن در علم آمار شد. آن‌ها در ابتدا این مدل را برای مدل‌سازی جمعیت ایالات متحده آمریکا به کار گرفته بودند. ریموند پرل و لاول رید در ابتدا از کار ورهولست بی‌خبر بودند و احتمالاً در مورد آن از گوستاو دو پاسگیر آگاهی یافتند، اما اعتبار کمی به او دادند و اصطلاحات او را اتخاذ نکردند. تقدم کار ورهولست بعدها مورد تأکید قرار گرفت و اصطلاح «لجستیک» توسط اودنی یول در سال ۱۹۲۵ احیا شد و از آن زمان مورد استفاده قرار گرفت.

در دهه ۱۹۳۰، مدل پروبیت توسط چستر ایتنر بلیس و جان گادوم ابداع شد و اصطلاح «پروبیت» برای آن مورد استفاده قرار گرفت. فیشر کمی بعدتر مدل پروبیت را با تخمین از طریق برآورد درست‌نمایی بیشینه توسعه داد. مدل پروبیت در ابتدا اساساً برای زیست سنجی مورد استفاده قرار می‌گرفت و پیش از آن هم در کارهای مشابهی در این زمینه در دهه ۱۸۶۰ از آن استفاده می‌شد. مدل پروبیت بر توسعه بعدی رگرسیون لجستیک تأثیر گذاشت؛ این دو مدل رقیب یکدیگر بودند.

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

با توسعه مدل لوجیت به مدلی چندجمله‌ای دامنه کاربرد و محبوبیت مدل به شدت افزایش پیدا کرد.

## جستارهای وابسته
* نسبت شانس‌ها
* تحلیل تفکیک خطی
* پرسپترون
* شبکه عصبی مصنوعی
* کاوش‌های ماشینی در داده‌ها
* رگرسیون خطی
* رگرسیون پواسون

## منابع

رده:رگرسیون لجستیک
رده:تحلیل رگرسیون
رده:دسته‌بندی داده
رده:مدل خطی تعمیم‌یافته