رگرسیون لجستیک: تفاوت میان نسخه‌ها

محتوای حذف‌شده محتوای افزوده‌شده
بدون خلاصۀ ویرایش
وسط‌چین به فرمول‌ها اضافه شد
خط ۳۴:
برای بدست آوردن پارامترهای بهینه یعنی <math>\vec{\beta} =[\beta_0, \beta_1, \cdots , \beta_k]</math> می‌توان از روش [[برآورد درست‌نمایی بیشینه|برآورد درست نمایی بیشینه]] (Maximum Likelihood Estimation) استفاده کرد. اگر فرض کنیم که تعداد مثال‌هایی که قرار است برای تخمین پارامترها استفاده کنیم <math>n
</math> است و این مثال‌ها را به این شکل نمایش دهیم <math>D = (\vec{x_{1}}, y_1), \cdots (\vec{x_{n}}, y_n)</math>. پارامتر بهینه پارامتری است که برآورد درست نمایی را بیشینه کند، البته برای سادگی کار برآورد لگاریتم درست نمایی را بیشینه می‌کنیم. لگاریتم درست نمایی داده <math>D</math> برای پارامتر <math>\vec{\beta}</math> را با <math>L(D, \vec{\beta})</math> نمایش می‌دهیم:
{{وسط‌چین}}
 
<math>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}) </math>
{{پایان وسط‌چین}}
 
اگر برای داده <math>i</math> ام <math>y_i = 1</math> باشد، هدف افزایش<math>\Pr\left(y_i = 1|\vec{x_i};\vec{\beta}\right)</math> است و اگر <math>y_i</math> صفر باشد هدف افزایش مقدار <math>\Pr\left(y_i = 0|\vec{x_i};\vec{\beta}\right)</math> است. از این رو از فرمول <math>Pr(y_i=1|\vec{x_{i}}; \vec{\beta})^{y_i} \times Pr(y_i=0|\vec{x_{i}}; \vec{\beta})^{1-y_i} </math> استفاده می‌کنیم که اگر <math>y_i = 1</math> باشد، فرمول به ما <math>\Pr\left(y_i = 1|\vec{x_i};\vec{\beta}\right)</math> را بدهد و اگر <math>y_i = 0</math> بود به ما <math>\Pr\left(y_i = 0|\vec{x_i};\vec{\beta}\right)</math> را بدهد.
 
