十一.Logistic回归原理

1.回归和分类

回归的预测值 y y y为连续值,分类的预测值 y y y为离散值。
Logistic回归的名字中虽然有回归二字,但其实是二分类算法。

2.Logistic函数

Logistic函数为两端饱和S型曲线函数,它将自变量的输出值固定在 [ 0 , 1 ] [0,1] [0,1]区间上。
Logistic函数原型为:
g ( z ) = 1 1 + e − z g(z)=\frac{1}{1+e^{-z} } g(z)=1+ez1
它的导数为:
g ( z ) = e − z ( 1 + e − z ) 2 = ( 1 1 + e − z ) ( 1 − 1 1 + e − z ) = g ( z ) ( 1 − g ( z ) ) g(z)=\frac{e^{-z} }{(1+e^{-z})^{2} } =(\frac{1}{1+e^{-z} } )(1-\frac{1}{1+e^{-z} } )=g(z)(1-g(z)) g(z)=(1+ez)2ez=(1+ez1)(11+ez1)=g(z)(1g(z))

3.Logistic回归模型

Logistic回归通过Logistic函数,将输出固定在 [ 0 , 1 ] [0,1] [0,1]区间。通常情况下,当输出小于 0.5 0.5 0.5时,输出为0;当时输出大于 0.5 0.5 0.5时,输出为1:
h θ ( x ) = 1 1 − e − θ T x , θ ∈ R n × 1 , x ∈ R n × 1 , h θ ( x ) ∈ R h_{\theta }(\mathbf{x}) =\frac{1}{1-e^{\mathbf{-\theta ^{T} x} } } ,\theta \in R^{n\times 1},\mathbf{x}\in R^{n\times 1} ,h_{\theta }(\mathbf{x}) \in R hθ(x)=1eθTx1,θRn×1,xRn×1,hθ(x)R

4.损失函数推导

对于Logistic的损失函数,通常有两种解释。

(1)交叉熵

可以用信息论中的交叉熵衡量预测值 h θ ( x ) h_{\theta}(\mathbf{x}) hθ(x)和真实值 y y y之间的距离,交叉熵越小,效果越好:
J ( θ ) = − ∑ i = 1 m [ y i log ⁡ h ( θ T X i ) + ( 1 − y i ) ( 1 − log ⁡ h ( θ T X i ) ) ] J(\theta )=-\sum_{i=1}^{m}[y^{i}\log h(\mathbf{\theta ^{T}X^{i}})+(1-y^{i} )(1-\log h(\mathbf{\theta ^{T}X^{i}})) ] J(θ)=i=1m[yilogh(θTXi)+(1yi)(1logh(θTXi))]
其中, X i ∈ R n × 1 , y ∈ R , θ ∈ R n × 1 \mathbf{X^{i}}\in R^{n\times 1} ,y\in R,\theta \in R^{n\times 1} XiRn×1,yRθRn×1

(2)极大似然估计

