رگرسیون لجستیک
برآورد پارامترهای بهینه

برای به‌دست آوردن پارامترهای بهینه یعنی  {\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 _{j}^{\,new}}}={\vec {\beta _{j}^{\,old}}}+\alpha \left(y_{i}-{\frac {1}{1+e^{-\left(\beta _{0}^{\,old}+\beta _{1}^{\,old}x_{1,i}+\cdots +\beta _{k}^{\,old}x_{k,i}\right)}}}\right){\vec {x_{i,j}}}\\\,\,\,\,\,\,\beta ^{\,old}=\beta ^{\,new}\end{cases}}