在明白前面的理论之后,logistic regression就很容易理解了。
Logistic regression由两个部分组成:
一个线性部分和一个链接公式
整体Hypothesis可以写成:
![新宇教你机器学习之 <wbr>Logistic <wbr>Regression 新宇教你机器学习之 <wbr>Logistic <wbr>Regression](http://image71.360doc.com/DownloadImg/2014/03/2010/40079609_2.jpg)
第一部分,也就是线性部分和之前的linear regression一样,是一个关于theta和x的线性的公式:
![新宇教你机器学习之 <wbr>Logistic <wbr>Regression 新宇教你机器学习之 <wbr>Logistic <wbr>Regression](http://image71.360doc.com/DownloadImg/2014/03/2010/40079609_3.jpg)
第二部分,也就是链接function,g(x),是一个logistic function。 所以称为logistic regression。
重新把hypothesis写完整就变成:
![新宇教你机器学习之 <wbr>Logistic <wbr>Regression 新宇教你机器学习之 <wbr>Logistic <wbr>Regression](http://image71.360doc.com/DownloadImg/2014/03/2010/40079609_4.jpg)
画出来图像是这样的:
![新宇教你机器学习之 <wbr>Logistic <wbr>Regression 新宇教你机器学习之 <wbr>Logistic <wbr>Regression](http://image71.360doc.com/DownloadImg/2014/03/2010/40079609_5.jpg)
![新宇教你机器学习之 <wbr>Logistic <wbr>Regression](http://blog.sina.com.cn/s/)
很容易看出,这个function的输出永远是在0和1之间的。这就可以用来测试某一个样品属于每一个类别的概率。(这里只讨论有2个类的情况)
假设:
样品属于类1和类0的概率分别为:
![新宇教你机器学习之 <wbr>Logistic <wbr>Regression 新宇教你机器学习之 <wbr>Logistic <wbr>Regression](http://image71.360doc.com/DownloadImg/2014/03/2010/40079609_1.gif)
![新宇教你机器学习之 <wbr>Logistic <wbr>Regression](http://blog.sina.com.cn/s/)
以上两种情况可以综合起来写成:
![新宇教你机器学习之 <wbr>Logistic <wbr>Regression 新宇教你机器学习之 <wbr>Logistic <wbr>Regression](http://image71.360doc.com/DownloadImg/2014/03/2010/40079609_1.gif)
![新宇教你机器学习之 <wbr>Logistic <wbr>Regression](http://blog.sina.com.cn/s/)
我们的任务就变成了寻找一条直线(theta是这条直线的coeff),来最大化训练数据被成功分类的概率。
用最大似然估算法Maximum Likelihood Estimation可以测出最好的theta值:
![新宇教你机器学习之 <wbr>Logistic <wbr>Regression 新宇教你机器学习之 <wbr>Logistic <wbr>Regression](http://image71.360doc.com/DownloadImg/2014/03/2010/40079609_1.gif)
![新宇教你机器学习之 <wbr>Logistic <wbr>Regression](http://blog.sina.com.cn/s/)
为了计算简便,可以两边取log
最大值发生的时候,微分应该等于0。
具体计算步骤就不写了。
最后结果是:
![新宇教你机器学习之 <wbr>Logistic <wbr>Regression 新宇教你机器学习之 <wbr>Logistic <wbr>Regression](http://image71.360doc.com/DownloadImg/2014/03/2010/40079609_1.gif)
![新宇教你机器学习之 <wbr>Logistic <wbr>Regression](http://blog.sina.com.cn/s/)
Theta可以用Gradient Ascent方法算出。
Matlab测试:
Matlab中,线的系数可以用glmfit()算出。
取hypothesis=0.5,就可以画出下面绿色的分界线。
![新宇教你机器学习之 <wbr>Logistic <wbr>Regression 新宇教你机器学习之 <wbr>Logistic <wbr>Regression](http://image71.360doc.com/DownloadImg/2014/03/2010/40079609_1.gif)
![新宇教你机器学习之 <wbr>Logistic <wbr>Regression](http://blog.sina.com.cn/s/)
这是我造的两团高斯分布的图,绿色线就是logistic regression(Classification)的结果。