حال برای بدست آوردن پارامتر بهینه باید <math>\vec{\beta}</math> یی پیدا کنیم که مقدار <math>L(D, \vec{\beta})</math> را بیشینه کند. از آنجا که این تابع نسبت به <math>\vec{\beta}</math> مقعر است حتماً یک بیشینه مطلق دارد. برای پیدا کردن جواب می‌توان از روش گرادیان افزایشی از نوع تصادفی اش استفاده کرد (Stochastic Gradient Ascent). در این روش هر بار یک مثال را به‌صورت اتفاقی از نمونه‌های داده انتخاب کرده، گرادیان درست نمایی را حساب می‌کنیم و کمی در جهت گرادیان پارامتر را حرکت می‌دهیم تا به یک پارامتر جدید برسیم. گرادیان جهت موضعی بیشترین افزایش را در تابع به ما نشان می‌دهد، برای همین در آن جهت کمی حرکت می‌کنیم تا به بیشترین افزایش موضعی تابع برسیم. اینکار را آنقدر ادامه می‌دهیم که گرادیان به اندازه کافی به صفر نزدیک شود. بجای اینکه داده‌ها را به‌صورت تصادفی انتخاب کنیم می‌توانیم به ترتیب داده شماره <math>1</math>تا داده شماره <math>n</math> را انتخاب کنیم و بعد دوباره به داده اولی برگردیم و این کار را به‌صورت متناوب چندین بار انجام دهیم تا به اندازه کافی گرادیان به صفر نزدیک شود. از لحاظ ریاضی این کار را می‌توان به شکل پایین انجام داد، پارامتر <math>\vec{\beta}</math> را در ابتدا به‌صورت تصادفی مقدار دهی می‌کنیم و بعد برای داده <math>i</math>ام و تمامی <math>j</math>‌ها، یعنی از <math>j=1</math> تا <math>j=m+1</math> تغییر پایین را اعمال می‌کنیم، دراینجا <math>\alpha</math> همان مقداریست که در جهت گرادیان هربار حرکت می‌کنیم و <math>
\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}}</math> مشتق جزئی داده <math>i</math>ام در بُعد <math>j</math>ام است:
{{وسط‌چین}}
<math>
\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}
</math>
{{پایان وسط‌چین}}
== تنظیم مدل (Regularization) ==
پیچیدگی مدل‌های پارامتری با تعداد پارامترهای مدل و مقادیر آن‌ها سنجیده می‌شود. هرچه این پیچیدگی بیشتر باشد خطر [[بیش‌برازش]] (Overfitting) برای مدل بیشتر است.<ref>{{Cite journal|last=Bühlmann|first=Peter|last2=van de Geer|first2=Sara|date=2011|title=Statistics for High-Dimensional Data|url=https://link.springer.com/book/10.1007/978-3-642-20192-9|journal=Springer Series in Statistics|language=en-gb|doi=10.1007/978-3-642-20192-9|issn=0172-7397}}</ref> پدیده بیش‌برازش زمانی رخ می‌دهد که مدل بجای یادگیری الگوهای داده، داده را را حفظ کند و در عمل، فرایند یادگیری به خوبی انجام نمی‌شود. برای جلوگیری از [[بیش‌برازش]] در مدل‌های خطی مانند رگرسیون خطی یا رگرسیون لجستیک جریمه‌ای به [[تابع هزینه]] اضافه می‌شود تا از افزایش زیاد پارامترها جلوگیری شود. [[تابع هزینه]] را در رگرسیون لجستیک با منفی لگاریتم درست‌نمایی تعریف می‌کنیم تا کمینه کردن آن به بیشینه کردن تابع درست نمایی بیانجامد. به این کار تنظیم مدل یا Regularization گفته می‌شود. دو راه متداول تنظیم مدل‌های خطی روش‌های <math>L_1</math> و <math>L_2</math> هستند.<ref>{{یادکرد کتاب|نشانی=https://link.springer.com/chapter/10.1007/978-3-642-20192-9_8|عنوان=Theory for ℓ1/ℓ2-penalty procedures|نام خانوادگی=Bühlmann|نام=Peter|نام خانوادگی۲=van de Geer|نام۲=Sara|تاریخ=2011|ناشر=Springer Berlin Heidelberg|شابک=9783642201912|مکان=Berlin, Heidelberg|صفحات=249–291|زبان=en|doi=10.1007/978-3-642-20192-9_8}}</ref> در روش <math>L_1</math> ضریبی از نُرمِ <math>L_1</math> به [[تابع هزینه]] اضافه می‌شود و در روش <math>L_2</math> ضریبی از نُرمِ <math>L_2</math> که همان نُرمِ اقلیدسی است به [[تابع هزینه]] اضافه می‌شود.
 
در تنظیم مدل به روش <math>L_1</math> [[تابع هزینه]] را به این شکل تغییر می‌دهیم:<ref>{{یادکرد کتاب|نشانی=https://www.springer.com/us/book/9780387310732|عنوان=Pattern Recognition and Machine Learning|نام خانوادگی=Bishop|نام=Christopher|ناشر=Christopher|سال=2006|شابک=9780387310732|مکان=New York|صفحات=|زبان=en}}</ref>
{{وسط‌چین}}
 
<math> 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|</math>
{{پایان وسط‌چین}}
 
این روش تنظیم مدل که به روش لاسو (Lasso) نیز شهرت دارد باعث می‌شود که بسیاری از پارامترهای مدل نهائی صفر شوند و مدل به اصطلاح خلوت (Sparse) شود.<ref>{{Cite journal|last=Natarajan|first=B. K.|date=1995|title=Sparse Approximate Solutions to Linear Systems|url=https://epubs.siam.org/doi/10.1137/S0097539792240406|journal=SIAM Journal on Computing|language=en-US|volume=24|issue=2|pages=227–234|doi=10.1137/s0097539792240406|issn=0097-5397|via=}}</ref>
 
در تنظیم مدل به روش <math>L_2</math> [[تابع هزینه]] را به این شکل تغییر می‌دهیم:
{{وسط‌چین}}
 
<math> 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</math>
{{پایان وسط‌چین}}
 
در روش تنظیم از طریق <math>L_2</math> سعی می‌شود طول اقلیدسی بردار <math> \vec{\beta}</math> کوتاه نگه داشته شود. <math>\lambda</math> در روش <math>L_1</math> و <math>L_2</math> یک عدد مثبت است که میزان تنظیم مدل را معین می‌کند. هرچقدر <math>\lambda</math> کوچکتر باشد جریمه کمتری برا بزرگی نرم بردار پارامترها یعنی <math>\vec{\beta}</math> پرداخت می‌کنیم. مقدار ایدئال <math>\lambda</math> از طریق آزمایش بر روی داده اعتبار (Validation Data) پیدا می‌شود.
 
=== تفسیر احتمالی تنظیم مدل ===
اگر بجای روش درست نمایی بیشینه از روش بیشینه سازی احتمال پسین استفاده کنیم به ساختار «تنظیم مدل» یا همان regularization خواهیم رسید.<ref>{{یادکرد کتاب|نشانی=https://books.google.com/books?id=kOXDtAEACAAJ&dq=pattern+recognition+and+machine+learning&hl=en&sa=X&ved=0ahUKEwiNrZ7O1tveAhWtmeAKHRTvAeAQ6AEIKjAA|عنوان=Pattern Recognition and Machine Learning|نام خانوادگی=Bishop|نام=Christopher M|تاریخ=2016-08-23|ناشر=Springer New York|سال=2016|شابک=9781493938438|مکان=New York|صفحات=30|زبان=English}}</ref> اگر مجموعه داده را با <math>D</math> نمایش بدهیم و پارامتری که به دنبال تخمین آن هستیم را با <math>\vec{\beta}</math>، احتمال پسین <math>Pr\left(\vec{\beta}\,|\,D\right)</math>، طبق قانون بیز متناسب خواهد بود با حاصلضرب درست نمایی یعنی <math>Pr\left(D\,|\,\vec{\beta}\right)</math> و احتمال پیشین یعنی <math>Pr\left(\vec{\beta}\right)</math>:<ref name=":1">{{Cite journal|last=Robert|first=Christian|date=2014-04-03|title=Machine Learning, a Probabilistic Perspective|url=https://www.tandfonline.com/doi/full/10.1080/09332480.2014.914768|journal=CHANCE|language=en|volume=27|issue=2|pages=62–63|doi=10.1080/09332480.2014.914768|issn=0933-2480}}</ref>
{{وسط‌چین}}
 
<math>Pr\left(\vec{\beta}\,|\,D\right) = \frac{Pr\left(D\,|\,\vec{\beta}\right)\times Pr\left(\vec{\beta}\right)}{Pr\left(D\right)}</math>
{{پایان وسط‌چین}}
 
ازین رو
{{وسط‌چین}}
 
<math>argmax_{\vec{\beta}} Pr\left(\vec{\beta}\,|\,D\right) = argmax_{\vec{\beta}} \frac{Pr\left(D\,|\,\vec{\beta}\right)\times Pr\left(\vec{\beta}\right)}{Pr\left(D\right)} =
argmax_{\vec{\beta}} Pr\left(D\,|\,\vec{\beta}\right)\times Pr\left(\vec{\beta}\right)</math>
{{پایان وسط‌چین}}
 
معادله خط پیشین نشان می‌دهد که برای یافتن پارامتر بهینه فقط کافیست که احتمال پیشین را نیز در معادله دخیل کنیم. اگر احتمال پیشین را یک توزیع احتمال با میانگین صفر و کوواریانس <math>\tau^2I</math> در نظر بگیریم به معادله پایین می‌رسیم:<ref name=":12">{{Cite journal|last=Robert|first=Christian|date=2014-04-03|title=Machine Learning, a Probabilistic Perspective|url=https://www.tandfonline.com/doi/full/10.1080/09332480.2014.914768|journal=CHANCE|language=en|volume=27|issue=2|pages=62–63|doi=10.1080/09332480.2014.914768|issn=0933-2480}}</ref>
{{وسط‌چین}}
 
<math>argmax_{\vec{\beta}} \,\, \log Pr\left(D\,|\,\vec{\beta}\right) =
argmax_{\vec{\beta}} \,\,
سطر ۸۰ ⟵ ۸۲:
 
\frac{1}{\sqrt{2\pi}\tau}exp\left(\frac{-||\vec{\beta}||^2}{2\tau}\right)\right)</math>
{{پایان وسط‌چین}}
 
با ساده کردن این معادله به نتیجه پایین می‌رسیم:
{{وسط‌چین}}
 
<math> argmax_{\vec{\beta}} \,\, \log Pr\left(D\,|\,\vec{\beta}\right) = 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</math>
{{پایان وسط‌چین}}
 
با تغییر علامت معادله، بیشینه‌سازی را به کمینه‌سازی تغییر می‌دهیم، <math> \lambda</math> در این معادله همان <math> \frac{1}{2\tau^2}</math> است:
{{وسط‌چین}}
 
<math> argmax_{\vec{\beta}} \,\, \log Pr\left(D\,|\,\vec{\beta}\right) = 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 </math>
{{پایان وسط‌چین}}
 
همان‌طور که دیدیم جواب همان تنظیم مدل با نرم <math>L_2</math> است.