机器学习系列(八)——Logistic回归解决二分类问题

分类问题的本质是确定样本 x x x属于类别 c i c_i ci的概率 p ( C i ∣ x ) p(C_i|x) p(Cix)。在上周整理的分类问题中,我们采用生成式方法,借助贝叶斯公式和极大似然估计,首先计算出 p ( x ∣ C i ) p(x|C_i) p(xCi) p ( x , C i ) p(x,C_i) p(x,Ci),然后再计算出 p ( C i ∣ x ) p(C_i|x) p(Cix)。以二分类为例:
p ( C 1 ∣ x ) = p ( C 1 , x ) p ( x ) = p ( x ∣ C 1 ) p ( C 1 ) p ( x ) = p ( x ∣ C 1 ) p ( C 1 ) p ( x ∣ C 1 ) p ( C 1 ) + p ( x ∣ C 2 ) p ( C 2 ) (1) p(C_1|x)=\frac{p(C_1,x)}{p(x)}=\frac{p(x|C_1)p(C_1)}{p(x)}=\frac{p(x|C_1)p(C_1)}{p(x|C_1)p(C_1)+p(x|C_2)p(C_2)} \tag 1 p(C1x)=p(x)p(C1,x)=p(x)p(xC1)p(C1)=p(xC1)p(C1)+p(xC2)p(C2)p(xC1)p(C1)(1)

如果 p ( C 1 ∣ x ) > 0.5 p(C_1|x)>0.5 p(C1x)>0.5,则将 x x x归入类别 C 1 C_1 C1;如果 p ( C 1 ∣ x ) < 0.5 p(C_1|x)<0.5 p(C1x)<0.5,则将 x x x归入类别 C 2 C_2 C2。一般情况下,我们将 p ( x ∣ C 1 ) p(x|C_1) p(xC1) p ( x ∣ C 2 ) p(x|C_2) p(xC2)假设成服从不同 μ 1 \mu_1 μ1 μ 2 \mu_2 μ2但是相同 Σ \Sigma Σ的高斯分布。因为高斯分布是自然界中最常见的一种分布,两个分布同用一个协方差矩阵 Σ \Sigma Σ有助于减少参数数目,防止过拟合。

Logistic回归推导

现在我们尝试对上述后验概率(1)进行变形
p ( C 1 ∣ x ) = p ( x ∣ C 1 ) p ( C 1 ) p ( x ∣ C 1 ) p ( C 1 ) + p ( x ∣ C 2 ) p ( C 2 ) = 1 1 + p ( x ∣ C 2 ) p ( C 2 ) p ( x ∣ C 1 ) p ( C 1 ) = 1 1 + e x p ( − z ) = σ ( z ) \begin{aligned} p(C_1|x) =& \frac{p(x|C_1)p(C_1)}{p(x|C_1)p(C_1)+p(x|C_2)p(C_2)}\\ =& \frac{1}{1+\frac{p(x|C_2)p(C_2)}{p(x|C_1)p(C_1)}}\\ =& \frac{1}{1+exp(-z)}\\ =& \sigma(z) \end{aligned} p(C1x)====p(xC1)p(C1)+p(xC2)p(C2)p(xC1)p(C1)1+p(xC1)p(C1)p(xC2)p(C2)11+exp(z)1σ(z)

