台大李宏毅Machine Learning学习笔记(六)——逻辑回归(Logistic Regression)

1.逻辑回归

  在上一讲分类里面我们推导出了逻辑函数(Logistic function)或者称作Sigmoid函数: (1) σ ( z ) = 1 1 + e x p ( − z ) \sigma(z)=\frac1{1+exp(-z)}\tag1 σ(z)=1+exp(z)1(1)图1

图1 逻辑函数
  现在,把线性特征求和,再代入该函数,得到函数: (2) f w , b = σ ( ∑ i w i x i + b ) f_{w,b}=\sigma\left(\sum_iw_ix_i+b\right)\tag2 fw,b=σ(iwixi+b)(2)它的输出都介于0到1之间,将我们的数据代入该函数,根据得到的值进行分类,我们就称这种做法为逻辑回归。逻辑回归用于处理二分类问题比较多,也可以处理多分类问题,后面会介绍,现在以二分类问题为例。 图2
图2 逻辑回归

图3
图3 评判函数的好坏
  在前面,我们得到了逻辑回归的模型,现在推导损失函数:假设数据是基于 f w , b ( x ) = P w , b ( c 1 ∣ x ) f_{w,b}(x)=P_{w,b}(c_1|x) fw,b(x)=Pw,b(c1x)生成的,那么有似然函数: (3) L ( w , b ) = f w , b ( x 1 ) f w , b ( x 2 ) ( 1 − f w , b ( x 3 ) ) ⋯ f w , b ( x N ) L(w,b)=f_{w,b}(x^1)f_{w,b}(x^2)(1-f_{w,b}(x^3))\cdots f_{w,b}(x^N)\tag3 L(w,b)=fw,b(x1)fw,b(x2)(1fw,b(x3))fw,b(xN)(3)极大化该函数(实际上是极小化它的相反数): (4) w ∗ , b ∗ = a r g max ⁡ w , b = a r g min ⁡ w , b − l n L ( w , b ) w^*,b^*=arg\max_{w,b}=arg\min_{w,b}-lnL(w,b)\tag4 w,b=argw,bmax=argw,bminlnL(w,b)(4)则对数似然函数 − l n L ( w , b ) -lnL(w,b) lnL(w,b)可写成如下的形式:
图4

图4 对数似然函数
继续写成下面的形式

图5

