当前位置:   article > 正文

ML模型3:逻辑回归模型

ml模型

逻辑回归模型

逻辑回归假设数据服从伯努利分布,通过极大化似然函数的方法,运用梯度下降来求解参数,来达到将数据二分类的目的。

1. 问题引入

线性回归是进行回归学习,但如果要做分类任务该怎么办呢

在广义线性模型下,可以利用一个单调可微的函数将分类任务的标签y与线性回归模型的预测结果联系起来。

实值z → 0/1值?(Q1. 逻辑回归和线性回归有什么区别?

选用理想的单位阶跃函数 → 单位阶跃函数不连续 → 寻找替代函数 - 对数几率函数(sigmoid函数)
g ( z ) = 1 1 + e − z g(z) = \frac{1}{1+e^{-z}} g(z)=1+ez1
下图所示 - 红色单位阶跃函数/黑色sigmoid函数
sigmoid

:以下以常见二分类为例。且样本集和线性回归相似,只是输出y为离散值。

2. 模型描述

Sigmoid函数:
g ( z ) = 1 1 + e − z g(z) = \frac{1}{1+e^{-z}} g(z)=1+ez1

z = x θ z = x\theta z=xθ,得到逻辑回归的一般形式
h θ ( x ; θ ) = 1 1 + e − x θ {h_\theta }(x;\theta ) = {1 \over {1 + {e^{ - x\theta }}}} hθ(x;θ)=1+exθ1

逻辑回归的基本假设 - 假设数据服从伯努利分布

伯努利分布的简单例子就是抛硬币:抛中为正面的概率是p,抛中为反面的概率是1−p。


P ( y = 1 ∣ x ; θ ) = h θ ( x ) = 1 1 + e − x θ P(y = 1|x;\theta ) = {h_\theta }(x) = {1 \over {1 + {e^{ - x\theta }}}} P(y=1x;θ)=hθ(x)=1+exθ1 P ( y = 0 ∣ x ; θ ) = 1 − h θ ( x ) = 1 − 1 1 + e − x θ P(y = 0|x;\theta ) = 1 - {h_\theta }(x) = 1 - {1 \over {1 + {e^{ - x\theta }}}} P(y=0x;θ)=1hθ(x)=11+exθ1

3. 损失函数

损失函数是基于最大似然估计推导得到的。

1)综合上述输入 x x x下分类结果0/1的概率,得:
P ( y ∣ x ; θ ) = ( h θ ( x ) ) y ( 1 − h θ ( x ) ) 1 − y P(y|x;\theta ) = {\left( {{h_\theta }(x)} \right)^y}{\left( {1 - {h_\theta }(x)} \right)^{1 - y}} P(yx;θ)=(hθ(x))y(1hθ(x))1y
2)取似然函数为:
L ( θ ) = ∏ i = 1 m P ( y ( i ) ∣ x ( i ) ; θ ) = ∏ i = 1 m ( h θ ( x ( i ) ) ) y ( i ) ( 1 − h θ ( x ( i ) ) ) 1 − y ( i )

L(θ)amp;=i=1mP(y(i)|x(i);θ)amp;=i=1m(hθ(x(i)))y(i)(1hθ(x(i)))1y(i)
L(θ)=i=1mP(y(i)x(i);θ)=i=1m(hθ(x(i)))y(i)(1hθ(x(i)))1y(i)
3)对数似然函数为:
l ( θ ) = log ⁡ L ( θ ) = ∑ i = 1 m [ y ( i ) log ⁡ h θ ( x ( i ) ) + ( 1 − y ( i ) ) log ⁡ ( 1 − h θ ( x ( i ) ) ) ]
l(θ)amp;=logL(θ)amp;=i=1m[y(i)loghθ(x(i))+(1y(i))log(1hθ(x(i)))]
l(θ)=logL(θ)=i=1m[y(i)loghθ(x(i))+(1y(i))log(1hθ(x(i)))]

最大似然估计就是求得使 l ( θ ) l\left( \theta \right) l(θ)取最大值时的 θ \theta θ,这里可以使用梯度上升法求解,求得的 θ \theta θ 就是要求的最佳参数。

