机器学习算法系列(二):逻辑回归

从概率分布的角度推导逻辑回归的损失函数

逻辑回归是一种分类算法。

  • y = w T x + b y=\mathbf{w^{T} x}+b y=wTx+b
  • 采用非线性映射: z = 1 1 + e − y z=\frac{1}{1+e^{-y}} z=1+ey1
  • 逻辑回归一定选取sigmoid函数,其实就是把y的值从 ( − ∞ , + ∞ ) (-\infty,+\infty) (,+)压缩到 ( 0 , 1 ) (0,1) (0,1)

其实,逻辑回归本质上对应于(0-1)分布,说明如下:

h ( x ) = g ( θ T x ) = 1 1 + e − θ T x h(\mathbf{x})=g(\mathbf{\theta^Tx})=\frac{1}{1+e^{-\mathbf{\theta^Tx}}} h(x)=g(θTx)=1+eθTx1

则: h ( x ) h(\mathbf{x}) h(x)代表了结果为1的概率。即y取1的概率为h(x),y取0的概率为1-h(x)
P ( y = 1 ∣ x , θ ) = h ( x ) P ( y = 0 ∣ x , θ ) = 1 − h ( x ) P(y=1|\mathbf{x,\theta})=h(\mathbf{x})\\ P(y=0|\mathbf{x,\theta})=1-h(\mathbf{x}) P(y=1x,θ)=h(x)P(y=0x,θ)=1h(x)
于是:
P ( y ∣ x , θ ) = h ( x ) y ( 1 − h ( x ) ) 1 − y P(y|\mathbf{x,\theta})=h(\mathbf{x})^y(1-h(\mathbf{x}))^{1-y} P(yx,θ)=h(x)y(1h(x))1y
似然函数:
L ( θ ) = ∏ i = 1 n h ( x i ) y i ( 1 − h ( x i ) ) 1 − y i L(\mathbf{\theta})=\prod_{i=1}^{n}h(\mathbf{x}^i)^{y^i}(1-h(\mathbf{x}^i))^{1-y^i} L(θ)=i=1nh(xi)yi(1h(xi))1yi
对数似然函数:
l n L ( θ ) = ∑ i = 1 n [ y i l n h ( x i ) + ( 1 − y i ) l n ( 1 − h ( x i ) ) ] lnL(\mathbf{\theta})=\sum_{i=1}^{n}[y^ilnh(\mathbf{x}^i)+(1-y^i)ln(1-h(\mathbf{x}^i))] lnL(θ)=i=1n[yilnh(xi)+(1yi)ln(1h(xi))]
其实,该函数是一个凹函数,也就是说 − l n L ( θ ) -lnL(\mathbf{\theta}) lnL(θ)是一个凸函数,证明如下:

根据“凸函数的非负线性组合依旧是凸函数”的原则,我们只需要证明 − l n ( h ( x ) ) 和 − l n ( 1 − h ( x ) ) -ln(h(\mathbf{x}))和-ln(1-h(\mathbf{x})) ln(h(x))ln(1h(x))是凸函数即可。
− l n ( h ( x ) ) = l n ( 1 + e − θ T x ) ∇ θ l n ( 1 + e − θ T x ) = e − θ T x 1 + e − θ T x ( − x ) = ( h ( x ) − 1 ) x ∇ θ 2 l n ( 1 + e − θ T x ) = h ( x ) ( 1 − h ( x ) ) x x T \begin{aligned}-ln(h(\mathbf{x}))&=ln(1+e^{-\mathbf{\theta^Tx}})\\ \nabla_{\theta}ln(1+e^{-\mathbf{\theta^Tx}})&=\frac{e^{-\mathbf{\theta^Tx}}}{1+e^{-\mathbf{\theta^Tx}}}(-\mathbf{x})=(h(\mathbf{x})-1)\mathbf{x}\\ \nabla_{\theta}^2ln(1+e^{-\mathbf{\theta^Tx}})&=h(\mathbf{x})(1-h(\mathbf{x}))\mathbf{x}\mathbf{x^T} \end{aligned} ln(h(x))θln(1+eθTx)θ2ln(1+eθTx)=ln(1+eθTx)=1+eθTxeθTx(x)=(h(x)1)x=h(x)(1h(x))xxT
注意:在求Hessian矩阵时,需要对 x \mathbf{x} x做转置。

对于任意的向量 z \mathbf{z} z
z T h ( x ) ( 1 − h ( x ) ) x x T z = h ( x ) ( 1 − h ( x ) ) ⎵ 常 数 ( x T z ) 2 ⎵ 常 数 ≥ 0 \mathbf{z^T}h(\mathbf{x})(1-h(\mathbf{x}))\mathbf{x}\mathbf{x^T}\mathbf{z}=\underbrace{h(\mathbf{x})(1-h(\mathbf{x}))}_{常数}\underbrace{(\mathbf{x^T}\mathbf{z})^2}_{常数} \ge0 zTh(x)(1h(x))xxTz= h(x)(1h(x)) (xTz)20
所以hessian矩阵是半正定矩阵,所以该函数是凸函数。