使用极大似然估计,估计每个某个样本是某个类别的概率最大的时候的参数。
由于 h ( θ T x ) h(\mathbf{\theta ^{T}x}) h(θTx)的范围为[0,1],可将其看做概率分布:
P ( y = 1 ∣ x , θ ) = h ( θ T x ) P ( y = 0 ∣ x , θ ) = 1 − h ( θ T x ) } → P ( y ∣ x , θ ) = h ( θ T x ) y ( 1 − h ( θ T x ) ) 1 − y \left.\begin{matrix} P(y=1|\mathbf{x},\theta )=h(\theta ^{T}\mathbf{x} )\\ P(y=0|\mathbf{x},\theta )=1-h(\theta ^{T}\mathbf{x} ) \end{matrix}\right\}\to P(y|\mathbf{x},\theta )=h(\theta ^{T}\mathbf{x})^{y} (1-h(\theta ^{T}\mathbf{x}))^{1-y} P(y=1x,θ)=h(θTx)P(y=0x,θ)=1h(θTx)}P(yx,θ)=h(θTx)y(1h(θTx))1y
假设每个样本之间相互独立,则似然函数为:
L ( θ ) = ∏ i = 1 m h ( θ T x i ) y i ( 1 − h ( θ T x i ) ) 1 − y i L(\theta ) =\prod_{i=1}^{m} h(\mathbf{\theta ^{T}x^{i}} )^{y^{i} } (1-h(\mathbf{\theta ^{T}x^{i}} ))^{1-y^{i} } L(θ)=i=1mh(θTxi)yi(1h(θTxi))1yi
将似然函数取对数再取反作为损失函数,则极大似然估计转化为极小化损失函数:
J ( θ ) = − ∑ i = 1 m [ y i log ⁡ h ( θ T X i ) + ( 1 − y i ) ( 1 − log ⁡ h ( θ T X i ) ) ] J(\theta )=-\sum_{i=1}^{m}[y^{i}\log h(\mathbf{\theta ^{T}X^{i}})+(1-y^{i} )(1-\log h(\mathbf{\theta ^{T}X^{i}})) ] J(θ)=i=1m[yilogh(θTXi)+(1yi)(1logh(θTXi))]
可以看到,极大似然估计所得到的损失函数与交叉熵相同。

5.参数学习的计算方法

Logistic回归的参数学习方法一般为梯度下降法。梯度下降的关键是求损失函数对参数的梯度,这里用两种方法来给出梯度下降过程。

(1)代数法