其中 z = l n p ( x ∣ C 1 ) p ( C 1 ) p ( x ∣ C 2 ) p ( C 2 ) z=ln\frac{p(x|C_1)p(C_1)}{p(x|C_2)p(C_2)} z=lnp(xC2)p(C2)p(xC1)p(C1)。上面 σ ( z ) = 1 1 + e x p ( − z ) \sigma(z)=\frac{1}{1+exp(-z)} σ(z)=1+exp(z)1正是Sigmoid函数,该函数具有良好的性质,能够将 z z z值转化为一个(0,1)区间内的值,并且 z = 0 z=0 z=0时, σ ( z ) = 0.5 \sigma(z)=0.5 σ(z)=0.5。同时该函数是单调连续可微的。Sigmoid函数的图像如下图所示:
在这里插入图片描述
现在还需要确定的是 z z z是什么,我们继续对 z z z进行推导
z = l n p ( x ∣ C 1 ) p ( C 1 ) p ( x ∣ C 2 ) p ( C 2 ) = l n p ( x ∣ C 1 ) p ( x ∣ C 2 ) + l n p ( C 1 ) p ( C 2 ) = l n 1 ( 2 π ) D / 2 1 ∣ Σ 1 ∣ 1 / 2 e x p { − 1 2 ( x − μ 1 ) T ( Σ 1 ) − 1 ( x − μ 1 ) } 1 ( 2 π ) D / 2 1 ∣ Σ 2 ∣ 1 / 2 e x p { − 1 2 ( x − μ 2 ) T ( Σ 2 ) − 1 ( x − μ 2 ) } + l n N 1 N 1 + N 2 N 2 N 1 + N 2 = l n ∣ Σ 2 ∣ 1 / 2 ∣ Σ 1 ∣ 1 / 2 − 1 2 [ ( x − μ 1 ) T ( Σ 1 ) − 1 ( x − μ 1 ) − ( x − μ 2 ) T ( Σ 2 ) − 1 ( x − μ 2 ) ] + l n N 1 N 2 = ( μ 1 − μ 2 ) T Σ − 1 x − 1 2 ( μ 1 ) T Σ − 1 μ 1 + 1 2 ( μ 2 ) T Σ − 1 μ 2 + l n N 1 N 2 (2) \begin{aligned} z =& ln\frac{p(x|C_1)p(C_1)}{p(x|C_2)p(C_2)}\\ =& ln\frac{p(x|C_1)}{p(x|C_2)}+ln\frac{p(C_1)}{p(C_2)}\\ =& ln\frac{\frac{1}{(2\pi)^{D/2}}\frac{1}{|\Sigma^1|^{1/2}}exp\{-\frac{1}{2}(x-\mu^1)^T(\Sigma^1)^{-1}(x-\mu^1)\}}{\frac{1}{(2\pi)^{D/2}}\frac{1}{|\Sigma^2|^{1/2}}exp\{-\frac{1}{2}(x-\mu^2)^T(\Sigma^2)^{-1}(x-\mu^2)\}}+ln\frac{\frac{N_1}{N_1+N_2}}{\frac{N_2}{N_1+N_2}}\\ =& ln\frac{|\Sigma^2|^{1/2}}{|\Sigma^1|^{1/2}}-\frac{1}{2}[(x-\mu^1)^T(\Sigma^1)^{-1}(x-\mu^1)-(x-\mu^2)^T(\Sigma^2)^{-1}(x-\mu^2)]+ln\frac{N_1}{N_2}\\ =& (\mu^1-\mu^2)^T\Sigma^{-1}x-\frac{1}{2}(\mu^1)^T\Sigma^{-1}\mu^1+\frac{1}{2}(\mu^2)^T\Sigma^{-1}\mu^2+ln\frac{N_1}{N_2}\tag {2} \end{aligned} z=====lnp(xC2)p(C2)p(xC1)p(C1)lnp(xC2)p(xC1)+lnp(C2)p(C1)ln(2π)D/21Σ21/21exp{21(xμ2)T(Σ2)1(xμ2)}(2π)D/21Σ11/21exp{21(xμ1)T(Σ1)1(xμ1)}+lnN1+N2N2N1+N2N1lnΣ11/2Σ21/221[(xμ1)T(Σ1)1(xμ1)(xμ2)T(Σ2)1(xμ2)]+lnN2N1(μ1μ2)TΣ1x21(μ1)TΣ1μ1+21(μ2)TΣ1μ2+lnN2N1(2)

其中从第四行到第五行是因为 Σ 1 = Σ 2 = Σ \Sigma^1=\Sigma^2=\Sigma Σ1=Σ2=Σ。再进一步观察式(2), ( μ 1 − μ 2 ) T Σ − 1 (\mu^1-\mu^2)^T\Sigma^{-1} (μ1μ2)TΣ1的结果是一个向量,而 x x x后面一串是一个数字,因此 z z z可以写成 z = w T x + b z=w^Tx+b z=wTx+b的形式,所以
p ( C 1 ∣ x ) = σ ( w T x + b ) = 1 1 + e − ( w T x + b ) (3) p(C_1|x)=\sigma(w^Tx+b)=\frac{1}{1+e^{-(w^Tx+b)}} \tag 3 p(C1x)=σ(wTx+b)=1+e(wTx+b)1(3)

