这一节讲述的是机器学习的核心、根本性问题——学习的可行性。学过机器学习的我们都知道,要衡量一个机器学习算法是否具有学习能力,看的不是这个模型在已有的训练数据集上的表现如何,而是这个模型在训练数据外的数据(一般我们称为测试数据)上性能的好坏,我们把这个性能称为泛化能力(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. JAVA线程池的原理分析

    线程池的作用 1.降低资源的消耗 2.提高效率 3.方便管理 相关概念 corePoolSize核心线程数:核心池的大小,当有任务到达之后,就会创建一个线程去执行任务,当任务数量到达核心线程数后,就会 ...

  2. Java数组逆序存储

    package review01; import java.util.Arrays; public class review01 { public static void main(String[] ...

  3. php foreach遍历

    foreach($facility_list['data'] as $facility){ //处理语句} 第一种格式遍历给定的 array_expression_r_r 数组.每次循环中,当前单元的 ...

  4. Docker镜像保存为文件及从文件导入镜像的方法

    参考 1.概述 我们制作好镜像后,有时需要将镜像复制到另一台服务器使用. 能达到以上目的有两种方式,一种是上传镜像到仓库中(本地或公共仓库),但是另一台服务器很肯能只是与当前服务器局域网想通而没有公网 ...

  5. MVC4.0 oracle 找不到请求的 .Net Framework Data Provider。可能没有安装.

    oracle 11G, MVC4.0 项目,因刚重装系统,重新安装的VS2010, ORACLE 11G 运行项目,后报错 找不到请求的 .Net Framework Data Provider.可能 ...

  6. es6的一些基本语法

    首先说一下什么是es6: ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准; let 和 const 命令 let的基本用法: 上面代码在代码块之中,分别用l ...

  7. 形象解释C#、Net、Asp.net

    下文是写给计算机小白的,尽量用形象的语言来让她们明白这些比较抽象的概念. -------------------------------------- C#: 你和美国人说话要说英语 和中国人说话说汉 ...

  8. 【C#】关于DateTime的一点记录 ToString("yyyy-MM-dd HH:mm:ss")

    DateTime dt = DateTime.Now; string z = dt.ToString("yyyy-MM-dd HH:mm:ss");//你直达这个是 年月日时分秒的 ...

  9. Windows下将jar包封装成服务程序

    1 准备 使用工具Procrun(http://commons.apache.org/proper/commons-daemon/procrun.html),下载地址(http://archive.a ...

  10. sql 连表

    左外 右外连接 select * from tb1 left   join tb2 on(tb1.id = tb2.id) select * from tb1 right join tb2 on(tb ...