逻辑回归(Logistic Regression)是机器学习中十分常用的一种模型,属于广义线性模型.在互联网领域得到了广泛的应用,尤其是在广告系统中用来估计CTR.本文主要介绍逻辑回归的模型形式,求解策略和算法.接着介绍逻辑回归的最大似然估计,最后说明为什么逻辑回归要采用sigmoid函数做变换.
1 模型
我们知道,线性回归模型输出的是一个连续值,如果我们要输出的不是连续值,该怎么做呢?假设我们的输出只有 1 和 -1. 逻辑回归模型形式上是把线性回归模型做一个变换,让其输出是一个 0 到 1 之间的数,假设我们的变换叫做 ,然后在变换后的结果上定义一个决策函数,如果:
其中 就是我们前面讲到的线性模型:
而变换采用了逻辑变换,也叫 变换,其形式为:
通过上面几个式子进行一个简单的推导,我们的决策函数变为:
最后我们的逻辑回归模型就变成:
我们看看 sigmoid 函数有什么特点,从下面的图形可以看出,这个函数是个连续光滑函数,定义域是 ,值域是 ,在 0 附近函数的区分度很高(的值变化比较明显),越往两边,函数的区分度就越低(的值变化越来越不明显).
并且这个函数处处可导,其导数为:
其导数可以由自己本身表示.
而且:
为什么函数比别的非线性函数有吸引力呢? 做变换的目的是把的取值范围(用表示)映射到 范围内(用表示): ,为此我们应该选择什么样的 呢, 变换可以理解成对 的一种编码,当然最好是双射,意味着可以从反解码得到.理论上满足双射的可以有无穷多种,该怎么选择呢? 实际上双射是不可能的,因为观测 时不可避免的要引入误差,即 ,其中 为误差,在有误差的情况下,和就不是一一映射了.任何从 反解码得到 都是不可能的,所以问题来了:有没有一种映射,在有误差的情况下做到最优? 通俗的讲,就是寻找一个映射,在有观测误差的情况下,最优的保持输入信号的信息,用信息学的语言描述就是与之间的互信息最大,而 .的互信息由两项决定 和 ,而其中第二项完全由误差决定,我们控制不了.第一项 是由映射决定的,越大越好,所以问题又变成: 给定取值范围,熵 什么时候最大? 答案就是服从均匀分布时熵最大.因此,能把映射成一个均匀分布的映射是最优的.当知道的概率密度为时,怎么样的变换能把 变成均匀分布呢? 还记得遇到多这样的面试题吗: 如何用的均匀分布生成任意的其他概率分布? 答案是用一种叫 inverse cumulative distribution function 的变换方法.而这里的问题正好和面试题相反,我们要从任意分布生成均匀分布.答案就是的累积分布函数就是最优的.想象一下正态分布的概率密度函数,是一个倒置的钟形函数,而它的累积分布函数是不是和 函数长得很像? 而现实中我们遇到的倒置钟形分布的信号又比比皆是.
注意: 对概率密度不是倒置钟形的信号,变换不一定是最优的.
2 策略
有了逻辑回归模型的形式,我们仍然需要根据我们观测到的数据集求出模型里未知的 ,为此我们仍然采用定义损失函数,并最小化损失函数的策略.此时我们不能用线性回归里采用的平方损失函数,因为此时在逻辑变换的基础上,改函数不再是一个凸函数,会给我们的极小化造成相当大的麻烦.为此,我们定义另外一个损失函数,逻辑斯谛损失(也叫交叉熵 Cross Entropy):
我们先看看我们的的决策函数:
检验一下我们的损失函数:
当 时:
当 时:
所以最后我们总的损失函数为:
注意: 这里采用的损失函数是经验损失,不是结构损失,不包括正规化项
3 算法
我们仍然采用梯度下降来求解 . 先求 的梯度向量:
其中 为训练数据集的大小.
逐步更新 :
拟牛顿法
因为梯度下降收敛太慢,一般工程上都不会直接采用梯度下降来解这个问题,工程上会采用拟牛顿法来求解. 在数学基础之微积分的文章里,讲到了牛顿法,它的搜索方向是牛顿方向 ,需要计算Hessian矩阵的逆,往往实际工程中Hessian矩阵根本就不可逆,或者逆计算起来工作量也相当大.所以有人提出了一系列算法,用一些别的矩阵来近似Hessian矩阵或者Hessian矩阵的逆,叫拟牛顿法.最有名的就是 DFP 和 BFGS 系列算法.这里拿BFGS举例.
拟牛顿条件
设 次迭代以后,将目标函数 在 处泰勒展开:
两边同时求导:
取 代入上式:
记, 则上面的式子变为:
或者:
这就是拟牛顿条件.
如果用一个矩阵 来近似 ,则拟牛顿条件可以表达为:
BFGS
BFGS算法是以四个发明者 Broyden,Fletcher,Goldfarb 和 Shanno 的首字母命名的. 假设我们近似矩阵的迭代公式为:
将 待定为:
所以:
注意上式中的 和 都是标量,令 ,.同时令 ,,可以求出:
于是:
BFGS算法
- 给定初值和精度阈值,并令
- 确定搜索方向
- 求步长 ,令
- 如果 算法结束, 否则计算
- 计算
- 令 ,转步骤2
但实际工程中,我们的矩阵会很大,内存根本放不下,所以有了后来的Limited-memory BFGS,更详细的参考这里.
4 最大似然估计
上面提到了逻辑斯谛损失,为什么我们要定义这样一个损失呢?我们从另一方面来解释,我们假设我们的模型最后分别以一定概率输出 1 和 -1,假设输出 1 的概率是 ,输出 -1 的概率是 ,即:
我们称之为几率, 我们称之为对数几率,我们建立下面这样一个线性模型来模拟这个对数几率:
然后很快就能求出:
所以:
所以无论还是,概率都可以写成统一的形式:
下面我们用最大似然估计来估计 ,假设我们的训练数据集为:
生成这样一个数据集的概率为:
将我们的模型概率的统一形式代进去:
我们要找到一个 ,让上面的式子最大,其中第一项连乘跟 无关,两边同时取对数:
得到了跟上面定义损失函数,然后极小化损失函数一样的结论.
5 逻辑回归的优点
- LR无论是训练还是预测,计算复杂度都很低,尤其数据规模很大时有优势.
- 不用担心特征之间的关联性.
- LR能给出概率解释.
- 模型简单,并行化很容易.
- 还可以支持在线学习.
6 参考资料
- http://en.wikipedia.org/wiki/Sigmoid_function
- Machine Learning
- 机器学习基石
- Pattern recognization and machine learning
- 新浪微博关于sigmoid变换的讨论,没找到原文
- http://blog.csdn.net/itplus/article/details/21897443