上式(3)就称为Logistic 回归。在生成模型中,我们先求出 μ 1 \mu^1 μ1 μ 2 \mu^2 μ2 Σ \Sigma Σ,然后求出 w w w b b b。这样做难免显得太过复杂,我们希望直接找出 w w w b b b。结合机器学习的三个步骤,第一步确定一个模型 f ( x ) f(x) f(x),这一步已经完成 f ( x ) = p ( C 1 ∣ x ) f(x)=p(C_1|x) f(x)=p(C1x)。如果 p ( C 1 ∣ x ) > 0.5 p(C_1|x)>0.5 p(C1x)>0.5,则输出 C 1 C_1 C1,否则输出 C 2 C_2 C2。接下来需要做的是选择一个恰当的损失函数用以度量找出来的 w w w b b b的好坏。

Logistic回归损失函数

根据以往回归模型的经验,损失函数的选取第一反应是均方误差函数,因此我们首先尝试使用均方误差。为了使目标标签 C 1 C_1 C1 C 2 C_2 C2能够参与运算,我们需要将其数字化,规定:样本类别为 C 1 C_1 C1 y ^ = 1 \hat{y}=1 y^=1;样本类别为 C 2 C_2 C2 y ^ = 0 \hat{y}=0 y^=0。因此损失函数可以写作:
L ( f ) = 1 2 ∑ i = 1 m ( f ( x ( i ) ) − y ^ ( i ) ) 2 L(f)=\frac{1}{2}\sum_{i=1}^m(f(x^{(i)})-\hat{y}^{(i)})^2 L(f)=21i=1m(f(x(i))y^(i))2

对其进行求导
∂ ( f ( x ) − y ^ ) 2 ∂ w i = 2 ( f ( x ) − y ^ ) f ( x ) ( 1 − f ( x ) ) x i \frac{\partial(f(x)-\hat{y})^2}{\partial w_i}=2(f(x)-\hat{y})f(x)(1-f(x))x_i wi(f(x)y^)2=2(f(x)y^)f(x)(1f(x))xi

具体分析,当 y ^ ( i ) = 1 \hat{y}^{(i)}=1 y^(i)=1 f ( x ( i ) ) = 0 f(x^{(i)})=0 f(x(i))=0,说明模型误差还很大,距离目标很远,但上式导数 ∂ L ( f ( x ( i ) ) ) / ∂ w i = 0 \partial L(f(x^{(i)}))/\partial w_i=0 L(f(x(i)))/wi=0;另一种情况,当 y ^ ( i ) = 0 \hat{y}^{(i)}=0 y^(i)=0 f ( x ( i ) ) = 1 f(x^{(i)})=1 f(x(i))=1,同样说明模型误差还很大,距离目标很远,但上式导数 ∂ L ( f ( x ( i ) ) ) / ∂ w i = 0 \partial L(f(x^{(i)}))/\partial w_i=0 L(f(x(i)))/wi=0。而所有样本或者大多数样本的导数等于零时, ∂ L / ∂ w i ≈ 0 \partial L/\partial w_i\approx 0 L/wi0,参数将不再更新,但此时我们明显没有找到最佳参数,所以均方误差函数不是一个恰当的损失度量函数。

换一个角度思考,既然Logistic回归计算出了 p ( C 1 ∣ x ) p(C_1|x) p(C1x),那么对于那些属于 C 2 C_2 C2类别的样本其概率为 p ( C 2 ∣ x ) = 1 − p ( C 1 ∣ x ) p(C_2|x)=1-p(C_1|x) p(C2x)=1p(C1x)。我们同样可以采用极大似然法来估计 w w w b b b,即希望每个样本属于其真实标记的概率越大越好。
L ( w , b ) = l n ∏ i = 1 m p ( y ^ ( i ) ∣ x ( i ) ) = ∑ i = 1 m l n p ( y ^ ( i ) ∣ x ( i ) ) (4) \begin{aligned} L(w,b) &=& ln\prod_{i=1}^mp(\hat{y}^{(i)}|x^{(i)})\\ &=& \sum_{i=1}^mlnp(\hat{y}^{(i)}|x^{(i)})\\ \tag 4 \end{aligned} L(w,b)==lni=1mp(y^(i)x(i))i=1mlnp(y^(i)x(i))(4)

