机器学习基石 5 Training versus Testing

Recap and Preview

回顾一下机器学习的流程图:

机器学习可以理解为寻找到 \(g\),使得 \(g \approx f\),也就是 \(E_{out}(g) \approx 0\) 的过程。为了完成这件事情,有两个关键的步骤,一个是保证 \(E_{out}(g) \approx E_{in}(g)\),另一个是保证 \(E_{in}(g) \approx 0\) (这两件事情通常由 “训练” 以及 “测试” 这两个过程来完成),当这两件事情都得到保证之后,我们就可以得到 \(E_{out}(g) \approx 0\),于是完成了学习。

\(M\)(hypothesis 的数目)的取值对这两个问题有影响:

  1. \(M\) 太小,能保证 \(E_{out}(g) \approx E_{in}(g)\),但是不能保证 \(E_{in}(g) \approx 0\);
  2. \(M\) 太大,能保证 \(E_{in}(g) \approx 0\),但是不能保证 \(E_{out}(g) \approx E_{in}(g)\)。

下面将尝试解决 \(M\) 较大时,\(E_{out}(g) \approx E_{in}(g)\) 的问题。

Effective Number of Lines

对于这个式子,\(M = \infty\) 时,右侧的值很大,\(E_{out}(g) \approx E_{in}(g)\) 不能保证,于是我们尝试用一个合适的数 \(m_H\) 代替式子中的 \(M\),使无穷变成有限。

第一个式子中的 \(M\) 来源于 “Union Bound”

其中 \(P[B_M]\) 表示的是第 \(M\) 个假设函数 \(h_M\) 在数据集上发生坏事情(即存在 BAD DATA,\(E_{out}(h_M) \neq E_{in}(h_M)\))的概率。

然而当 \(M\) 很大时,假设集中存在许多相似的假设函数 \(h\),它们发生坏事情的概率和情形都很接近,这样使用 “Union Bound” 来计算整个假设集发生坏事情的概率,便存在许多重复的地方,于是算出来的概率会比实际的高很多(over-estimating)。

我们以二元分类来阐述怎么解决这个问题:我们根据分类结果,对 \(h\) 进行分类。

样本点大小 \(N\) 假设集 \(H\) 等价类(考虑最多的情况)
1 2 类:\(\{o\}\)、\(\{x\}\)
2 4 类:\(\{oo\}\)、\(\{ox\}\)、\(\{xo\}\)、\(\{xx\}\)
... ...
N \(2^{N} 类\)

对于一个大小为 \(N\) 的数据集,任意一个假设函数 \(h\) 都属于上述 \(2^N\) 个等价类之间的一个,因此我们可以用 \(2^N\) 来代替原不等式中的 \(M\)。

Effective Number of Hypotheses

我们把上面提到的等价类的概念起一个名字叫做 Dichotomy。

具体的 Dichotomy 的 size 与这 \(N\) 个数据的具体取值有关(但是不会大于 \(2^N\)),为方便讨论我们取最大那个 size 来分析,取名为 growth function,记作 \(m_H(N)\)。

接下来我们需要计算 \(m_H(N)\),首先考虑几种不同的模型的 \(m_H(N)\)

  • Positive Rays:\(m_H(N) = N + 1\)

  • Positive Intervals:\(m_H(N) = {{N+1} \choose 2} + 1\)

  • Convex Sets:\(m_H(N) = 2^N\)

总结如下:

Break Point

我们希望 \(m_H(N)\) 是多项式形式而不是指数形式的,这样才能保证 \(E_{out}(g) \approx E_{in}(g)\):

我们引入一个概念叫 break point,定义如下所示

于是上面所提到的四种模型的 break point 如下所示:

我们猜测 \(m_H(N)\) 与 break point 有下面的关系:

  • no break point:\(m_H(N) = 2^N\)
  • break point \(k\):\(m_H(N) = O(N^{k-1})\)

如果猜测成立,那么在有 break point 的情况下,\(m_H(N)\) 便是一个多项式形式,这样就能保证 \(E_{out}(g) \approx E_{in}(g)\) 了。