图5 交叉熵

  我们称上图中的 (5) − [ y ^ n l n f w , b ( x n ) + ( 1 − y n ) l n ( 1 − f w , b ( x n ) ) ] -\left[\hat y^nlnf_{w,b}(x^n)+(1-y^n)ln(1-f_{w,b}(x^n))\right]\tag5 [y^nlnfw,b(xn)+(1yn)ln(1fw,b(xn))](5)为交叉熵(cross entropy)函数,将它我们的作为损失函数。

  找一个最好的函数即求 − l n L ( w , b ) -lnL(w,b) lnL(w,b)的极值。仍然用梯度下降法 (6) ∂ ( − l n L ( w , b ) ) ∂ w i = ∑ n − [ y ^ n ∂ ( l n f w , b ( x n ) ) ∂ w i + ( 1 − y ^ n ) ∂ l n ( 1 − f w , b ( x n ) ) ∂ w i ] = ∑ n − [ y ^ n ∂ ( l n σ ( z ) ) ∂ z ∂ z ∂ w i + ( 1 − y ^ n ) ∂ l n ( 1 − σ ( z ) ) ∂ z ∂ z ∂ w i ] = ∑ n − [ y ^ n 1 σ ( z ) ∂ σ ( z ) σ z + ( 1 − y ^ n ) ( − 1 1 − σ ( z ) ) ∂ σ ( z ) ∂ z ] = ∑ n − [ y ^ n ( 1 − σ ( z ) ) + ( 1 − y ^ n ) ( − σ ( z ) ) ] = ∑ n − [ y ^ n ( 1 − f w , b ( x n ) x i n − ( 1 − y ^ n ) f w , b ( x n ) x i n ) ] = ∑ n − ( y ^ n − f w , b ( x n ) ) x i n \begin{aligned} \frac{\partial{(-lnL(w,b))}}{\partial w_i}&=\sum_n- \left [\hat y^n\frac{\partial(lnf_{w,b}(x^n))}{\partial w_i}+(1-\hat y^n)\frac{\partial ln\left (1-f_{w,b}(x^n)\right)}{\partial w_i}\right]\\&=\sum_n-\left[\hat y^n\frac{\partial(ln\sigma(z))}{\partial z}\frac{\partial z}{\partial w_i}+(1-\hat y^n)\frac{\partial ln\left(1-\sigma(z)\right)}{\partial z}\frac{\partial z}{\partial w_i}\right]\\&=\sum_n-\left[\hat y^n\frac1{\sigma(z)}\frac{\partial \sigma(z)}{\sigma z}+(1-\hat y^n)\left(-\frac1{1-\sigma(z)}\right)\frac{\partial\sigma (z)}{\partial z}\right]\\&=\sum_n-\left[\hat y^n(1-\sigma(z))+(1-\hat y^n)(-\sigma(z))\right]\\&=\sum_n-\left[\hat y^n(1-f_{w,b}(x^n)x_i^n-(1-\hat y^n)f_{w,b}(x^n)x_i^n)\right]\\&=\sum_n-\left(\hat y^n-f_{w,b}(x^n)\right)x_i^n \end{aligned}\tag6 wi(lnL(w,b))=n[y^nwi(lnfw,b(xn))+(1y^n)wiln(1fw,b(xn))]=n[y^nz(lnσ(z))wiz+(1y^n)zln(1σ(z))wiz]=n[y^nσ(z)1σzσ(z)+(1y^n)(1σ(z)1)zσ(z)]=n[y^n(1σ(z))+(1y^n)(σ(z))]=n[y^n(1fw,b(xn)xin(1y^n)fw,b(xn)xin)]=n(y^nfw,b(xn))xin(6)其中, (7) { f w , b ( x ) = σ ( z ) = 1 1 + e x p ( ) z = w ⋅ x + b = ∑ i w i x i + b \begin{cases}&f_{w,b}(x)=\sigma(z)=\frac1{1+exp()}&\\&z=w\cdot x+b=\sum\limits_iw_ix_i+b&\end{cases}\tag7 fw,b(x)=σ(z)=1+exp()1z=wx+b=iwixi+b(7)更新参数: (8) w i = w i − η ∑ n − ( y ^ n − f w , b ( x n ) ) x i n w_i=w_i-\eta\sum_n-(\hat y^n-f_{w,b}(x^n))x_i^n\tag8 wi=wiηn(y^nfw,b(xn))xin(8)离目标越远,更新越快。
图6

图6 逻辑回归和线性回归的比较
这里说明一下为什么不使用前面的最小二乘形式的函数老座位损失函数函数,如下图:
图7
图7 无法更新参数
从图中可以看出,如果用最小二乘形式的损失函数,求出的导数一直零,无法更新参数。

2.生成模型和分类的对比

  从前面的推导过程可以看出生成模型和逻辑回归具有相同的数学模型,只是我们用不同的方法求参数 w , b w,b w,b。对比如下:图8

图8 生成模型和分类的对比
  在生成模型中我们做了一些假设:假设数据服从高斯分布、各属性之间相互独立等,然后用极大似然估计求出均值和协方差阵,继而得出参数 w , b w,b w,b。但是在分类中我们直接用梯度下降求出 w , b w,b w,b。明显两者得出的结果是不同的
图9
图9 生成模型准确率低
一般而言,生成模型准确率低一些,可以看下面的一个例子:
图10
图10 例子
  假设有训练集如上图所示,测试集为上图中的1,1。我们自然想到这是来自于class1的数据,但是用朴素贝叶斯计算会显示结果来自于class2。这是由于我们做了假设。当然生成模型也有优点:

  • 由于进行了概率分布的假设,因此不需要大量的数据就可以做预测分类
  • 对干扰没有分类敏感
  • 先验概率和独立性可以从不同的来源中估计出来,比如说语音识别中预测某一句话被说出来的概率,并不一定要有声音信号,可以去网上搜索有一些文本来进行估计。

3.多分类

  原理和刚才的二分类一样。这里以三分类为例,通过柔性最大值传输函数放大各类之间的区别。
图11

图11 多分类

图12

图12

4.逻辑回归的限制

图13

图13 无法用逻辑回归分类
  如图所示情景,我们发现当出现class1的点是 ( 0 , 1 ) (0,1) (0,1) ( 1 , 0 ) (1,0) (1,0),class2的点是 ( 0 , 0 ) (0,0) (0,0) ( 1 , 1 ) (1,1) (1,1)时,我们发现不管怎么画线,都不能找出一条直线使它们分开 1。所以需要进行特征的转换,如下:
图14
图14 特征转换
  将特征分别转换成到 ( 0 , 0 ) , ( 1 , 1 ) (0,0),(1,1) (0,0),(1,1)点的距离,如图,发现就可以使用逻辑回归了,但是遇到这类问题,我不是总是能够找到合适的转换方法。这时候就需要机器自己来解决问题,具体做法就是将几个逻辑回归级联起来。如下:
图15
图15
图15

图15 逻辑回归的级联
  还是以上面四个点为例,我们可以通过调整第一层逻辑回归的参数,来调节它的输出,将第一层的输出作为第二层逻辑回归的输入,从而实现对它的分类。

  如果进行多级级联,会发现这是非常有用的,我们给它一个新名字:神经网络(Neural Network)。

图16

图16 神经网络


  1. 统计学习理论中这个问题的VC维为3,也可以用支持向量机来解决这个问题。 ↩︎

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值