MachineLearning(Hsuan-Tien Lin)第十一讲

在第九讲说到,线性分类问题可以用线性回归来解决。来看看逻辑回归是否能解决线性分类问题。

回归模型解决线性分类问题

比较三个模型:

首先,它们都要算一个加权的分数:


是否逻辑回归也可以用来解梯度下降问题?

我们把权重说是分数score

改写下error function,error 发生在输出和实际不同的时候。

(1)线性分类:

当前err0/1=0,if sign(s)=y;err0/1=1,if sign(s)≠y。y=±1

改写为sign(ys)

如果y和s同号,sign(ys)=1,则err0/1=0

如果y和s不同号,sign(ys)=-1,则err0/1=1

所以,改写为err0/1=0,if sign(ys)=1;err0/1=1,if sign(ys)≠1。

(2)线性回归:

线性回归输出是实数,{-1,+1}也是实数。

errsqr=0,if s=y;errsqr=(s-y)^2,if s≠y

因为,我们希望用线性回归做二元分类问题,所以给的资料y=±1,比如“病人是否癌症”、“是否给顾客信用卡”

这里的s也是算分数,但是想要用线性回归做分类,就是希望s算出来是±1

所以errsqr=0,if sy=y 当s=y=1或者s=y=-1时

errsqr=1,if sy≠y 当s=1,y=-1或者s=-1,y=1

所以errsqr=(sy-1)^2

(3)逻辑回归

逻辑回归输出的是{0,1}的概率

errce 在推导的时候就已经把y包在里面了。

所以errce=1+ln(1+exp(-ys))

(如果忘记了可以回到第十讲去看看。)


现在,我们把这三个err画出来

这是err0/1:

加上errsqr:

(在第九讲有这两个图)

再加上errce

因为我们对errce做scaled,把它的底变一下:

我们把变形后的errce叫做errsce。这样变的好处就是,可以让errce的曲线压在err0/1上:

第九讲说到,因为errsqr的曲线总是压在err0/1上的,所以我们可以用线性回归来做线性分类问题,现在变形的errsce的曲线也是压在err0/1上,所以,我们也可以用逻辑回归来做线性分类的问题。

也简单分析一下:

曲线上看后得出

所以可以推出:

这是我们看过的资料。要想线性分类问题能够用逻辑回归来做,就要Ein和Eout都被逻辑回归的Ein和Eout bound住才行。所以我们也想要:

在VC0/1中

 而逻辑回归中:

所以线性分类的Eout 可以被逻辑回归的Eout bound住。

讲到这里,就明白了,线性回归和逻辑回归都可以用来做线性分类问题。

我们来对比看看,这PLA、linear regression、logistic regression做分类问题的优缺点:


虽然,linear regression和logistic regression的err可以bound住线性分类的err,但是它们在ys很小或者很大的部分还是差的有点多的。

优化算法

接下去介绍两种优化算法。

回顾下我们更新w的式子:

PLA是怎么做更新的?

每次选一个点出来,如果是错的就用这个点做修正。

回顾第十讲,逻辑回归做梯度下降的时候是怎么做的呢?

Minimizing Ein(w):

梯度是:

(忘记的去第十讲看看)

所以,我们可以看出,逻辑回归用梯度下降做优化的时候,每一轮都要看所有的点,把所有的点对梯度的贡献都算出来,再往梯度方向下降。

这个东西是个很麻烦的值,所以,我们就想了个偷懒的办法,用随机梯度做替代。具体的做法就是,每一轮求梯度,不是看所有点,而是随机只看一个点。这样就避开了“看遍所有的点求平均”这个麻烦的过程。比如,有10万个点,看起来太多,那就随机抽三五个,做这三五个点的平均。

ε是期望,如果迭代次数够多,看的点就够多,这样随机梯度和真实梯度是近似相等的。
用随机梯度下降来代替一般的梯度下降是比较简单而且开销也没那么大。比较适合于大数据或者online学习。但是它的缺点也显而易见,就是很不稳定,因为每次是随机的选一个点,就好像喝醉的人从上坡走到山谷,他会随便走。

如果不求平均,看随机梯度和PLA:

它们还挺像的。

两条单凭经验的方法:

(1)什么时候停止?和PLA一样,如果每次看一个点,也不知道什么时候会停。原本的梯度下降就是在梯度为0的时候就停了。而随机梯度要停下来,比较困难。经验上相信跑足够多的次数就会停下来。所以,设置一个比较大的迭代次数t

(2)η要多大呢?这是梯度下降经常要思考的一个问题,步长要多少?林老师的经验随机梯度步长0.1左右的都不算太糟。

多元分类问题

这和andrew的week3(上)的多类别分类问题是一样的

开始的图是这样的:

现在,四个国家都来认领自己的领地,先把确定的部分抽走。

如上图,黑色框起来的部分被A认走了,说是“◇”的天下;B领走了都是“□”的地方;C拿了都是“☆”的地方;D说“△”的地方都是他家的。A、B、C、D这四块都很确定。但是1、2、3、4、5却发生冲突,可能发生抢夺,有可能都不认领。

所以,用软性的分类器,即可能性来表决(A、B、C、D四块认领都是肯定,软性的就是“大概是◇的领地”)。用逻辑回归算概率,属于哪个的概率大就是谁的。

One-Vs-All(OVA)

要做多元分类问题,就用k个分类器对每个点都跑一次逻辑回归算法。这样,每笔资料上就会留下k个概率,看看哪个概率最大,就属于哪一类。这样做的好处就是可以解决任何的多元分类问题。但是,会有个很麻烦的地方,就是如果类别很多,即k很大时,就会不平衡。这个就好像andrew的week6(下)讲的skewed classes问题。类别很多时,如果要跑一次“☆”的逻辑回归,那么属于“☆”的类别的数量和“非☆”相比就会少很多。

延伸:“multinomial (‘coupled’) logistic regression ”。

解决不平衡问题

上面说到,每次如果选一个类的话,就好像1对多打架,会不平衡。所以,想了个策略,一对一,每次选两个类出来。


比如上面的图,就是选了“◇”和“□”出来对打。每次都选两个,C(4,2)=6

 

因为每次都选两个,所以□会在三个分类器中出现,“□和◇”对打的时候,“□和△”对打的时候,“□和☆”对打的时候。下面6个图中的前三个,都是和“□”有关的。

 

现在,要预测A的类别。

 

前三个分类器,都会说是□,因为都是用□训练出来的。

第四幅图会说A是◇,因为第四幅用“◇和△”训练

第五幅会说A是☆,因为用◇和☆训练的

第六幅会说A是☆,因为是用△和☆训练的

综上,A肯定就是□,因为三个分类器都说它是□

所以,对A的预测是要送到6个分类器中,让6个分类器投票,最后再选出它所属的类型。这就是OVO方法。

这样做,解决了不平衡问题,但是带来的问题就是预测的时间更长了,之前是k个类k个分类器,现在是C(k,2)个分类器了。所以,花费的时间更多,需要的space也就更多了,而且变得更慢了。所以这个方法在k不多的时候用,还是比较好的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值