4)为了统一用梯度下降法求解,通常将损失函数定义如下:(Q2. 为什么要取负号/为什么要除以样本数m?
J ( θ ) = − 1 m l ( θ ) = − 1 m ∑ i = 1 m [ y ( i ) log ⁡ h θ ( x ( i ) ) + ( 1 − y ( i ) ) log ⁡ ( 1 − h θ ( x ( i ) ) ) ]

J(θ)amp;=1ml(θ)amp;=1mi=1m[y(i)loghθ(x(i))+(1y(i))log(1hθ(x(i)))]
J(θ)=m1l(θ)=m1i=1m[y(i)loghθ(x(i))+(1y(i))log(1hθ(x(i)))]

4. 模型求解

显然逻辑回归最终拟合函数是非线性的(sigmoid函数分线性),所以此处选择用迭代法-梯度下降法求解。

1)输入:损失函数 J ( θ ) = − 1 m ∑ i = 1 m [ y ( i ) log ⁡ h θ ( x ( i ) ) + ( 1 − y ( i ) ) log ⁡ ( 1 − h θ ( x ( i ) ) ) ] J\left( \theta \right) = - {1 \over m}\sum\limits_{i = 1}^m {\left[ {{y^{\left( i \right)}}\log {h_\theta }\left( {{x^{\left( i \right)}}} \right) + \left( {1 - {y^{\left( i \right)}}} \right)\log \left( {1 - {h_\theta }\left( {{x^{\left( i \right)}}} \right)} \right)} \right]} J(θ)=m1i=1m[y(i)loghθ(x(i))+(1y(i))log(1hθ(x(i)))]
初始值 θ \theta θ 和学习步长 α \alpha α

2)更新方程
θ j = θ j − α ∂ ∂ θ j J ( θ ) , ( j = 0 , 1... n ) {\theta _j} = {\theta _j} - \alpha {\partial \over {\partial {\theta _j}}}J\left( \theta \right),\left( {j = 0,1...n} \right) θj=θjαθjJ(θ),(j=0,1...n)

3)损失函数的梯度计算如下:
∂ ∂ θ j J ( θ ) = − 1 m ∑ i = 1 m [ y ( i ) 1 h θ ( x ( i ) ) ∂ ∂ θ j h θ ( x ( i ) ) − ( 1 − y ( i ) ) 1 1 − h θ ( x ( i ) ) ∂ ∂ θ j h θ ( x ( i ) ) ] = − 1 m ∑ i = 1 m [ y ( i ) 1 g ( x ( i ) θ ) − ( 1 − y ( i ) ) 1 1 − g ( x ( i ) θ ) ] ∂ ∂ θ j g ( x ( i ) θ ) = − 1 m ∑ i = 1 m [ y ( i ) 1 g ( x ( i ) θ ) − ( 1 − y ( i ) ) 1 1 − g ( x ( i ) θ ) ] g ( x ( i ) θ ) ( 1 − g ( x ( i ) θ ) ) x j ( i ) = − 1 m ∑ i = 1 m [ y ( i ) ( 1 − g ( x ( i ) θ ) ) − ( 1 − y ( i ) ) g ( x ( i ) θ ) ] x j ( i ) = − 1 m ∑ i = 1 m [ y ( i ) − g ( x ( i ) θ ) ] x j ( i ) = − 1 m ∑ i = 1 m [ y ( i ) − h θ ( x ( i ) ) ] x j ( i ) = 1 m ∑ i = 1 m [ h θ ( x ( i ) ) − y ( i ) ] x j ( i )

θjJ(θ)amp;=1mi=1m[y(i)1hθ(x(i))θjhθ(x(i))(1y(i))11hθ(x(i))θjhθ(x(i))]amp;=1mi=1m[y(i)1g(x(i)θ)(1y(i))11g(x(i)θ)]θjg(x(i)θ)amp;=1mi=1m[y(i)1g(x(i)θ)(1y(i))11g(x(i)θ)]g(x(i)θ)(1g(x(i)θ))xj(i)amp;=1mi=1m[y(i)(1g(x(i)θ))(1y(i))g(x(i)θ)]xj(i)amp;=1mi=1m[y(i)g(x(i)θ)]xj(i)amp;=1mi=1m[y(i)hθ(x(i))]xj(i)amp;=1mi=1m[hθ(x(i))y(i)]xj(i)
θjJ(θ)=m1i=1m[y(i)hθ(x(i))1θjhθ(x(i))(1y(i))1hθ(x(i))1θjhθ(x(i))]=m1i=1m[y(i)g(x(i)θ)1(1y(i))1g(x(i)θ)1]θjg(x(i)θ)=m1i=1m[y(i)g(x(i)θ)1(1y(i))1g(x(i)θ)1]g(x(i)θ)(1g(x(i)θ))xj(i)=m1i=1m[y(i)(1g(x(i)θ))(1y(i))g(x(i)θ)]xj(i)=m1i=1m[y(i)g(x(i)θ)]xj(i)=m1i=1m[y(i)hθ(x(i))]xj(i)=m1i=1m[hθ(x(i))y(i)]xj(i)

