机器学习基石第二讲:learn to answer yes/no

博客已经迁移至Marcovaldo’s blog (http://marcovaldong.github.io/)

刚刚完成了机器学习基石的第二讲,主要介绍了机器学习的定义,PLA算法和pocket PLA算法。下面将笔记整理在下面。

Perceptron Hypothesis Set

延续前面的信用卡发放问题。银行已有的用户数据可能包括用户的年龄、年薪、工作时长、债务情况等特征信息,我们分别用x1,x2,…,xd来表示,那么对于每一个用户都有一个向量来表示其信息。我们为每一个特征信息分配一个权值wi,用来衡量该特征信息在此问题中的权重(例如,年薪对应的权值应该是一个正值,年薪越高越应该可以发放信用卡;债务对应的权值应该为一个负值,负债越多越不应该发放信用卡)。对于每一个用户,我们计算他的加权分值,若该加权分值超过某一个给定的阈值(threshold),那银行就给他信用卡;若未超过,则银行不予发放。现在,我们知道了问题的输入为一个个的d维向量,输出为y:{+1(good), -1(bad)},要求的hypothesis是一个线性函数,如下所示:

h(x)=sign((∑i=1dwixi)?threshold)

对于这样的hypothesis,我们称之为感知机(perceptron)。

我们将上式向量化,并将阈值加到前面的求和中,就变成了下面这样:

此时,x和权值向量w均为d+1维。下面给出一个二维平面上的perceptron hypothesis的例子,我们的perceptron要做的就是将图中的圈圈和叉叉给分开。

我们看到perceptron在二维平面上就是一条直线,其在更高维的空间呢应该以个超平面,所以我们说感知机是一个线性分类器。

下面是关于垃圾邮件分类的一个小测试:

perceptron Learning Algorithm(PLA)

现在我们知道了hypothesis是什么样的,那么我们怎样从H = all possible perceptrons中选择一条最好的呢?怎么去判断hypothesis的好坏呢,我们的思路是用这个hypothesis去处理已有的数据集,该hypothesis对已有数据的处理结果越正确则越好。就是说,如果又一个hypothesis对银行用户信息的处理结果与银行之前作出的信用卡发放决定都一致的话,那这个hypothesis就是好的。

hypothesis有无穷多个,那我们怎么去遍历呢?我们的思路是从某一条hypothesis出发,不断的去修正它,使其一次比一次变得好。修正的方法是这样的:对于一个hypothesis,对应其由一个wt,我们去找一个数据点(xn(t),yn(t)),有

sign(wTtxn(t))≠yn(t)

也就是说该hypothesis在数据点(xn(t),yn(t))处出现了错误,此时我们要对hypothesis做如下修正(至于为什么要做这样的修正,请看下图右侧的向量加减法的三角形表示):

wt+1←wt+yn(t)xn(t)

持续进行这样的修正,直至hypothesis在所有的数据点上均不出现错误(或者在尽可能少的点上有错误),知识我们就得到了一个比较好的hypotesis。

我们将这个算法称为PLA。下图是PLA算法的一个伪算法(当然还有对数据点的其他遍历方法):

然后视频中作了一个修正hypothesis的演示,这里省略。

前面我们说当hypothesis在任何数据点上都不犯错误的时候,算法就会停下来,那算法一定会停下来吗?就算算法会停下来,那我们最终得到的g肯定会很接近目标函数f吗?这是本小节遗留的两个问题,以后会介绍。

最后是小测试(对修正公式等号两边均左乘yn,再右乘xn就可以得出结果):

Guarantee of PLA

对于一个数据集中的两类数据点(一组是圈圈,一组是叉叉),当存在一条直线(或超平面)能够将圈圈和叉叉完全分开时,我们称这样的数据集时线性可分的(linear separable)。下图中给出了线性可分数据集和非线性可分的数据集。

对于线性可分的数据集D,存在一个完美的wf对于任意地数据点(xn,yn)均满足yn=sign(wTfxn)。我们假设wf就是目标f对应的参数,那我们来看一下每一次修正后的参数wt+1是不是比修正前的参数wt更接近wf呢?

通过上图中的推导,我们得到了wTfwt+1>wTfwt,这说明了什么呢?由向量内积的定义(向量a和向量b的内积为aTb=|a|?|b|?cosα,其中α是a和b的夹角),我们知道wt+1与wf的夹角αt+1比wt与wf的夹角αt要小(这里我们取wt+1和wt都是单位向量,下面再来说向量长度的问题),所以说wt+1比wt更接近wf。这也就说明了我们对参数wt的修正是有效的,我们的hypothesis会越来越接近目标f。

我们说hypothesis只有在犯错的时候才更新,才有

wt+1=wt+yn(t)xn(t)

我们作如下的一个推导:

从上面的推导,我们知道了wt每次更新都会有一个增长上限。视频中又说,我们从w0=0开始进行T次修正,会有

而上式的左边又不可能超过1(两个向量夹角的余弦值的上限),由此我们说循环一定可以停下来。

最后是小测试:

我从网上找到了一个解释,详情推导请见传送门http://www.cnblogs.com/HappyAngel/category/348262.html),这里给出推导过程。

其实有了这个推导,我们才完全从数学上证明了PLA会在T次修正计算后停下来。

Non-Separable Data

前面我们说,如果数据集时线性可分的,那我们的PLA就一定会停下来。但我们事先是不知道数据集是否线性可分,而且初始的数据集中会含有噪声noise。在这种情况下,我们如何去找到一个好的hypothesis去很好的分开圈圈和叉叉呢?

既然我们现在无法找到不犯错误的hypothesis,那我们就去找一条犯的错误最少的hypothesis,这就引出了pocket PLA算法。

最后是小测试:

时间: 2024-12-08 15:15:12

机器学习基石第二讲:learn to answer yes/no的相关文章

机器学习基石第二讲笔记

第二讲介绍了Perceptron Learning Algorithm (PLA),是以后学习的基础. PLA是二元的线性分类器,类似于神经感受器,用于做是非题. 1. PLA的假设函数:h(x) = sign(w'x). 这里w'是列向量,x是行向量.x代表一个数据点,这个点可能包含了d个维度,即x = (x1, x2, ..., xd).举例来说,x可以是一个人,里面包含了人的各种特征,比如年龄.性别.职业.收入等等.w'是每个维度所占的权重.比如银行要给客户发信用卡,就要考虑客户各个方面以

机器学习基石第一讲笔记

近来觉得机器学习愈发重要.有人推荐了台大林轩田老师讲授的“机器学习基石”,感觉林老师讲得生动清楚,是很好的课程,值得一学. 第一讲介绍了机器学习是什么,使用机器学习的条件,机器学习的模型是怎样的. 1. 机器学习是一种处理复杂系统的方法,这里老师举了4个例子: (1) when human cannot program the system manually --navigating on Mars(2) when human cannot 'define the solution' easil

机器学习基石第一讲:the learning problem

博客已经迁移至Marcovaldo's blog (http://marcovaldong.github.io/) Andrew Ng的Machine Learning比較简单,已经看完.林田轩的机器学习基石很多其它的是从概率论的角度来介绍机器学习,之前的视频已经听了大半.但好多都是模棱两可. 如今从头開始,认真整理笔记.笔记的结构遵从课程视频的结构. 以下是机器学习基石的第一讲:the learning problem Course Introduction 机器学习是一门理论和实践相结合的课

机器学习基石——第1-2讲.The Learning Problem

本栏目(机器学习)下机器学习基石专题是个人对Coursera公开课机器学习基石(2014)的学习心得与笔记.所有内容均来自Coursera公开课Machine Learning Foundations中Hsuan-Tien Lin林轩田老师的讲解.(https://class.coursera.org/ntumlone-002/lecture) 第一讲-------The Learning Problem 一.课程总体 Machine Learning是一个理论与应用混合的工具,本课程则主要是f

NTU-Coursera机器学习:机器学习基石 (Machine Learning Foundations)

课讲内容 这门课以8周设计,分成 4个核心问题,每个核心问题约需2周的时间来探讨.每个约2个小时的录影中,每个小时为一个主题,以会各分成4到5个小段落,每个段落里会有一个后多个随堂的练习.我们在探讨每个核心问题的第二周.依上所述,課程的規畫如下: When Can Machines Learn? [何时可以使用机器学习] 第一周:(NTU-Coursera机器学习:机器学习问题与二元分类) 第一讲:The Learning Problem [机器学习问题]第二讲:Learning to Answ

机器学习基石——第5-6讲.Training versus Testing

本栏目(机器学习)下机器学习基石专题是个人对Coursera公开课机器学习基石(2014)的学习心得与笔记.所有内容均来自Coursera公开课Machine Learning Foundations中Hsuan-Tien Lin林轩田老师的讲解.(https://class.coursera.org/ntumlone-002/lecture) 第5讲-------Training versus Testing 从这一讲开始,讲的问题就是属于Why Can Machines Learn的范畴了.

机器学习基石——第13-14讲.Hazard of Overfitting

本栏目(机器学习)下机器学习基石专题是个人对Coursera公开课机器学习基石(2014)的学习心得与笔记.所有内容均来自Coursera公开课Machine Learning Foundations中Hsuan-Tien Lin林轩田老师的讲解.(https://class.coursera.org/ntumlone-002/lecture) 第13讲-------Hazard of Overfitting 从这一节开始,我们开始探讨How Can Machines Learn Better的

机器学习基石——第9-10讲.Linear Regression

本栏目(机器学习)下机器学习基石专题是个人对Coursera公开课机器学习基石(2014)的学习心得与笔记.所有内容均来自Coursera公开课Machine Learning Foundations中Hsuan-Tien Lin林轩田老师的讲解.(https://class.coursera.org/ntumlone-002/lecture) 第9讲-------Linear Regression 从这一节开始,开始涉及到How Can Machines Learn的问题了. 一.Linear

机器学习基石——第7-8讲.The VC dimension

本栏目(机器学习)下机器学习基石专题是个人对Coursera公开课机器学习基石(2014)的学习心得与笔记.所有内容均来自Coursera公开课Machine Learning Foundations中Hsuan-Tien Lin林轩田老师的讲解.(https://class.coursera.org/ntumlone-002/lecture) 第7讲-------The VC dimension 一.VC dimension的定义 VC dimension是什么呢?大家可能猜到了,这是和我们上