机器学习基石 5 Training versus Testing的更多相关文章

  1. Coursera台大机器学习课程笔记4 -- Training versus Testing

     这节的主题感觉和training,testing关系不是很大,其根本线索在于铺垫并求解一个问题:    为什么算法PLA可以正确的work?因为前面的知识告诉我们,只有当假设的个数有限的时候,我们才 ...

  2. 【Training versus Testing】林轩田机器学习基石

    接着上一讲留下的关子,机器学习是否可行与假设集合H的数量M的关系. 机器学习是否可行的两个关键点: 1. Ein(g)是否足够小(在训练集上的表现是否出色) 2. Eout(g)是否与Ein(g)足够 ...

  3. 林轩田机器学习基石课程学习笔记5 — Training versus Testing

    上节课,我们主要介绍了机器学习的可行性.首先,由NFL定理可知,机器学习貌似是不可行的.但是,随后引入了统计学知识,如果样本数据足够大,且hypothesis个数有限,那么机器学习一般就是可行的.本节 ...

  4. 机器学习基石:05 Training versus Testing

    train:A根据给定训练集D在H中选出g,使得Ein(g)约等于0: test:g在整个输入空间X上的表现要约等于在训练集D上的表现,使得Eout(g)约等于Ein(g). 如果|H|小,更易保证t ...

  5. 机器学习基石笔记:05 Training versus Testing

    train:A根据给定训练集D在H中选出g,使得Ein(g)约等于0: test:g在整个输入空间X上的表现要约等于在训练集D上的表现,使得Eout(g)约等于Ein(g). 如果|H|小,更易保证t ...

  6. 05 Training versus Testing

    train:A根据给定训练集D在H中选出g,使得Ein(g)约等于0: test:g在整个输入空间X上的表现要约等于在训练集D上的表现,使得Eout(g)约等于Ein(g). 如果|H|小,更易保证t ...

  7. 理解机器为什么可以学习(二)---Training versus Testing

    前边由Hoeffding出发讨论了为什么机器可以学习,主要就是在N很大的时候Ein PAC Eout,选择较小的Ein,这样的Eout也较小,但是当时还有一个问题没有解决,就是当时的假设的h的集合是个 ...

  8. 机器学习基石的泛化理论及VC维部分整理(第五讲)

    第五讲 Training versus Testing 一.问题的提出 \(P_{\mathcal{D}}\left [ BAD   \mathcal{D} \right ]  \leq 2M \cd ...

  9. 台大《机器学习基石》课程感受和总结---Part 2 (转)

    转自:http://blog.sina.com.cn/s/blog_641289eb0101e2ld.html Part 2总结一下一个粗略的建模过程: 首先,弄清楚问题是什么,能不能用机器学习的思路 ...

随机推荐

  1. Recurrent Neural Network系列2--利用Python,Theano实现RNN

    作者:zhbzz2007 出处:http://www.cnblogs.com/zhbzz2007 欢迎转载,也请保留这段声明.谢谢! 本文翻译自 RECURRENT NEURAL NETWORKS T ...

  2. js_DOM操作

    嗯,大过年的上次更新应该还是在,大年30前一天,说好的一天更一篇,感觉食言了,虽然没有更,但是,每天还是坚持在学习的,所以今天的任务就是把这几天学的都发上来. 博客,我觉得不仅仅是交流知识的地方,我宁 ...

  3. 在Window下安装Oracle

    一.Oracle下载地址 http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html 二.解压 ...

  4. Windows下MySQL多实例安装/主从复制/重置密码

    Windows创建MySQL多实例 安装MYSQL和实例1 运行mysql-installer-community-5.7.16.0.msi 选择组件 MySQL Server 5.7.16 – X6 ...

  5. java_XML_STAX

    xml文件 <?xml version="1.0" encoding="UTF-8"?> <bookstore> <book ca ...

  6. 不要在Android的Application对象中缓存数据!

    前言   在你的App中的很多地方都需要使用到数据信息,它可能是一个session token,一次费时计算的结果等等,通常为了避免Activity之间传递数据的开销,会将这些数据通过持久化来存储. ...

  7. 前端基本知识(二):JS的原始链的理解

    之前一直对于前端的基本知识不是了解很详细,基本功不扎实,但是前端开发中的基本知识才是以后职业发展的根基,虽然自己总是以一种实践是检验真理的唯一标准,写代码实践项目才是唯一,但是经常遇到知道怎么去解决这 ...

  8. swift 可选类型笔记

    晚上十一点半了,看书累了,原本想睡了的,想了想,还是把刚看的总结一下,把这篇笔记写了吧.广州下雨,真特么的冷..好了,废话不说了,说正题说说Swift可选类型. 先定义一个变量: var string ...

  9. java学习阶段三:运算符和结构学习

    import java.util.Scanner;/* * JAVA中运算符的学习: * 算术运算符:+.-.*./ 和 %,两个整数相除,结果还是整数. * 赋值运算符:=.+=.-=.*=./=. ...

  10. 提升iOS审核通过率之“IPv6兼容测试”

    作者:jingle 腾讯系统测试工程师 商业转载请联系腾讯WeTest授权,非商业转载请注明出处. 原文链接:http://wetest.qq.com/lab/view/285.html 一.背景 在 ...