其中第一个等号用到下式:
∂ ∂ θ j log ⁡ h θ ( x ( i ) ) = 1 h θ ( x ( i ) ) ∂ ∂ θ j h θ ( x ( i ) ) {\partial \over {\partial {\theta _j}}}\log {h_\theta }\left( {{x^{\left( i \right)}}} \right){\rm{ = }}{1 \over {{h_\theta }\left( {{x^{\left( i \right)}}} \right)}}{\partial \over {\partial {\theta _j}}}{h_\theta }\left( {{x^{\left( i \right)}}} \right) θjloghθ(x(i))=hθ(x(i))1θjhθ(x(i))
∂ ∂ θ j log ⁡ ( 1 − h θ ( x ( i ) ) ) = − 1 1 − h θ ( x ( i ) ) ∂ ∂ θ j h θ ( x ( i ) ) {\partial \over {\partial {\theta _j}}}\log \left( {1 - {h_\theta }\left( {{x^{\left( i \right)}}} \right)} \right) = - {1 \over {1 - {h_\theta }\left( {{x^{\left( i \right)}}} \right)}}{\partial \over {\partial {\theta _j}}}{h_\theta }\left( {{x^{\left( i \right)}}} \right) θjlog(1hθ(x(i)))=1hθ(x(i))1θjhθ(x(i))
第三个等号用到下式:
g ( z ) = 1 1 + e − z g(z) = {1 \over {1 + {e^{ - z}}}} g(z)=1+ez1
g ′ ( z ) = e − z ( 1 + e − z ) 2 = g ( z ) ( 1 − g ( z ) ) g'(z) = {{{e^{ - z}}} \over {{{\left( {1 + {e^{ - z}}} \right)}^2}}} = g(z)\left( {1 - g(z)} \right) g(z)=(1+ez)2ez=g(z)(1g(z))
∂ ∂ θ j g ( x ( i ) θ ) = g ( x ( i ) θ ) ( 1 − g ( x ( i ) θ ) ) x j ( i ) {\partial \over {\partial {\theta _j}}}g\left( {{x^{\left( i \right)}}\theta } \right) = g\left( {{x^{\left( i \right)}}\theta } \right)\left( {1 - g\left( {{x^{\left( i \right)}}\theta } \right)} \right)x_j^{\left( i \right)} θjg(x(i)θ)=g(x(i)θ)(1g(x(i)θ))xj(i)

4)最终更新方程为
θ j = θ j − α ∂ ∂ θ j J ( θ ) = θ j − α m ∑ i = 1 m [ h θ ( x ( i ) ) − y ( i ) ] x j ( i )

θjamp;=θjαθjJ(θ)amp;=θjαmi=1m[hθ(x(i))y(i)]xj(i)
θj=θjαθjJ(θ)=θjmαi=1m[hθ(x(i))y(i)]xj(i),其中 j = 0 , 1... n {j = 0,1...n} j=0,1...n

直到 Δ θ \Delta \theta Δθ小于阈值 ε \varepsilon ε
Δ θ = ∂ ∂ θ J ( θ ) &lt; ε \Delta \theta {\rm{ = }}{\partial \over {\partial \theta }}J\left( \theta \right) &lt; \varepsilon Δθ=θJ(θ)<ε

5. 向量化表示

面试题

更新方程为:
θ = θ − α m x T ( 1 1 + e − x θ − y ) \theta = \theta - {\alpha \over m}{x^T}\left( {{1 \over {1 + {e^{ - x\theta }}}} - y} \right) θ=θmαxT(1+exθ1y)
Trick:可以用矩阵维数来判断向量化表示应该如何写。 x x x m × n m \times n m×n维, θ \theta θ n × 1 n \times 1 n×1维, y y y m × 1 m \times 1 m×1维。

