流言终结者Logistic regression 专题

Logistic regression 基本上是除了贝叶斯之外的最基本的分类器, 但是Logistic regression却也是ctr预估的工业界的最常用的方法,逻辑回归说简单简单,说复杂却也很复杂,写这篇文章的目的希望通过自己的一些理解更好的诠释逻辑回归,终结一些流言。

LR非常简单,简单到只需要一个公式就可以描述:

P(Y=1|X=x) = \frac{e^{x^Tb}}{e^{x^Tb} + 1}

等价于

P(Y=1|X=x) = \frac{1}{1 + e^{x^-Tb}}

是类似sigmoid的形式:

f(x) = \frac{1}{1 + e^{-x}}

但就是这么简单的一个模型,坊间都流传着一些模型的流言,对于这些流言,其实都可以通过查阅一些资料,自己推一推的方式快速鉴别真假,这里就列举几个典型的:

LR选择sigmoid作为激活函数是因为sigmoid的形状?

纯粹无稽之谈,有很多文章中提到过关于LogisticRegression 中的sigmoid 公式的推导,我也看过一些,但是许多文章中的推导都是错误的,其实sigmoid的推导并不复杂。我自己试着推导了一次。

假设

以二分类为例,Logistic regression的前提假设有以下几点:

  1. 假设 \pi(x) 表示模型对某个输入x,预测其y=1的概率输出

  2. 假设模型满足最大似然估计,即L(\pi(x)) = \prod_{i=1}^N\pi(x_i)^{y_i} (1-\pi(x_i))^{(1 - y_i)}…….(1)
    取到最大值,对这块有疑问的参考维基百科

  3. 假设模型满足最大熵模型的约束条件,即H(p) = - \sum_{i=1}^N {p(x_i)log(p(x_i))}…….(2)取到最小值

推导

把假设1带入假设3,则得到
H(p) = - \sum_{i=1}^N {\pi(x_i)log(\pi(x_i))}…….(3)

由最大似然估计我们需要求(1)的最小值 min(L(\pi(x))),令:

A = ln(L(\pi(x)))…….(4)

由(1),(4)得

A = \sum_{i=1}^N {y_iln(\pi(x)) + (1-y_i)ln(1-\pi(x))}

易得上式为凸函数,A \pi(x)的导数

\frac{\partial A}{\partial \pi(x)} = \sum_{i=1}^N {[\frac{y_i}{\pi(x_i)} - \frac{1 - y_i}{1 - \pi(x_i)}]}[\pi(x)] = 0

化简得到
\sum_{i=1}^n y_i x_i =

\sum_{i=1}^n \pi(x_i)x_i …….(5)

同时使用最大熵公式(1),和(5)作为约束条件,构造拉普拉斯方程

LL= \sum_{i=1}^n{(\pi(x_i)log(\pi(x_i)) + (1 - \pi(x_i)log(1-\pi(x_i))} +

w \sum_{i=1}^n{y_ix_i - \pi(x_i)x_i}

LL 对于 \pi(x_i) 的导数

\frac{\partial LL}{\partial \pi(x)} = log(\pi(x)) + 1 - log(1 - \pi(x)) - 1 + \sum_{i=1}^n{wx} = 0

化简得到:
\pi(x) = \frac{1}{e^{-wx} + 1}

结论:流言被终结,sigmoid函数的形式完全是由最大熵模型的性质和最大似然估计推导出来的

Logistic regression 的输入需要归一化?

光是LR的输入需要服从的分布我就听到过几个版本:

  1. LR的输入需要归一化,因为LR假设输入服从高斯分布
  2. LR的输入需要归一化,因为LR假设输入服从伯努利分布
  3. LR的输入需要归一化,但是输入服从的分布假设有争议

那么到底LR的输入需要服从什么样的分布呢?

从上面LR的公式推导中不难看出,LR的假设一共就那三个,完全不包含对输入分布的要求,那么这个流言式从何而来呢?要想了解这一点,我们就必须知道,上面的公式仅仅是针对无正则化的LR,如果加上L1或者L2正则,则情况就完全不一样了。

哪里不一样呢?参考知乎上的这篇回答https://www.zhihu.com/question/20447622 ,公式就不列了,首先L1的本质是给权重一个拉普拉斯分布的先验,L2是给了权重一个高斯分布的先验,工业界使用LR模型时经常是千万级别以上的特征数量,如果不使用正则化模型的质量会很差,并且正确的使用L1正则可以很大程度的加快训练速度(权重变稀疏矩阵),但是由于L1,L2正则引入了先验条件,即所有权重符合拉普拉斯或高斯分布,所以如果不做归一化,不同量纲的特征就需要使用相同量纲的权重了,这个明显是不合理的,所以带正则的LR使用的特征需要归一化。这个问题的另一种解释是训练过程中的梯度情况:

经过归一化的梯度会类似下图

而没有经过归一化的梯度下降类似这样

不过这个解释不那么数学,我们也就看看就好。

结论:流言是真的,带正则的LR的输入需要归一化

使用L1正则的LR仅会留下多个强相关变量中的一个,其余的权重会在训练后趋近于0?

这个流言传播得很广,倒不是说它不对,只是说这个流言没有带它的成立条件,这个成立的条件就是训练使用的优化方法是CD,或者是拟牛顿法,或者是LBFGS或者是类似的方法,而如果使用SGD训练,流言就是不成立的,因为LR在SGD训练过程中对强相关的特征项分别求导的值也是类似的,下降的速率也是类似的,最后得到的权重也是类似的,而在拟牛顿法中,由于各个特征的下降是分别求微分取得的,几个强相关特征中先被求导的哪一个的梯度会特别大,权重会更快的趋近于0,这才有了流言的结论。

结论:流言缺省了条件: 使用CD,拟牛顿,LBFGS,而不是SGD的方法