又因为
p ( y ^ ( i ) ∣ x ( i ) ) = y ^ ( i ) f ( x ( i ) ) + ( 1 − y ^ ( i ) ) ( 1 − f ( x ( i ) ) ) (5) p(\hat{y}^{(i)}|x^{(i)})=\hat{y}^{(i)}f(x^{(i)})+(1-\hat{y}^{(i)})(1-f(x^{(i)})) \tag 5 p(y^(i)x(i))=y^(i)f(x(i))+(1y^(i))(1f(x(i)))(5)

将式(5)带入(4),同时将最大化变成最小化,可得
L ( w , b ) = − ∑ i = 1 m [ y ^ ( i ) l n f ( x ( i ) ) + ( 1 − y ^ ( i ) ) l n ( 1 − f ( x ( i ) ) ) ] (6) L(w,b)=-\sum_{i=1}^m[\hat{y}^{(i)}lnf(x^{(i)})+(1-\hat{y}^{(i)})ln(1-f(x^{(i)}))] \tag 6 L(w,b)=i=1m[y^(i)lnf(x(i))+(1y^(i))ln(1f(x(i)))](6)

上式(6)称为交叉熵(cross entropy)损失函数,同样采用梯度下降法求得最优解
w ∗ , b ∗ = a r g min ⁡ w , b L ( w , b ) w^*,b^*=arg \min_{w,b}L(w,b) w,b=argw,bminL(w,b)

寻找最佳参数

交叉熵损失函数虽然看起来形式复杂,但是求导并不复杂
∂ L ( w , b ) ∂ w j = − ∑ i = 1 m ( y ^ ( i ) − f ( x ( i ) ) ) x j ( i ) ∂ L ( w , b ) ∂ b = − ∑ i = 1 m ( y ^ ( i ) − f ( x ( i ) ) ) \frac{\partial L(w,b)}{\partial w_j}=-\sum_{i=1}^m\left(\hat{y}^{(i)}-f(x^{(i)})\right)x_j^{(i)}\\ \frac{\partial L(w,b)}{\partial b}=-\sum_{i=1}^m\left(\hat{y}^{(i)}-f(x^{(i)})\right) wjL(w,b)=i=1m(y^(i)f(x(i)))xj(i)bL(w,b)=i=1m(y^(i)f(x(i)))

求导结果与线性回归均方误差的导数一模一样。采用梯度下降算法更新参数
w i = w i − η ∑ i = 1 m − ( y ^ ( i ) − f ( x ( i ) ) ) x j ( i ) b = b − η ∑ i = 1 m − ( y ^ ( i ) − f ( x ( i ) ) ) w_i=w_i-\eta\sum_{i=1}^m-\left(\hat{y}^{(i)}-f(x^{(i)})\right)x_j^{(i)}\\ b=b-\eta\sum_{i=1}^m-\left(\hat{y}^{(i)}-f(x^{(i)})\right) wi=wiηi=1m(y^(i)f(x(i)))xj(i)b=bηi=1m(y^(i)f(x(i)))

关于交叉熵损失函数与均方误差损失函数的对比可以参考下图
在这里插入图片描述
可以看出均方误差损失函数的曲面近乎是平坦的,因此梯度下降很容易停下来,而交叉熵损失函数则不会出现这个问题。

总结

Logistic回归相较于生成式模型操作简单,并且准确率也比较的高,但这并不表明Logistic回归能够解决所有的二分类问题,因为Logistic回归的分界面是一个平面,因此对于线性不可分问题,Logistic回归将束手无策,需要借助更加复杂的分类器。

参考文献

李宏毅机器学习2017年秋

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值