林轩田《机器学习基石》(十一)—— Linear models for classification

之前我们介绍了Logistic回归以及它的误差为交叉熵误差,介绍了梯度下降算法gradient descnt来获得最好的w。接下来我们将回顾之前的线性模型,将其延伸到更多的分类问题中。

一、二元分类

我们上一节课介绍的三个线性模型

线性分类问题使用了:

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

2.h = sign(s)

3.0-1误差

NP难的,不好解。

线性回归问题使用了:

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.交叉熵误差

梯度下降法求解。

他们都算了一个分数scoring function s=w^{T}x

我们现在要把上面那三个问题都用于分类(主要是后两个)。

线性回归的输出空间是R,+1,-1是其中两个特殊值。

logistics回归的资料和现行分类的资料是一样的。

线性分类一般有两步:

现在我们使用误差函数(将上面换一种写法):

(最后一步是为了和其他函数作比较)

线性回归:

整合成一步:

Logistic回归:

整合成一步:

可以看到上面的误差函数中都有ys,那么ys的物理意义是什么?

答:ys就是指分类的正确率得分,我们希望他是正的,而且希望他越大越好。

作出上面三个误差函数的图像来比较,其中横坐标是ys

err0/1

呈阶梯状的,我们要看sign(ys)的正负,如果是正的,err0/1恒取最小值0。否则err取1.

errSQR

呈抛物线形式,我们要看ys与1相比,取平方。errSQR与err0/1不同,比如在ys=3时,err0/1误差为0,而errSQR的值挺大。在ys=1时,取得最小值。且在ys=1左右很小区域内,err0/1和errSQR近似,这意味着如果今天某个资料在errSQR上得到很小的值的话,它在err0/1也会取得很小的值。

errCE

呈指数下降的单调函数,ys越大,其值越小。ys越来越大,误差函数趋近于0。整体来说,在ys越大时候,err0/1和errCE近似。我们可以来说errCE上得到很小的值的话,它在err0/1也会取得很小的值。

但是我们发现errCE并不是始终在err0/1之上,所以为了计算讨论方便,我们对errCE做一个scale,可以看到在ys=0处,errCE与err0/1切在一起了,如下图:

此时,scale errCE始终在err0/1之上。

scale errCE成为err0/1的上限。

E_{in}是几个资料做平均,E_{out}是在无数个资料上做平均,所以不等式仍然成立。

从我们知道的理论出发,我们知道err0/1的VC,然后得到:

之前提到\Omega是模型复杂度。

E_{out}的角度看,

这表示:如果我们把logistics回归里面的err做好的话,那么某种角度来说也把err0/1做的还不错。

使用不同方法做分类的优缺点:

PLA:

1.优点

有效+在线性可分的时候有很好的保证

2.缺点

如果线性不可分,就只能用pocket做了,但就没有上面PLA效果那么好了。

线性回归:

1.优点

有闭式解,最容易求解

2.缺点

在ys越大或者越小的时候,它和err0/1就差距很大了。

logistics回归

1.优点

比较好求解

2.缺点

ys越小的时候,它和err0/1就差距会比较大。

注:线性回归通常的用处是为PLA,pocket,logistics回归提供一个初值。

二、随机梯度下降

回忆一下PLA,每次选择一个资料进行更新,每次迭代的时间复杂度是O(1)。logistics回归每次要计算所有的资料然后做平均,看起来每一轮会花比较显著的力气,每次迭代的时间复杂度是O(N)。我们能不能让logistics回归每一轮和PLA一样快。

之前的logistics回归的迭代步骤是上面这样的,现在我们不要计算这么多样本然后做平均,只要取出一个样本计算(近似的)下降方向。

这种随机抽取一个资料的方法叫做随机梯度方法:

我们可以把所有资料的平均值看做我们每次随机取出样本的期望值。即

随机梯度=真实梯度+noise(这些noise的期望为0)

于是,随机梯度法为:

想法:把正式的梯度替换为随机梯度。

好处:简单、容易计算,容易用于大数据或者在线学习(资料一笔一笔来)。

缺点:不太稳定。特别是步长太大的时候。

之前我们讲过的PLA中

与今天的logistics回归做比较:

可以发现

1.SGD logistics回归可以看做是稍“软”一点的PLA,因为PLA只对分类错误的点进行修正,而SGD logistic regression每次迭代都会进行或多或少的修正。

2.当分值w^{T}_t x_n很大时候,且η=1时,那么对logistics回归用SGD求解就相当于PLA。

