逻辑回归(Logistics Regression)
假设我们有训练数据%2C…%2C(%5Cmathbf%7Bx%7D_n%2Cy_n)%5C%7D#card=math&code=D%3D%5C%7B%28%5Cmathbf%7Bx%7D_1%2Cy_1%29%2C…%2C%28%5Cmathbf%7Bx%7D_n%2Cy_n%29%5C%7D&height=20&width=201) ,其中
为每一个样本,而且
是样本的特征并且
,
代表样本数据的标签(label), 取值为 0 或者 1 . 在逻辑回归中,模型的参数为
。
1. 非线性概率化
%3Dg(z)%3D%5Cfrac%7B1%7D%7B1%2Be%5E%7B-(w%5ETx%2Bb)%7D%7D%0A#card=math&code=P%28y%3D1%7Cw%2Cx%29%3Dg%28z%29%3D%5Cfrac%7B1%7D%7B1%2Be%5E%7B-%28w%5ETx%2Bb%29%7D%7D%0A&height=42&width=273)
%3D1-g(z)%3D%5Cfrac%7Be%5E%7B-(w%5ETx%2Bb)%7D%7D%7B1%2Be%5E%7B-(w%5ETx%2Bb)%7D%7D%0A#card=math&code=P%28y%3D0%7Cw%2Cx%29%3D1-g%28z%29%3D%5Cfrac%7Be%5E%7B-%28w%5ETx%2Bb%29%7D%7D%7B1%2Be%5E%7B-%28w%5ETx%2Bb%29%7D%7D%0A&height=48&width=302)
2. MLE
MLE 是参数估计的过程,最大化似然函数。
%3Dg(z_i)%5E%7By_i%7D*(1-g(z_i))%5E%7B1-y_i%7D%0A#card=math&code=L%28%5Ctheta%29%3Dg%28z_i%29%5E%7By_i%7D%2A%281-g%28z_i%29%29%5E%7B1-y_i%7D%0A&height=23&width=222)
%3D%20%5Csum%7Bi%3D1%7D%5E%7Bn%7D(y_i%5Clog(g(z_i))%2B((1-y_i)%20%5Clog(1-g(z_i))))%0A#card=math&code=%5Clog%20L%28%5Ctheta%29%3D%20%5Csum%7Bi%3D1%7D%5E%7Bn%7D%28y_i%5Clog%28g%28z_i%29%29%2B%28%281-y_i%29%20%5Clog%281-g%28z_i%29%29%29%29%0A&height=49&width=394)
3. 目标函数
%3D-%5Cfrac%7B1%7D%7Bn%7D%5Clog%20L(%5Ctheta)%3D-%5Cfrac%7B1%7D%7Bn%7D%20%5Csum%7Bi%3D1%7D%5E%7Bn%7D(y_i%5Clog(g(z_i))%2B((1-y_i)%20%5Clog(1-g(z_i))))%0A#card=math&code=J%28w%2Cb%29%3D-%5Cfrac%7B1%7D%7Bn%7D%5Clog%20L%28%5Ctheta%29%3D-%5Cfrac%7B1%7D%7Bn%7D%20%5Csum%7Bi%3D1%7D%5E%7Bn%7D%28y_i%5Clog%28g%28z_i%29%29%2B%28%281-y_i%29%20%5Clog%281-g%28z_i%29%29%29%29%0A&height=49&width=527)
即
%3D-%5Cfrac%7B1%7D%7Bn%7D%20%5Csum%7Bi%3D1%7D%5E%7Bn%7D(y_i%5Clog(%5Cfrac%7B1%7D%7B1%2Be%5E%7B-(w%5ETx_i%2Bb)%7D%7D)%2B(1-y_i)%20%5Clog(%5Cfrac%7Be%5E%7B-(w%5ETx_i%2Bb)%7D%7D%7B1%2Be%5E%7B-(w%5ETx_i%2Bb)%7D%7D))%0A#card=math&code=J%28%5Cmathbf%7Bw%7D%2Cb%29%3D-%5Cfrac%7B1%7D%7Bn%7D%20%5Csum%7Bi%3D1%7D%5E%7Bn%7D%28y_i%5Clog%28%5Cfrac%7B1%7D%7B1%2Be%5E%7B-%28w%5ETx_i%2Bb%29%7D%7D%29%2B%281-y_i%29%20%5Clog%28%5Cfrac%7Be%5E%7B-%28w%5ETx_i%2Bb%29%7D%7D%7B1%2Be%5E%7B-%28w%5ETx_i%2Bb%29%7D%7D%29%29%0A&height=52&width=520)
需要最小化
4. 关于求导
%7D%7B%5Cpartial%20w%7D%26%3D%20-%5Cfrac%7B1%7D%7Bn%7D%5Csum%7Bi%3D1%7D%5En%20%5By_i%5Cfrac%7B%5Csigma(z_i)(1-%5Csigma(z_i))%20%7D%7B%5Csigma(zi)%7Dx_i%2B(1-y_i)-(%5Cfrac%7B%5Csigma(z_i)(1-%5Csigma(z_i))%20%7D%7B1-%5Csigma(zi)%7D)x_i%5D%5C%5C%0A%26%3D%20-%5Cfrac%7B1%7D%7Bn%7D%5Csum%7Bi%3D1%7D%5En%5Byi-%5Csigma(zi)%5D*x_i%0A%5Cend%7Baligned%7D%0A#card=math&code=%5Cbegin%7Baligned%7D%0A%5Cfrac%7B%5Cpartial%20J%28w%2Cb%29%7D%7B%5Cpartial%20w%7D%26%3D%20-%5Cfrac%7B1%7D%7Bn%7D%5Csum%7Bi%3D1%7D%5En%20%5Byi%2A%5Cfrac%7B%5Csigma%28z_i%29%281-%5Csigma%28z_i%29%29%20%7D%7B%5Csigma%28zi%29%7D%2Ax_i%2B%281-y_i%29%2A-%28%5Cfrac%7B%5Csigma%28z_i%29%281-%5Csigma%28z_i%29%29%20%7D%7B1-%5Csigma%28zi%29%7D%29%2Ax_i%5D%5C%5C%0A%26%3D%20-%5Cfrac%7B1%7D%7Bn%7D%5Csum%7Bi%3D1%7D%5En%5By_i-%5Csigma%28zi%29%5D%2Ax_i%0A%5Cend%7Baligned%7D%0A&height=102&width=613)
乘法是矩阵乘法
%7D%7B%5Cpartial%20b%7D%26%3D%20-%5Cfrac%7B1%7D%7Bn%7D%5Csum%7Bi%3D1%7D%5En%20%5By_i%5Cfrac%7B%5Csigma(z_i)(1-%5Csigma(z_i))%20%7D%7B%5Csigma(zi)%7D%2B(1-y_i)-(%5Cfrac%7B%5Csigma(z_i)(1-%5Csigma(z_i))%20%7D%7B1-%5Csigma(zi)%7D)%5D%5C%5C%0A%26%3D%20-%5Cfrac%7B1%7D%7Bn%7D%5Csum%7Bi%3D1%7D%5En%5Byi-%5Csigma(zi)%5D%0A%5Cend%7Baligned%7D%0A#card=math&code=%5Cbegin%7Baligned%7D%0A%5Cfrac%7B%5Cpartial%20J%28w%2Cb%29%7D%7B%5Cpartial%20b%7D%26%3D%20-%5Cfrac%7B1%7D%7Bn%7D%5Csum%7Bi%3D1%7D%5En%20%5Byi%2A%5Cfrac%7B%5Csigma%28z_i%29%281-%5Csigma%28z_i%29%29%20%7D%7B%5Csigma%28zi%29%7D%2B%281-y_i%29%2A-%28%5Cfrac%7B%5Csigma%28z_i%29%281-%5Csigma%28z_i%29%29%20%7D%7B1-%5Csigma%28zi%29%7D%29%5D%5C%5C%0A%26%3D%20-%5Cfrac%7B1%7D%7Bn%7D%5Csum%7Bi%3D1%7D%5En%5By_i-%5Csigma%28zi%29%5D%0A%5Cend%7Baligned%7D%0A&height=102&width=550)
5. 更新
基于梯度下降法(batch)的对于𝐰和b的更新
假设加了一个L2正则项,梯度下降法(batch)的对于𝐰和b的更新
假设加了一个L2正则项,梯度下降法(batch)的对于𝐰和b的更新
6.关于凸函数
证明逻辑回归函数是凸函数。(利用凸函数的二阶定义)
假设一个函数是凸函数,我们则可以得出局部最优解即为全局最优解,所以假设我们通过随机梯度下降法等手段找到最优解 时我们就可以确认这个解就是全局最优解。
(1-%5Csigma(zi))*x_i%0A#card=math&code=%5Cfrac%7B%5Cpartial%5E2%20%5Cmathcal%7BL%7D%7D%7B%5Cpartial%5E2%20%5Cmathbf%7Bw%7D%7D%3D%5Cfrac%7B1%7D%7Bn%7D%5Csum%7Bi%3D1%7D%5En%20x_i%5ET%2A%5Csigma%28z_i%29%281-%5Csigma%28z_i%29%29%2Ax_i%0A&height=49&width=287)
(1-%5Csigma(z_i)))%0A#card=math&code=H%3D%5Cfrac%7B%5Cpartial%5E2%20%5Cmathcal%7BL%7D%7D%7B%5Cpartial%5E2%20%5Cmathbf%7Bw%7D%7D%3D%5Cfrac%7B1%7D%7Bn%7D%20X%5ET%20V%20X%5C%5C%0AV%3Ddiag%28%5Csigma%28z_i%29%281-%5Csigma%28z_i%29%29%29%0A&height=67&width=724)
说明得出来的Hessian Matrix是Positive Definite.
显然 V是半正定的,所以H也是半正定的
7. 关于建模
逻辑回归认为样本对 ,其中 X 服从正态分布
,Y 服从伯努利分布
,参数估计的方法使用的是MLE 极大似然。
8.逻辑回归为什么用Sigmoid?
两种解释,一个是广义线性模型(GLM),另一个是最大熵模型。
GLM:
这里只做检验阐述,理论部分放到log linear model文档做详细阐述。
广义线性模型拥有三个假设:
- 样本分类Y 服从以
为参数的指数分布族。
- 给定x,预测h(x),输出的分布满足T(y)的期望即,h(x)=E[ T(y) | x] 。
与 x是线性的,即
。
逻辑回归的Y 服从伯努利分布,将分布函数转换成指数分布族时,可以通过待定系数法获得h(x)的表示
所以得到了逻辑回归的激活函数是sigmoid。
这个 等式右边的表达式 就是我们常说的logits 对数几率,也是GLM中的联系函数。
同理可以得到 多分类的激活函数是 softmax。(他的Y的分布是多项分布)
同理可以得到 最小二乘h(x)是 。(他的Y的分布是高斯分布)。
关于损失函数,都是通过MLE 得出来的,所以LR是CrossEntropy,最小二乘是 MSE。
MaxEnt:
最大熵的思想,是在给定已知假设条件下,选取熵最大的模型,熵最大,本质上是一种偏向均匀的想法。
通过最大熵,我们给定LR的三个约束条件(概率的定义+二分类的表示),通过拉格朗日函数的求法得出两分类的表示形式就是sigmoid函数。
所以,MaxEnt 给出了一个很好的解释:LR的本质为二分类下选取了某个特征函数的最大熵模型。
9. 为什么是线性模型
其实是根据决策边界来看的,决策边界就是概率相等的那条线,令LR的分类概率相等,使用对数几率的表达式可以轻易的知道,他的决策边界是wx+b=0,即为线性的。
10. 逻辑回归工程上如何并行
逻辑回归的梯度每一项只和xi有关,所以可以切分样本放到不同的机子上再相加求得。
我们还可以按照不同的特征分割,也是可以相同的并行的。
这两种方式可以叫做 按行并行 和 按列并行,工程上是可以同时进行两个操作的 。
工程上的实现可以通过MapReduce 这类操作来完成。
**
Map 操作对应就是计算当前的特征和当前的样本提供的梯度,返回 键(样本和特征的id) 值(梯度) 对,然后通过Reduce操作相加得到。
实践方面(未做尝试,这是思考)可以考虑利用python的迭代器和生成器优化Mapper 和 Reducer代码。
11. 逻辑回归输出的值是真实的概率吗?
逻辑回归模型之所以是sigmoid 的形式,源于我们假设y服从伯努利分布,伯努利分布又属于指数分布族,经过推导,将伯努利分布变成指数分布族的形式后。
我们发现伯努利分布的唯一参数Φ与指数分布族中的参数η具有sigmoid函数关系,于是我们转而求η与x的关系,此时,我们又假设η与x具有线性关系。
至此,找到了我们要用的模型的样子,也就是逻辑回归。
回答文章开头的问题,逻辑回归输出的到底是不是概率呢?答案是如果你的情况满足本文所说的两个假设,那么你训练模型的过程,就确实是在对概率进行建模。
这两个假设并不是那么容易满足的。所以,很多情况下,我们得出的逻辑回归输出值,无法当作真实的概率,只能作为置信度来使用。