损失函数:
J ( θ ) = − ∑ i = 1 m [ y i log ⁡ h ( θ T X i ) + ( 1 − y i ) ( 1 − log ⁡ h ( θ T X i ) ) ] J(\theta )=-\sum_{i=1}^{m}[y^{i}\log h(\mathbf{\theta ^{T}X^{i}})+(1-y^{i} )(1-\log h(\mathbf{\theta ^{T}X^{i}})) ] J(θ)=i=1m[yilogh(θTXi)+(1yi)(1logh(θTXi))]
其中, J ( θ ) ∈ R , h ( θ T X i ) ∈ R , X i ∈ R n × 1 , y ∈ R , θ ∈ R n × 1 J(\theta )\in R,h(\theta^{T} \mathbf{X^{i}} )\in R,\mathbf{X^{i}}\in R^{n\times 1} ,y\in R,\theta \in R^{n\times 1} J(θ)R,h(θTXi)R,XiRn×1,yRθRn×1。欲求 ∂ J ( θ ) ∂ θ \frac{\partial J(\theta )}{\partial \theta } θJ(θ),标量对向量求导,使用链式法则:
∂ J ( θ ) ∂ θ = − ∑ i = 1 m [ y i 1 h ( θ T X i ) + ( 1 − y i ) ( 1 − 1 h ( θ T X i ) ) ] ∂ h ( θ T X i ) ∂ θ T X i ∂ θ T X i ∂ θ T ( 对 h ( θ T X i ) 求 导 ) = − ∑ i = 1 m [ y i 1 h ( θ T X i ) + ( 1 − y i ) ( 1 − 1 h ( θ T X i ) ) ] h ( θ T X i ) ( 1 − h ( θ T X i ) ) X i ( L o g i s t i c 函 数 求 导 ) = − ∑ i = 1 m [ y i ( 1 − h ( θ T X i ) ) + ( 1 − y i ) ( 1 − h ( θ T X i ) ] X i ( 合 并 同 类 项 ) = ∑ i = 1 m [ h ( θ T X i ) − y i ] X i \begin{aligned} \frac{\partial J(\theta )}{\partial \theta } &=-\sum_{i=1}^{m}[y^{i}\frac{1}{h(\theta^{T} \mathbf{X}^{i} )}+(1-y^{i})(1-\frac{1}{h(\theta^{T} \mathbf{X}^{i})})]\frac{\partial h(\theta^{T} \mathbf{X}^{i})}{\partial \theta^{T} \mathbf{X}^{i}}\frac{\partial \theta^{T} \mathbf{X}^{i}}{\partial \theta^{T}}(对h(\theta^{T} \mathbf{X}^{i})求导) \\ &=-\sum_{i=1}^{m}[y^{i}\frac{1}{h(\theta^{T} \mathbf{X}^{i} )}+(1-y^{i})(1-\frac{1}{h(\theta^{T} \mathbf{X}^{i})})]h(\theta^{T} \mathbf{X}^{i})(1-h(\theta^{T} \mathbf{X}^{i}))\mathbf{X}^{i}(Logistic函数求导) \\ &=-\sum_{i=1}^{m}[y^{i}(1-h(\theta^{T} \mathbf{X}^{i} ))+(1-y^{i})(1-h(\theta^{T} \mathbf{X}^{i} )] \mathbf{X}^{i}(合并同类项) \\ &=\sum_{i=1}^{m} [h(\theta^{T} \mathbf{X}^{i} )-y^{i}]\mathbf{X}^{i} \end{aligned} θJ(θ)=i=1m[yih(θTXi)1+(1yi)(1h(θTXi)1)]θTXih(θTXi)θTθTXih(θTXi)=i=1m[yih(θTXi)1+(1yi)(1h(θTXi)1)]h(θTXi)(1h(θTXi))XiLogistic=i=1m[yi(1h(θTXi))+(1yi)(1h(θTXi)]Xi()=i=1m[h(θTXi)yi]Xi
则第 k k k轮的梯度为:
∑ i = 1 m [ h ( θ T X i ) − y i ] X i \sum_{i=1}^{m} [h(\theta^{T} \mathbf{X}^{i} )-y^{i}]\mathbf{X}^{i} i=1m[h(θTXi)yi]Xi
k + 1 k+1 k+1次的迭代值为:
θ k + 1 = θ k − λ ∑ i = 1 m [ h ( θ T X i ) − y i ] X i \theta^{k+1}=\theta^{k}-\lambda\sum_{i=1}^{m} [h(\theta^{T} \mathbf{X}^{i} )-y^{i}]\mathbf{X}^{i} θk+1=θkλi=1m[h(θTXi)yi]Xi

(2)矩阵法

矩阵法的表示更加简洁明了,计算更方便。矩阵法表示损失函数为:
J ( θ ) = − y T log ⁡ h ( X θ ) − ( E − y ) T log ⁡ ( E − h ( X θ ) ) , h ( X θ ) = 1 1 + e X θ J(\theta )=-\mathbf{y} ^{T}\log h(\mathbf{X\theta } )-(\mathbf{E-y} )^{T} \log (\mathbf{E}-h(\mathbf{X\theta})),h(\mathbf{X\theta})=\frac{1}{1+e^{\mathbf{X\theta }} } J(θ)=yTlogh(Xθ)(Ey)Tlog(Eh(Xθ)),h(Xθ)=1+eXθ1
其中,各项维度为下:
y ∈ R m × 1 为 o n e − h o t 向 量 , E ∈ R m × 1 为 全 1 向 量 , X ∈ R m × n , θ ∈ R n × 1 , h ( X θ ) ∈ R m × 1 , J ( θ ) ∈ R 。 \mathbf{y}\in R ^{m\times 1} 为one-hot向量,E\in R ^{m\times 1}为全1向量,\mathbf{X} \in R ^{m\times n},\theta \in R^{n\times 1},h(\mathbf{X\theta } ) \in R^{m\times 1},J(\theta ) \in R。 yRm×1onehotERm×11,XRm×n,θRn×1,h(Xθ)Rm×1,J(θ)R
∂ J ( θ ) ∂ θ \frac{\partial J(\theta )}{\partial \theta } θJ(θ),可以拆分为:
∂ J ( θ ) ∂ θ = − ∂ y T log ⁡ h ( X θ ) ∂ θ − ∂ ( E − y ) T log ⁡ ( E − h ( X θ ) ) ∂ θ \frac{\partial J(\theta )}{\partial \theta } =-\frac{\partial \mathbf{y} ^{T}\log h(\mathbf{X\theta } )}{\partial \theta }-\frac{\partial (\mathbf{E-y} )^{T} \log (\mathbf{E}-h(\mathbf{X\theta}))}{\partial \theta } θJ(θ)=θyTlogh(Xθ)θ(Ey)Tlog(Eh(Xθ))
根据标量对向量求导的链式法则,对中间量 X θ \mathbf{X\theta } Xθ求导,上式可进一步写成:
∂ J ( θ ) ∂ θ = − ( ∂ X θ ∂ θ ) T ∂ y T log ⁡ h ( X θ ) ∂ X θ − ( ∂ X θ ∂ θ ) T ∂ ( E − y ) T log ⁡ ( E − h ( X θ ) ) ∂ X θ \frac{\partial J(\theta )}{\partial \theta } =-(\frac{\partial \mathbf{X\theta }}{\partial \theta })^{T} \frac{\partial \mathbf{y} ^{T}\log h(\mathbf{X\theta } )}{\partial \mathbf{X\theta } }-(\frac{\partial \mathbf{X\theta }}{\partial \theta })^{T} \frac{\partial (\mathbf{E-y} )^{T} \log (\mathbf{E}-h(\mathbf{X\theta}))}{\partial \mathbf{X\theta }} θJ(θ)=(θXθ)TXθyTlogh(Xθ)(θXθ)TXθ(Ey)Tlog(Eh(Xθ))
上式中:
( ∂ X θ ∂ θ ) T = X T (\frac{\partial \mathbf{X\theta }}{\partial \theta })^{T} =\mathbf{X} ^{T} (θXθ)T=XT
再分别求另外两项:
①求 ∂ y T log ⁡ h ( X θ ) ∂ X θ \frac{\partial \mathbf{y} ^{T}\log h(\mathbf{X\theta } )}{\partial \mathbf{X\theta } } XθyTlogh(Xθ),标量对向量求导,使用矩阵微分:
d y T log ⁡ h ( X θ ) = t r [ d y T log ⁡ h ( X θ ) ] ( 标 量 的 转 置 ) = t r [ y T d log ⁡ h ( X θ ) ] ( 矩 阵 微 分 乘 法 法 则 ) = t r [ y T ⊙ 1 h ( X θ ) ⊙ h ( X θ ) ⊙ ( E − h ( X θ ) ) d ( X θ ) ] ( 逐 元 素 微 分 ) = t r [ y T ⊙ E ⊙ ( E − h ( X θ ) ) d ( X θ ) ] ( 合 并 同 类 项 ) = t r [ y T − y T ⊙ h ( X θ ) ] d ( X θ ) ( 合 并 同 类 项 ) \begin{aligned} d \mathbf{y} ^{T}\log h(\mathbf{X\theta } )&=tr[d \mathbf{y} ^{T}\log h(\mathbf{X\theta } )](标量的转置) \\&=tr[\mathbf{y} ^{T}d\log h(\mathbf{X\theta } )](矩阵微分乘法法则) \\&=tr[\mathbf{y} ^{T}\odot\frac{1}{h(\mathbf{X\theta } ) }\odot h(\mathbf{X\theta } )\odot (E-h(\mathbf{X\theta } ))d(\mathbf{X\theta })](逐元素微分) \\&=tr[\mathbf{y} ^{T}\odot E \odot (E-h(\mathbf{X\theta } ))d(\mathbf{X\theta })](合并同类项) \\&=tr[\mathbf{y} ^{T}-\mathbf{y} ^{T}\odot h(\mathbf{X\theta })]d(\mathbf{X\theta })(合并同类项) \end{aligned} dyTlogh(Xθ)=tr[dyTlogh(Xθ)]=tr[yTdlogh(Xθ)]()=tr[yTh(Xθ)1h(Xθ)(Eh(Xθ))d(Xθ)]()=tr[yTE(Eh(Xθ))d(Xθ)]()=tr[yTyTh(Xθ)]d(Xθ)()
最终求得:
∂ y T log ⁡ h ( X θ ) ∂ X θ = ( y T − y T ⊙ h ( X θ ) ) T = y − y ⊙ h ( X θ ) \frac{\partial \mathbf{y} ^{T}\log h(\mathbf{X\theta } )}{\partial \mathbf{X\theta } }=(\mathbf{y} ^{T}-\mathbf{y} ^{T}\odot h(\mathbf{X\theta }))^{T}=\mathbf{y}-\mathbf{y}\odot h(\mathbf{X\theta }) XθyTlogh(Xθ)=(yTyTh(Xθ))T=yyh(Xθ)
②求 ∂ ( E − y ) T log ⁡ ( E − h ( X θ ) ) ∂ X θ \frac{\partial (\mathbf{E-y} )^{T} \log (\mathbf{E}-h(\mathbf{X\theta}))}{\partial \mathbf{X\theta}} Xθ(Ey)Tlog(Eh(Xθ)),标量对向量求导,使用矩阵微分:
d [ ( E − y ) T log ⁡ ( E − h ( X θ ) ) ] = t r [ d ( ( E − y ) T log ⁡ ( E − h ( X θ ) ) ) ] ( 标 量 的 迹 ) = t r [ ( E − y ) T d log ⁡ ( E − h ( X θ ) ) ] ( 矩 阵 乘 法 法 则 ) = t r [ − ( E − y ) T ⊙ 1 E − h ( X θ ) ) ⊙ h ( X θ ) ⊙ ( E − h ( X θ ) ) d X θ ] ( 逐 元 素 微 分 ) = t r [ − ( E − y ) T ⊙ h ( X θ ) d X θ ] \begin{aligned} d[(\mathbf{E-y} )^{T} \log (\mathbf{E}-h(\mathbf{X\theta}))]&=tr[d((\mathbf{E-y} )^{T} \log (\mathbf{E}-h(\mathbf{X\theta})))](标量的迹) \\&=tr[(\mathbf{E-y} )^{T} d\log (\mathbf{E}-h(\mathbf{X\theta}))](矩阵乘法法则) \\&=tr[-(\mathbf{E-y} )^{T}\odot\frac{1}{\mathbf{E}-h(\mathbf{X\theta}))}\odot h(\mathbf{X\theta})\odot (\mathbf{E}-h(\mathbf{X\theta}))d\mathbf{X\theta}](逐元素微分) \\&=tr[-(\mathbf{E-y} )^{T}\odot h(\mathbf{X\theta})d\mathbf{X\theta} ] \end{aligned} d[(Ey)Tlog(Eh(Xθ))]=tr[d((Ey)Tlog(Eh(Xθ)))]=tr[(Ey)Tdlog(Eh(Xθ))]=tr[(Ey)TEh(Xθ))1h(Xθ)(Eh(Xθ))dXθ]=tr[(Ey)Th(Xθ)dXθ]
最终得:
∂ ( E − y ) T log ⁡ ( E − h ( X θ ) ) ∂ X θ = [ − ( E − y ) T ⊙ h ( X θ ) d X θ ] T = − ( E − y ) ⊙ h ( X θ ) d X θ = y ⊙ h ( X θ ) − h ( X θ ) \frac{\partial (\mathbf{E-y} )^{T} \log (\mathbf{E}-h(\mathbf{X\theta}))}{\partial \mathbf{X\theta}}=[-(\mathbf{E-y} )^{T}\odot h(\mathbf{X\theta})d\mathbf{X\theta} ]^{T} =-(\mathbf{E-y} )\odot h(\mathbf{X\theta})d\mathbf{X\theta}=\mathbf{y}\odot h(\mathbf{X\theta})- h(\mathbf{X\theta}) Xθ(Ey)Tlog(Eh(Xθ))=[(Ey)Th(Xθ)dXθ]T=(Ey)h(Xθ)dXθ=yh(Xθ)h(Xθ)
综上,最终得损失函数对参数的梯度:
∂ J ( θ ) ∂ θ = − ( ∂ X θ ∂ θ ) T ∂ y T log ⁡ h ( X θ ) ∂ X θ − ( ∂ X θ ∂ θ ) T ∂ ( E − y ) T log ⁡ ( E − h ( X θ ) ) ∂ X θ = X T [ − y + y ⊙ h ( X θ ) − y ⊙ h ( X θ ) + h ( X θ ) ] = X T [ h ( X θ ) − y ] \begin{aligned} \frac{\partial J(\theta )}{\partial \theta } &=-(\frac{\partial \mathbf{X\theta }}{\partial \theta })^{T} \frac{\partial \mathbf{y} ^{T}\log h(\mathbf{X\theta } )}{\partial \mathbf{X\theta } }-(\frac{\partial \mathbf{X\theta }}{\partial \theta })^{T} \frac{\partial (\mathbf{E-y} )^{T} \log (\mathbf{E}-h(\mathbf{X\theta}))}{\partial \mathbf{X\theta }} \\&=\mathbf{X} ^{T} [-\mathbf{y}+\mathbf{y}\odot h(\mathbf{X\theta })-\mathbf{y}\odot h(\mathbf{X\theta})+h(\mathbf{X\theta}) ] \\&=\mathbf{X} ^{T} [h(\mathbf{X\theta})-\mathbf{y}] \end{aligned} θJ(θ)=(θXθ)TXθyTlogh(Xθ)(θXθ)TXθ(Ey)Tlog(Eh(Xθ))=XT[y+yh(Xθ)yh(Xθ)+h(Xθ)]=XT[h(Xθ)y]
则第 k k k次迭代的梯度向量为:
X T [ h ( X θ k ) − y ] \mathbf{X} ^{T} [h(\mathbf{X\theta}^{k})-\mathbf{y}] XT[h(Xθk)y]
k + 1 k+1 k+1次的迭代值为:
θ k + 1 = θ k − λ X T [ h ( X θ k ) − y ] \theta^{k+1}=\theta^{k}-\lambda\mathbf{X} ^{T} [h(\mathbf{X\theta}^{k})-\mathbf{y}] θk+1=θkλXT[h(Xθk)y]

6.Logistic模型正则化

L1正则:
J ( θ ) = − y T log ⁡ h ( X θ ) − ( E − y ) T log ⁡ ( E − h ( X θ ) ) + λ ∣ ∣ θ ∣ ∣ 1 J(\theta )=-\mathbf{y} ^{T}\log h(\mathbf{X\theta } )-(\mathbf{E-y} )^{T} \log (\mathbf{E}-h(\mathbf{X\theta}))+\lambda ||\theta ||_{1} J(θ)=yTlogh(Xθ)(Ey)Tlog(Eh(Xθ))+λθ1
L2正则:
J ( θ ) = − y T log ⁡ h ( X θ ) − ( E − y ) T log ⁡ ( E − h ( X θ ) ) + λ ∣ ∣ θ ∣ ∣ 2 2 J(\theta )=-\mathbf{y} ^{T}\log h(\mathbf{X\theta } )-(\mathbf{E-y} )^{T} \log (\mathbf{E}-h(\mathbf{X\theta}))+\lambda ||\theta ||_{2}^{2} J(θ)=yTlogh(Xθ)(Ey)Tlog(Eh(Xθ))+λθ22

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值