同理,可以证明 − l n ( 1 − h ( x ) ) -ln(1-h(\mathbf{x})) ln(1h(x))是凸函数。

这样,我们接下来就可以用梯度下降法来求解最优的 θ \theta θ值了。

所以我们也可以得出这样的结论:逻辑回归的损失函数就是对数似然函数的负值。

直观理解逻辑回归的损失函数

cost ⁡ ( h θ ( x ) , y ) = { − log ⁡ ( h θ ( x ) )  if  y = 1 − log ⁡ ( 1 − h θ ( x ) )  if  y = 0 \operatorname{cost}\left(h_{\theta}(x), y\right)=\left\{\begin{aligned}-\log \left(h_{\theta}(x)\right) & \text { if } y=1 \\-\log \left(1-h_{\theta}(x)\right) & \text { if } y=0 \end{aligned}\right. cost(hθ(x),y)={log(hθ(x))log(1hθ(x)) if y=1 if y=0

分析上面的损失函数:

  • 当真实值 y = 1 y=1 y=1时,预测值 h ( x ) h(x) h(x)越接近1,损失越接近0;预测值越接近0,损失值接近正无穷。

  • 当真实值 y = 0 y=0 y=0时,预测值 h ( x ) h(x) h(x)越接近0,损失越接近0;预测值越接近1,损失值接近正无穷。

    因此,符合要求。

从图中也可以看出,两个函数均是凸函数,因此凸函数的线性组合依旧是凸函数,可以得知损失函数是凸函数,可以直接采用梯度下降法等优化算法求解。整理后,损失函数如下:
J = − ∑ i = 1 n [ y i l n h ( x i ) + ( 1 − y i ) l n ( 1 − h ( x i ) ) ] J=-\sum_{i=1}^{n}[y^ilnh(\mathbf{x}^i)+(1-y^i)ln(1-h(\mathbf{x}^i))] J=i=1n[yilnh(xi)+(1yi)ln(1h(xi))]

向量形式为:
J = − 1 m [ l n h ( x ) T y + l n ( 1 − h ( x ) ) T ( 1 − y ) ] J=-\frac{1}{m}[lnh(\mathbf{x})^T\mathbf{y}+ln(1-h(\mathbf{x}))^T\mathbf{(1-y)}] J=m1[lnh(x)Ty+ln(1h(x))T(1y)]

对损失函数求梯度可以得到:
∂ J ( θ ) ∂ θ j = 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) \frac{\partial J(\theta)}{\partial\theta_{j}} = \frac{1}{m}\sum_{i=1}^{m} ( h_\theta (x^{(i)})-y^{(i)})x^{(i)}_{j} θjJ(θ)=m1i=1m(hθ(x(i))y(i))xj(i)
向量形式为:(向量形式不好直接推导,可以先推导上面的结果,然后转为向量形式)向量化的结果在变成时特别方便。

∂ J ( θ ) ∂ θ = 1 m X T ( g ( X θ ) − y ) \frac{\partial J(\theta)}{\partial\theta} = \frac{1}{m} X^T(g(X\theta)-y) θJ(θ)=m1XT(g(Xθ)y)
为什么逻辑回归的损失函数不采用最小二乘呢?

  • 原因1:逻辑回归本质上是从(0-1)分布而来,而线性回归本质上是从高斯分布而来,二者就不应该混用 。
  • 原因2:假设使用最下二乘,那么损失函数为 ∑ i = 1 n [ y i − g ( θ T x i ) ] 2 \sum_{i=1}^{n}[y^i-g(\mathbf{\theta ^Tx}^i)]^2 i=1n[yig(θTxi)]2,但是 y i y^i yi的取值只有0和1,而g函数的取值为 [ 0 , 1 ] [0,1] [0,1],两者都不对应,误差肯定很大,这个函数也不是凸函数,有许多局部极小值。

从二分类过渡到多分类

有两种方法,即one vs one 和 one vs rest。

  • one vs one。考虑N个类别,c1,c2,c3,c4…cn。这种方法将其中的任意两个类别进行配对,从而产生n(n-1)/2个分类任务。比如,我们为区分c1和c2构建一个分类器,该分类器把c1视为正类,把c2视为负类。在测试阶段,新样本将同时提交给所有分类器,于是,我们就可以得到n(n-1)/2个分类结果,最终结果可以通过投票产生。
  • one vs rest。每次将一个类的样例作为正例,所有其它类的样例作为负例。训练N个分类结果。在测试时,计算每个分类器预测为正例的概率,取最大的那一个作为最终结果。这种方法要求算法必须能够输出分类的概率,比如逻辑回归。当算法仅仅给出一个决策性的结果,不能给出分类概率时,这种方法便不适用,比如(svm)
    *

参考自《机器学习(周志华)》

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值