这一节讲述的是机器学习的核心、根本性问题——学习的可行性。学过机器学习的我们都知道,要衡量一个机器学习算法是否具有学习能力,看的不是这个模型在已有的训练数据集上的表现如何,而是这个模型在训练数据外的数据(一般我们称为测试数据)上性能的好坏,我们把这个性能称为泛化能力(generalization ability),机器学习中,我们的目标是寻找高泛化能力的模型;有些模型虽然在训练数据集上分类效果很好,甚至正确率达到100%,但是在测试数据集上效果很差,这样的模型泛化能力很差,这种现象也叫过拟合(Overfitting)。

如果我们能够获取测试数据,我们就可以据此估计一个模型的泛化能力了。可问题是,很多时候,我们只有一个训练集,而额外再获取sample是十分困难的事,例如医学上为一个病人做临床诊断都需要花费大量人力和财力。关于如何估计一个模型的泛化能力,这个我以后 会讲, 而这一节 我主要想讨论一个更有意思的问题,我们能否利用训练误差来估计泛化误差?

这里,我们把训练误差称作in sample error,即样本内误差,记为$E_{in}=\frac{1}{N}\sum_{i=1}^N I[h(x)\neq f(x)]$,其中$N$为训练集样本数,$h(x)$为假设,$f(x)$为target function。

样本外误差称作out sample error,定义为$E_{out}=E_{x\sim P}[I( h(x)\neq f(x))]$

样本外误差其实就是我们常说的期望损失

机器学习问题中,目标函数$f$和分布$P$一般都是未知的,也就是说,只给定训练数据集的前提条件下,$E_{out}$我们没法知道(除非加上一些假设)。那么在没办法知道样本外误差的情况下,我们如何选择一个模型呢?最容易想到的办法自然是 从假设集中挑选出训练误差小的假设, 直观上这很容易理解, 在训练数据集上表现好的模型,在训练集外的数据也应该表现好,可真的如此吗?答案是否。

我们先来看一个例子,然后再把学习问题与这个问题进行类比。

假设我们有一个罐子,罐子里装着很多橘色或者绿色的弹珠,如果我们想知道橘色珠子的比例是多少(记为$\mu$),该如何做?

当然你会说 ,这还不简单,一个一个数过去不就清楚了吗?但问题是,如果这个罐子很大,比如有1万个弹珠,你还会一个一个去数吗?显然是不可行的。学过统计的我们都知道还有一个办法,那就是抽样(sampling)。比如抽出10个弹珠,然后计算这个样本中橘色弹珠的比例(记为$\nu$)来作为整个罐子中橘色弹珠比例的估计。那么$\nu$是否告诉我们关于$\mu$一些有用信息?

首先,$\mu$一定等于$\nu$吗? 不一定,因为我们有可能抓起一把弹珠,而这把弹珠全部都是绿的。不过我们有很大把握说$\nu$是和$\mu$很接近的。数学上,刻画$\mu$和$\nu$有多接近,是由一个著名的不等式来规范的,这个不等式称为Hoeffding's inequality。

式中,$\epsilon$是一个误差限,$N$是样本大小。Hoeffding不等式告诉了我们这样一个事实:当样本集越大时,$\nu$和$\mu$相差很大的概率越小。也就是说,$\nu=\mu$这件事大概是对的,因为随着样本的增大,这个概率的上限将会越来越小;差不多是对的,因为我们可以缩小让$\nu$和$\mu$很接近。数学上,我们把这个性质称作PAC(probably approximately correct,可能近似正确)。如果N很大,我们就可以用$\nu$来估计$\mu$。

介绍完Hoeffding不等式,让我们看看这个问题与学习问题的联系。

球罐模型中,我们不知道的是橘色弹珠的比例,而对应到学习问题中我们想知道的是总体上一个假设和目标函数是否接近。样本空间中的每一个样本点$x\in\mathcal{X}$对应于球罐中的每一个弹珠,当假设h(x)和f(x)不一样时,我们就把球漆成橘色;一样时,我们就把球漆成绿色。从球罐中抽取的石子儿对应到学习问题中的训练集D,同样是iid采样的。球罐模型的目的是用抽样计算出的比例估计真实的比例,而学习问题中我们的目的是用in sample error估计out sample error。

做了此番类比,于是我们就能套用Hoeffding不等式得出类似的结论:

对于一个固定的h来说,如果N很大,那么Ein和Eout相差很大的概率就很小,也就是二者很接近。同样,这条不等式的成立与$\epsilon,N,E_{out}$无关,Ein=Eout是PAC的。如果Ein很小,且$E_{in}\approx E_{out}$,那么我们有很大的把握说 Eout也很小,从而得出h与f很相似(专业一点来说,就是$h=f$ 是PAC的)。同理,如果Ein很大,那么Eout也可能很大,那么我们就说$h\neq f$是PAC的。但也有一个例外情况,Ein很小,Eout很大,也就是常说的过拟合。

PRML里面提到,增大样本数能够减小过拟合现象,以前一直没有搞懂原因,如今学了Hoeffding不等式和PAC框架有点明白了。增大样本数N,能够缩小Hoeffding不等式右侧概率的上限,提高了in sample error与out sample error接近的概率,从而我们用得到的in sample error对out sample error估计的时候更加准确。