x = [ x 1 ( 0 ) x 2 ( 0 ) . . . x n ( 0 ) x 1 ( 1 ) x 2 ( 1 ) . . . x n ( 1 ) . . . . . . . . . . . . x 1 ( m ) x 2 ( m ) . . . x n ( m ) ] , y = [ y ( 0 ) y ( 1 ) . . . y ( m ) ] x =

[x1(0)amp;x2(0)amp;...amp;xn(0)x1(1)amp;x2(1)amp;...amp;xn(1)...amp;...amp;...amp;...x1(m)amp;x2(m)amp;...amp;xn(m)]
,y =
[y(0)y(1)...y(m)]
x=x1(0)x1(1)...x1(m)x2(0)x2(1)...x2(m)............xn(0)xn(1)...xn(m)y=y(0)y(1)...y(m)
θ = ( θ 0 , θ 1 , . . . , θ n ) T \theta = {({\theta _0},{\theta _1},...,{\theta _n})^T} θ=(θ0,θ1,...,θn)T

6. 逻辑回归模型-优缺点分析

优点:简单易用,易理解;

缺点:准确率并不是很高;很难处理数据不平衡的问题(注意选取合适的评价指标)

7. Code

from sklearn import linear_model
clf = linear_model.LogisticRegression(C=1.0, penalty='l1', tol=1e-6)
  • 1
  • 2

参数解释
C - 正则项权重
penalty - 可选择为"l1"和"l2",分别对应L1和L2正则化,默认是L2正则化
tol - 截止条件, Δ θ \Delta \theta Δθ的阈值 ε \varepsilon ε

8. 拓展 - 其他知识点

激活函数选择sigmoid函数 - 梯度消失/梯度爆炸
优化方法和正则化需详解(同线性回归)
学习步长的选择

Q&A

Q1. 逻辑回归和线性回归有什么区别?面试题

预测结果 - 线性回归的预测结果是连续的,逻辑回归的结果是离散的;
假设函数 - 逻辑回归在线性回归的实数范围输出上施加了sigmoid函数,将值收敛在0-1之间
损失函数 - 线性回归差平方和逻辑回归对数似然函数

Q2. 为什么要取负号/为什么要除以样本数m?面试题

取负号 —— 最大化似然函数相当于损失函数(对似然函数先取负号)最小化;最小化损失函数可以梯度下降法求解。
除以样本数m —— 数量越多误差越大,所以平滑一下

Q3. 关于损失函数的选择

  1. 为什么要用对数损失函数作为损失函数?

损失函数一般有四种:平方损失函数/对数损失函数/HingeLoss0-1损失函数/绝对值损失函数。
对极大似然函数取对数可以推得对数损失函数
θ j = θ j − α m ∑ i = 1 m [ h θ ( x ( i ) ) − y ( i ) ] x j ( i ) {\theta _j} = {\theta _j} - {\alpha \over m}\sum\limits_{i = 1}^m {\left[ {{h_\theta }\left( {{x^{\left( i \right)}}} \right) - {y^{\left( i \right)}}} \right]} x_j^{\left( i \right)} θj=θjmαi=1m[hθ(x(i))y(i)]xj(i)
从上式可以看出,逻辑回归模型下,对数损失函数的训练求解参数的速度是比较快的。因为 θ j {\theta _j} θj的更新速度只和 x j ( i ) x_j^{\left( i \right)} xj(i) y ( i ) {{y^{\left( i \right)}}} y(i)相关,和sigmoid函数本身的梯度无关。这样更新的速度是可以自始至终都比较稳定

  1. 为什么不选平方损失函数的呢?

如果使用平方损失函数,会发现梯度更新的速度和sigmoid函数本身的梯度是很相关的。sigmoid函数在它在定义域内的梯度都不大于0.25。这样训练会非常的慢。

Q4.逻辑回归在训练的过程中,如果有很多的特征高度相关/有一个特征重复了很对遍,会造成怎样的影响?

如果损失函数最终收敛,就算有很多特征高度相关也不会影响分类器的效果。
但我们通常选择去掉高度相关的特征,因为这样会让模型的可解释性更好,也会加快训练速度。

Ref
机器学习–Logistic回归计算过程的推导
逻辑回归的常见面试点总结

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/喵喵爱编程/article/detail/979333
推荐阅读
相关标签
  

闽ICP备14008679号