林轩田《机器学习基石》(十)—— Logistic regression

上次介绍了线性回归问题,用平方误差计算出w。本节课介绍Logistic regression:逻辑斯蒂回归。

一、Logistic regression问题

学习流程图,比如我们要看病人是否有心脏病,

左上角说我们拿到的资料可能有noise,x是病人特征,这个目标分布P会对应一个理想的目标函数f,

当我们想知道病人有没有心脏病,做二分类问题:

今天一个类似的问题,我们不想知道他有没有心脏病,我们想知道病人心脏病的可能性是多少?我们想要得到一个[0,1]之间的值P(y|x),我们的目标函数f就变为

这个值越接近1,表示正类的可能性越大;越接近0,表示负类的可能性越大。

所以,比如在病人问题中,我们希望的资料是label y是病人患病的可能性,如,

但是实际中我们并不能拿到这样的label,医院里的病人只知道病人的病历(是否心脏病发),所以实际我们不知道具体的概率数字是多少。

我们可以把手上的的资料看做上面理想资料的有noise版本:

比如第一行 的label:0.9(真实)+0.1(noise)=1(我们实际拥有的)

我们现在要讨论的问题是:我们手上的资料是原来二分类问题的资料,现在想得到的目标函数f的输出是一个0~1之间的值,那么我们如何选择h?

根据我们之前的做法,对病人x所有的特征值进行加权处理,计算出一个分数。

此刻分数并不是我们首要在乎的,想得到的目标函数f的输出是一个0~1之间的值。如何将前者“分数”转化为后者呢?

横轴是分数s,纵轴是0-1之间的数字,这样任何的分数s都可以转化为[0,1]之间。我们把这个转化函数叫做Logistic函数,记作\theta (s )

Logistic函数公式

这个公式希望当分数越高时候,输出越靠近1,分数越低,输出越靠近0.

我们学习到的h就是:

二、Logistic回归误差

线性分类问题使用了:

1.线性scoring function s=w^{T}x

2.h = sign(s)

3.0-1误差

线性回归问题使用了:

1.线性scoring function s=w^{T}x

2.h = s,不需要使用函数 sign(x)

3.平方误差

Logistic回归:

1.线性scoring function s=w^{T}x

2.h = \theta (s )

3.???

所以,现在到的问题是Logistic回归的err长什么样?

首先声明,我们的目标函数f是(也可以选择是P(-1|x),那么下面的P(y|x)也随之稍作改动):

同理先已知P(y|x)再推上面的f(x)也是成立的。

我们假设x独立同分布(iid),那么若给了f,产生资料D的概率为:

     →          

现在我们假装h就是我们要找的f,那么

如果今天h和f很接近,那么h产生这个资料的可能性与f产生这个资料的可能性是几乎一样的(他们之间“可能性”的差别就是err)。现在本来就是假设f是这些资料的目标函数,那么换句话说,f产生了这些资料(概率说法是:f产生这个资料的可能性非常非常大)。既然这样,我们也要h产生这个资料的可能性非常非常大。所以我们想要找到使得上述概率最大的h来当做要找的g。

Logistic函数特性

极大似然函数为,灰色部分是每个h都一样的部分,所以只需要看其他有颜色的部分即可

我们要找的就是使得似然函数最大的h

由于我们考虑的是线性加权的h,所以h由权重w决定,因此可以变为:

我们进一步希望连乘变为连加的形式,所以取ln:

ln放入连乘变为连加,之后进一步把最大化改写为最小化:

我们将

代入上式:

紫色的部分是Logistic回归的err,称为cross-entropy error交叉熵误差。

三、Logistic回归误差的梯度

接下来的问题就是如何找到合适的向量w,让上述的E_{in}最小。

我们先给出E_{in}的图像与性质:

性质:连续,可微,二次可微,凸。

我们要找到极小值,也就是要找w使其满足

现在我们来求E_{in}的梯度,我们先做一些记号,这样比较好求:

过程:

上面是每一个w_i的梯度,把他们整合起来结果是(用向量方式来简洁表达):

为了计算E_{in}最小值,我们就要找到让E_{in}的梯度等于0的位置。

有一种可能性:可以看到只要让,那么最终结果就会等于0.\theta (s )图像为

-y_nw^T x_n\ll 0的时候,\theta (s )可能为0,即y_nw^T x_n \gg 0——这代表每一个资料都可以被分类正确,也就是资料是线性可分的。

但现在如果不是线性可分,那么要研究如何求解w,用式子直接解的话,显然是没有闭式解的。

之前所说的Linear Regression有closed-form解,可以说是“一步登天”的。PLA算法是一步一步修正迭代进行的,每次对错误点进行修正,不断更新w值。PLA的迭代优化过程表示如下:

即找到一个分类错误的点,用它去修正w

最后一步的w作为我们要找的g的权重。

把上面两步再简化一下,得到一步:

仔细的分析一下上面更新w的式子:

v表示更新的方向,可以发现我们加了一个常数‘1’进来,作为步长(每次朝方向上走多少)。参数(v,η)和终止条件决定了迭代优化算法。

四、梯度下降法

我们现在的任务就是找:v和η。PLA中v来自错误修正。

我们把E_{in}曲线看做是一个山谷的话,要求E_{in}最小,可以看做是小球到山底的过程。

在整个下山过程的两个重要因素为:

1.方向v,通常看做是单位长度的

2.下山的步长η,通常是正的。

一个贪心的方法,我想快点走向山底,所以η如果给定,那么我们选择的方向就是最陡的方向:

上述的优化问题没有使得实际变得好求解(甚至加了一些方向上的约束等),我们期待它转变为更容易的问题(比如一些线性的问题):

我们可以做泰勒展开

上面的问题随之变为一个线性的问题:

(灰色的其实对优化问题没有影响,因为那就是固定值,所以除去灰色部分就是我们最终的优化问题)

我们可以看到什么样的v是最好的,当v和\triangledown E_{in}是反方向时候(由于两个向量乘积是两个模乘积×夹角余弦,||\triangledown E_{in}||已知,v的模要求是1,所以夹角余弦值最小为-1,即相反方向),取得最小值。除以||\triangledown E_{in}||是为了让v的模为1.

所以梯度下降法是:朝着v移动一小步η,

如何选择步长η

步长太小会导致走的很慢:

步长太大会导致走的不稳定:

适中的步伐好,或者使用动态的步长,在陡的时候走的步子大,在稍微平缓时候走的步子小:

坡度最直观的判断是||\triangledown E_{in}||,当||\triangledown E_{in}||大时候坡度大,当||\triangledown E_{in}||小的时候坡度小。所以希望η在||\triangledown E_{in}||大的时候大,在||\triangledown E_{in}||小的时候小,即η正比于||\triangledown E_{in}||,我们把这个比例作为新的η,这样他就是固定的了,这个固定比率叫做学习率η。迭代公式也变为:

综上,算法如下所示:

初始化→计算梯度→更新 重读计算更新后的梯度 直到梯度约为0或者跑了足够多的步长.

总结

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值