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

    一.Struts2简介 1.概念:轻量级的MVC框架,主要解决了请求分发的问题,重心在控制层和表现层.低侵入性,与业务代码的耦合度很低.Struts2实现了MVC,并提供了一系列API,采用模式化方式 ...

  2. Vue-[v-model]理解示例

    对应文档节点: https://vuefe.cn/v2/guide/components.html#Customizing-Component-v-model <body> <div ...

  3. JAVA数据类型中的char类型

    1.JAVA中,char占2字节,16位.可在存放汉字 2.char赋值 char a='a'; //任意单个字符,加单引号. char a='中';//任意单个中文字,加单引号. char a=11 ...

  4. centos7关于防火墙的操作

    1.firewalld的基本使用 启动: systemctl start firewalld 查看状态: systemctl status firewalld  停止: systemctl disab ...

  5. python decode和encode

    摘抄: 字符串在Python内部的表示是Unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符解码(decode)成unicode,再从unicode编码 ...

  6. centos yum安装常用命令

    安装killall命令 yum install -y psmisc 安装sz(下载)和rz(上传)命令 yum install -y lrzsz 安装 ifconfig 命令 yum install ...

  7. 合并excel的多个sheet

    '合并excel的多个sheetSub 合并当前工作簿下的所有工作表()Application.ScreenUpdating = FalseFor j = 1 To Sheets.Count If S ...

  8. C#子窗体闪烁问题解决

    在父窗体随意为之添加 protected override CreateParams CreateParams { get { XtraForm xa = _App.Framework.MainFor ...

  9. Linux文件系统简介----转载

    原文地址:Linux文件系统 文件系统是linux的一个十分基础的知识,同时也是学习linux的必备知识. 本文将站在一个较高的视图来了解linux的文件系统,主要包括了linux磁盘分区和目录.挂载 ...

  10. Codeforces Round #413 B. T-shirt buying

    B. T-shirt buying time limit per test   3 seconds memory limit per test   256 megabytes   A new pack ...