Coursera 机器学习基石 第4讲 学习的可行性的更多相关文章

  1. Coursera机器学习基石 第1讲:The Learning Problem

    这门课的授课老师是个台湾人,师从Caltech的Yaser S. Abu-Mostafa,他们共同编撰了<Learning From Data>这本书.Yaser S. Abu-Mosta ...

  2. Coursera机器学习基石 第2讲:感知器

    第一讲中我们学习了一个机器学习系统的完整框架,包含以下3部分:训练集.假设集.学习算法 一个机器学习系统的工作原理是:学习算法根据训练集,从假设集合H中选择一个最好的假设g,使得g与目标函数f尽可能低 ...

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

    博客已经迁移至Marcovaldo's blog (http://marcovaldong.github.io/) Andrew Ng的Machine Learning比較简单,已经看完.林田轩的机器 ...

  4. (转载)林轩田机器学习基石课程学习笔记1 — The Learning Problem

    (转载)林轩田机器学习基石课程学习笔记1 - The Learning Problem When Can Machine Learn? Why Can Machine Learn? How Can M ...

  5. 机器学习基石(台湾大学 林轩田),Lecture 1: The Learning Problem

    课程的讲授从logo出发,logo由四个图案拼接而成,两个大的和两个小的.比较小的两个下一次课程就可能会解释到它们的意思,两个大的可能到课程后期才会解释到它们的意思(提示:红色代表使用机器学习危险,蓝 ...

  6. 機器學習基石(Machine Learning Foundations) 机器学习基石 课后习题链接汇总

    大家好,我是Mac Jiang,非常高兴您能在百忙之中阅读我的博客!这个专题我主要讲的是Coursera-台湾大学-機器學習基石(Machine Learning Foundations)的课后习题解 ...

  7. 机器学习基石11-Linear Models for Classification

    注: 文章中所有的图片均来自台湾大学林轩田<机器学习基石>课程. 笔记原作者:红色石头 微信公众号:AI有道 上一节课,我们介绍了Logistic Regression问题,建立cross ...

  8. 机器学习基石10-Logistic Regression

    注: 文章中所有的图片均来自台湾大学林轩田<机器学习基石>课程. 笔记原作者:红色石头 微信公众号:AI有道 上一节课介绍了Linear Regression线性回归,用均方误差来寻找最佳 ...

  9. 机器学习基石8-Noise and Error

    注: 文章中所有的图片均来自台湾大学林轩田<机器学习基石>课程. 笔记原作者:红色石头 微信公众号:AI有道 上一节课,我们主要介绍了VC Dimension的概念.如果Hypothese ...

随机推荐

  1. spring_boot启动报错

    配置好pom文件后,在controller加注解,如下: 运行后报错!!! 发现配置加的是多此一举,修改为下边的,运行OK

  2. Spring Security +Oauth2 +Spring boot 动态定义权限

    Oauth2介绍:Oauth2是为用户资源的授权定义了一个安全.开放及简单的标准,第三方无需知道用户的账号及密码,就可获取到用户的授权信息,并且这是安全的. 简单的来说,当用户登陆网站的时候,需要账号 ...

  3. javaweb之EL自定义函数

    1.什么是EL自定义函数 EL自定义函数是在EL表达式中调用的某个java类的静态方法,这个静态方法需在web应用程序中进行配置才可以被EL表达式调用.EL自定义函数可以扩展EL表达式的功能,让EL表 ...

  4. cygwin 的安装和配置

         Cygwin是一个在windows平台上运行的类UNIX模拟环境,是cygnus solutions公司开发的自由软件(该公司开发的著名工具还有eCos,不过现已被Redhat收购).它对于 ...

  5. class文件反编译工具jd-gui下载地址

    https://github.com/java-decompiler/jd-gui/releases windows下载: 下载后打开软件,直接将jar包拖进去: 效果图非常美观:

  6. docker容器启动时执行脚本 run /bin/bash执行多条指令

    搜了很多资料发现并未解决,以下方法失败!求大神评论给出完美方案 1.首先需要编写需要启动的脚本,并将脚本放在 /etc/init.d/目录下 如:cs.sh 2.修改权限 3.chkconfig -- ...

  7. 跨域解决方案之HTML5 postMessage

    问题场景: web是嵌入到手机客户端中的静态页面,为了统计用户行为需要引入ga,但是ga必须是在www下才行,哪怕是localhost,这就是矛盾.解决方案是在页面中使用iframe,iframe是在 ...

  8. 前端使用nginx上传文件时,进度获取不对

    在使用iview时,上传文件获取进度时onUploadProgress返回数据不对. 原因是开启了nginx代理,本地上传时先传到本地nginx然后在传到服务器,导致获取进度不对 解决:在nginx的 ...

  9. require'模块化jquery和angular问题

    require 模块化开发问题,正常自己写的模块 是exports 导出一个模块 //模块化引入jquery 不同和问题 require 引入jquery swiper .... 插件和库的时候需要 ...

  10. Java数字和字符串的相互转换(BigDecimal的使用)

    String s = "100."; double d1 = "1.23"; double d = Double.parseDouble(s); s = Str ...