逻辑斯蒂回归(Logistic Regression)

本文是结合书来作出自己的理解和总结的,主要的参考书目是《统计学习方法》,后期的修改中,我会加入相关的其他书籍进来。欢迎批评和指正~~


本文的思路是根据《统计学习方法》第一章所提到的:统计学习方法 = 模型+策略+算法的思路来讲的,所以,如果对于这个思路有疑问,自行看第一章。本文主要介绍的是逻辑斯蒂模型的模型、策略和算法,至于最大熵模型,这里不予介绍。首先会介绍逻辑斯蒂模型的基本模型,然后会介绍极大似然估计的基本原理和逻辑回归的策略并求出逻辑回归的目标函数,最后介绍梯度上升算法和逻辑回归目标函数的最优化。

1、逻辑斯蒂模型

1.1、逻辑斯蒂分布

为什么先讲逻辑斯蒂分布呢?因为我们的逻辑斯蒂模型就是根据逻辑斯蒂分布得到的,所以说逻辑斯蒂方法是属于判别方法,即知道了P(Y|X)的形式(当然,我们是不知道P(X,Y)的,要不然机器学习也就没有意义了。),通过参数估计方法直接估计出参数,从而得到P(Y|X)。下面给出《统计学习方法》上逻辑斯蒂分布的定义:

逻辑斯蒂回归(Logistic Regression)_第1张图片

1.2、二项逻辑斯蒂回归模型

知道分布的定义之后,就是给出我们的逻辑斯蒂模型了:

逻辑斯蒂回归(Logistic Regression)_第2张图片

这里需要注意的有两点:(1)最终的结果是通过比较P(Y=1|X)和P(Y=0|X)的大小来确定类别的;(2)b在这里其实可以看做是w0x0,其中x0 = 1;(3)其实本质上这个就是一个二项分布,所以遵循二项分布的分布律。

1.3、事件的对数几率(log odds)

废话不说,还是看看统计学习方法上面的定义:

逻辑斯蒂回归(Logistic Regression)_第3张图片

1.4、第一个结论

根据之前,我们就得到了两个定义:(1)逻辑回归模型;(2)事件的对数几率。那么从这两个定义,我们可以得到什么推论呢?

逻辑斯蒂回归(Logistic Regression)_第4张图片

也就是说,如果我的模型是逻辑回归模型,那么事件{Y=1|X}发生的对数几率就是输入X的线性函数(模型)。所以只要知道了这个推论,我们是可以反推出逻辑斯蒂模型的形式的:

逻辑斯蒂回归(Logistic Regression)_第5张图片

1.5、比较逻辑斯蒂模型和感知机

首先,很显然,这里的逻辑斯蒂模型可以看成是f(wx),也就是wx的函数:sigmoid函数,感知机则是sign函数。

逻辑斯蒂回归(Logistic Regression)_第6张图片

2、逻辑斯蒂回归的策略

2.1、极大似然估计的基本思想

这部分请参考百度百科, 我觉得百度百科上面已经讲的很好了。

2.2、通过极大似然估计推导逻辑回归的目标函数

这里我给出手写的推导:这里需要说明的一点就是,每一次伯努利独立重复试验都可以看作是很多的服从(0,1)分布的小试验之和。所以伯努利试验的一个结果{X1 = x1,X2 = x2,....,Xn = xn}中的每个Xi都是可以看成是服从(0,1)分布的,所以其分布律服从(0,1)分布的分布律。

逻辑斯蒂回归(Logistic Regression)_第7张图片

3、目标函数的最优化算法:梯度上升

这部分的内容我会结合相关的代码来实现。

3.1、梯度的推导

还是给出手写的推导

逻辑斯蒂回归(Logistic Regression)_第8张图片

3.2、逻辑回归代码的实现

逻辑斯蒂回归(Logistic Regression)_第9张图片

代码的解析,主要是在gradascent里面的部分:

逻辑斯蒂回归(Logistic Regression)_第10张图片

4、测试算法

4.1、主函数

逻辑斯蒂回归(Logistic Regression)_第11张图片

这里需要提出的是我这里设置了P的值,之前,按照《统计学习方法》上面的说法,就是P>(1-P)就判为正例,但是在实际情况之中不能说这个出现的概率比另一个出现的概率高你就判别为正例,这个P值其实是人为的根据实际的经验来进行判定的,你也可以设置说P>0.8才可以判为正例,就是这个判定为正例或者是为负例是有一个“成本”在里面。

4.2、测试数据(样例)

逻辑斯蒂回归(Logistic Regression)_第12张图片

为了便于计算,我这里选取的测试数据只有两个特征,这个也是为了便于图形的绘制,在使用算法的时候可以按照自己的实际需求来选择自己的测试数据,这个时候只是需要小小修改代码便可。

4.3、执行结果

逻辑斯蒂回归(Logistic Regression)_第13张图片

4.4、绘制ROC曲线

这里ROC曲线的理论,大家可以自行看周志华老师的西瓜书,或者百度,应该会有很多的讲解,这里就不写具体的讲解,只是给出自己的代码:


逻辑斯蒂回归(Logistic Regression)_第14张图片
逻辑斯蒂回归(Logistic Regression)_第15张图片

你可能感兴趣的:(逻辑斯蒂回归(Logistic Regression))