台大林轩田机器学习基石学习笔记(二):Learning to Answer Yes/No

在这里插入图片描述 在本次学习中,Hsuan-Tien Lin通过银行发信用卡的例子引入感知器假设集的概念,进一步分析之后,给出感知器算法PLA,并总结了PLA的使用条件和优缺点,最后给出一种改进算法—Pocket Algorithm,即口袋算法。下面开始第二节课的笔记:Learning to Answer Yes/No。

一、Perceptron Hypothesis Set

在这里插入图片描述
从上图可以看到,机器学习最终要得到一个最接近目标函数f的假设g,那么,该如何得到g呢?由此,HT Lin引入了银行发信用卡的例子。银行拥有很多信用卡申请人的个人信息,这些信息从一定程度上反映了该申请人t的信用程度。现在我们的工作就是给出一个假设集H,然后使用这些申请人的信息配合learning algorithm进行训练,最后的输出为一个g,该g视为最接近f的一个假设。这个时候,我们就得到了一个是否为一个新进入Data Set的申请人发放credit的规则g。该g的输入为该applicant的信息,输出为一个boolean结果,即是否为其发放credit。
在这里插入图片描述在这里,将每位申请人的信息向量化为一个n维的向量x(x1,x2,…,xn),然后为每个xi设置一个权重wi。根据这个设定,计算出每位申请人的加权分数,如果这个分数大于一个threshold,那么认为该用户的信用评分足够,可以为其颁发credit,否则拒绝颁发credit。

进一步,我们得到一个假设h(x)如上图,注意,此处的x为向量X而不是变量x。可以根据h(x)是否大于0来判断该用户的信用评级。这里的h(x)称为perceptron(感知器)。

进一步,我们将-threshold值视为w0,并且令x0为1,那么得到了一个如下的归一形式的h(x)如下图:
在这里插入图片描述至此,我们的h(x)就可以表示为一个具有n+1维(0~n)的向量W和向量X的内积。直观地来看,当维度为2时,该感知器的表现如下图:
在这里插入图片描述h(x)在一个二维空间中表现为一条直线,该直线将平面分为两个部分。位于直线两侧的点分属不同的class。对应于银行发卡的例子就是直线两侧的点分别对应了发credit/不发credit两种情况。
这样的perceptron称为linear(binary) classifier(线性分类器),即用一条直线区分两种不同类型的申请人。

二、Perceptron Learning Algorithm(PLA)

那么,怎么从所有可能的感知器中找出最接近目标函数的假设g呢?对此,HT Lin给出了感知器算法PLA
在这里插入图片描述其过程可以大致表示为:

初始w = 0 (零向量)。
第一步:找一个分错的数据w(xi, yi), sign(wxi) != yi;
第二步:调整w 的偏差,w = w + yi
xi;
循环第一、二步,直到没有任何分类错误, 返回最后得到的w。
注意区分上面的普通乘法和向量内积,内积是省略了向量转置的表示
实际操作时,寻找下一个错误数据可以按照简单的循环顺序进行(x1, x2, …, xn);如果遍历了所有数据没有找到任何一个错误,则算法终止。
:也可以预先计算(如随机)一个数据序列作为循环顺序
在这里插入图片描述以上为最简单的PLA 算法。没有解决的一个基本问题是:该算法不一定能停止!

眼见为实,接下来就给出了一个classify的例子:
初始状态如图:
在这里插入图片描述刚开始,由于W和X均为0向量,因此在第一个点一定表现错误,第一次修正如图,修正之后的结果为以原点和X1连接的直线所在的向量为法向量的直线。
在这里插入图片描述第二轮:
在这里插入图片描述最后一轮:
在这里插入图片描述

三、Guarantee of PLA

对于上述PLA,还遗留以下几个问题:
(1)该算法是否最终会停止?
(2)能否确定g能在data set之外的data集合上的表现与f一致?
对此,我们分两种情况讨论:数据线性可分;数据线性不可分。
在这里插入图片描述数据线性可分时,一定存在完美的w(记为wf), 使得所有的(xi, yi), yi = sign(wf*xi),即当data处于一种线性可分的状态时,那么意味着一定有一条线能将其分开,也就是说PLA最后一定能够停下来。那么,线性不可分的情况下,结果又如何呢?
在这里插入图片描述

四、Non-Separable Data

当数据线性不可分时(存在噪音),简单的PLA 算法显然无法收敛。我们要讨论的是如何得到近似的结果。
我们希望尽可能将所有结果做对,即:
在这里插入图片描述
寻找wg 是一个NP-hard 问题,至今难以解决。因此,只能找到近似解。

在此基础上,HT Lin引入了Pocket Algorithm(口袋算法):
在这里插入图片描述与简单PLA 的区别:迭代有限次数(提前设定);随机地寻找分错的数据(而不是循环遍历);只有当新得到的w 比之前得到的最好的wg 还要好时,才更新wg(这里的好指的是分出来的错误更少)。
由于计算w 后要和之前的wg 比较错误率来决定是否更新wg, 所以pocket algorithm 比简单的PLA 方法要低效。
最后我们可以得到还不错的结果:wg。

扫描二维码关注公众号,回复: 11204934 查看本文章

五、总结

思维导图:
在这里插入图片描述这里附上本节课的课件:https://www.csie.ntu.edu.tw/~htlin/course/mlfound17fall/doc/02_handout.pdf

1、本文的所有截图均来自台湾大学林轩田《机器学习基石》课程。
2、在写本文时,参考了下面几篇博文,在次表示感谢。
https://blog.csdn.net/qq_30474361/article/details/70266051
https://www.douban.com/note/319669984/

原创文章 102 获赞 54 访问量 3万+

猜你喜欢

转载自blog.csdn.net/Bee_Darker/article/details/102514832
今日推荐