现存的问题:

如何确定停机准则(怎么知道算法以及做好了?)   

分析:梯度下降法会看梯度是否等于0来判断到谷底了吗?但是显然随机梯度方法不适合这样判断,不然再计算全梯度就白做简化了。一般让迭代次数足够多我们就认为它跑到谷底了(但这只是一种大家的认为)。

如何确定学习率η?

分析:之后会具体分析如何选择它,但是现在我们可以直接令η=0.1(经验上这是一个很好的数字,0.126)

三、用 logistics回归进行多分类

之前我们一直讲的都是二分类问题,现在我们看看如何把它延伸做多分类问题。通俗来讲:从是非题变到选择题。

有四个类别不好做,那么我们想是否可以先把某个类别分出来?答:可以做一个二元分类器,先把‘’分出来。(同理也可以把任何一种形状与其他形状分开来)

如下图,按照上述四个分类器,得到划分区域,在一些区域(右上角荧光绿区域)全是‘’,在一些区域(黄色)全是‘◇’,在粉色区域全是‘△’,在蓝色区域是‘☆’。可是分类器会犯错,如果某个区域(比如黄色绿色紧挨着的区域)有两个分类器都抢着说是自己的区域怎么办?以及在一些区域(中心区域)四个分类器都说不是自己的区域怎么办?

看到{-1,+1}两个值来标记,分类器只会说是自己的还是不是自己的区域,就会造成上面的问题,我们现在用softy的模型,我不说是不是,我只说可能性,比如

可以看到有一些模糊的边界,因为模糊的边界代表在此处的可能性不一定是0或1,可能是在0.5的附近。

四个分类器结果为(都是软化了原来的分类):

将他们都组合起来,在那些不确定的区域,我可以选一个可能性最大的。

区域类型:选择使得几率P最大的那个K类。(logistics函数是算几率的,但也是单调的,所以可以直接比较里面的分数,这里灰色是指不重要,可以省略)

这种多分类的处理方式,我们称为One-Versus-All(OVA) 。我们每次都拿一个和其他所有比。

对每一个类别跑一个logistic函数,其中该类别的资料设置为正,其余资料设置为负,跑完会得到一个权重w,然后用w对该笔资料计算分数。

这种方法的优点是:

1.简单高效

2.可以使用logistic regression模型来解决,从而以后碰到可以输出一个概率的模型或者一个可以比大小的数值的模型,都可以套用

缺点是:

1.如果数据类别很多时,那么每次二分类问题中,正类和负类的数量差别就很大(100个类,1类vs99类),数据不平衡unbalanced,这样会影响分类效果。

以后会讲上面问题怎么解决。此外,在这里我们没有强调几率加起来必须是1(统计上考虑到了这个问题)。

四、用二元分类进行多分类

上面说到如果数据类别很多时,那么每次二分类问题中,正类和负类的数量差别就很大(100个类,1类vs99类),数据不平衡。那么我们可以用1类vs1类吗?而不是一对多。

我从所有的类别中选两个先看看这两个里面哪个是我们要的答案。(比如哪边是‘’,哪边是‘◇’)

同上面一样,两两进行比较,会得到六种(排列组合,3+2+1)结果:

然后再怎么确定呢?比如怎么分出‘’?

我们看与‘’有关的分类器:第1,2,3个图在训练时有把‘’包含进去,我们可以得到结论,大概右上角是‘’。

换一种角度:

对于右上角,图1,2,3分类说他是‘’,图4说它是‘◇’,图5,6说它是‘☆’.所以右上角这块被判定为票数最多的‘’。

每个图形看一遍,可以得到:

我们可以看做这六个图是投票器,对每个区域进行投票,票数最多就判定为是什么类别。

这种方法叫做One-Versus-One(OVO)。我们每次都拿一个和另外一个比。

我们把资料拿来,先确定我们要分类那两个类(一个看做正类,一个看做负类),这样两两分类就可以做出l个分类器,我让这l个分类器去投票,看看哪一个类别获得最大的支持。

这种方法的优点是:

1.简单高效,虽然两两分类做的分类次数多了,但是每个分类器用的资料少了。

2.可以使用二元分类模型来解决,从而以后可以套用任何可以做二元分类的模型。

缺点是:

1.由于是两两分类,所以分类器会很多(w会多),存储空间因此变大了,每次预测的时间也变长了,也就是做了更多的训练。

在类别不太多的时候,OVA和OVO都比较常用。

总结:

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值