逻辑回归

逻辑回归(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 逻辑回归的优点

  1. LR无论是训练还是预测,计算复杂度都很低,尤其数据规模很大时有优势.
  2. 不用担心特征之间的关联性.
  3. LR能给出概率解释.
  4. 模型简单,并行化很容易.
  5. 还可以支持在线学习.

6 参考资料

  1. http://en.wikipedia.org/wiki/Sigmoid_function
  2. Machine Learning
  3. 机器学习基石
  4. Pattern recognization and machine learning
  5. 新浪微博关于sigmoid变换的讨论,没找到原文
  6. http://blog.csdn.net/itplus/article/details/21897443