机器学习基石的泛化理论及VC维部分整理(第六讲)
第六讲
第五讲主要讲了机器学习可能性,两个问题,(1)\(E_{in} 要和 E_{out}\) 有很接近,(2)\(E_{in}\)要足够小。
对于第一个假设,根据Hoefding's Inequality 可以得到,\( P[|E_{in} - E_{out}| > \epsilon] < 2Mexp(-2\epsilon^2N)\)
对于上述的\(M\)来说,如果 \(M < \infty\),则当\(N\)足够大时,\(P\)会比较小,也就是坏事情出现的概率比较小,机器学习是可能的,但是当\(M = \infty\)时,就无法进行学习了。
那怎么办?考虑到or的过程中有不少重叠的部分,就从数据的角度来看到底有多少种可能的 effective Hypothesis,多少种可能的Hypothesis就是成长函数的值,Break Point的概念也就出来了,就是当\(m_{\mathcal{H}}(k) < 2^k\),\(k\)就是Break Point。 Break Point有什么用呢?
本节引出一个新概念,Break Function,是指最小的Break Point \(k\),Growth Function 可能的最大值,记为\(B(N,k)\)。
当\( k = 1\)时,\( B(N,1) = 2^0 = 1\)
当\( k > N\)时,\(B(N,k) = 2^{N}\)
当\( k = N\)时,\(B(N,k) = 2^{N} - 1\),最大的可能值
根据上述两条会得到一个矩阵的一部分数据,
重点要考虑\( k < N\)的情况,怎么算呢? 林老师给出一个图示,在第六讲的12页-17页,
\(B(4,3)\) 可以有11个可能的Hypothesis,对于Break Point是3来说,应该只能Shattered 2个点的情况,2个点的所有情况是4,那么如果遮住\(x_{4}\),再去重之后应该不超过\(2B(3,3)\)。
也就是说,从三个点扩展到四个点的过程中,只有部分的dichotomy被复制了,我们把这部分被复制的点的个数称为\(\alpha\),没被复制的点的个数称为\(\beta\)。满足\(0\leq \alpha, \beta \leq B(3,3)\)。可知 \( B(3,3) \geq \alpha + \beta , B(4,3) = 2\alpha + \beta\) ,单独看\(\alpha\)部分,因为Break Point是 3,故任何三个都不能被Shattered,那么,如果只看\(\alpha\)部分,则,\( x_{1}, x_{2}, x_{3}\) 中任意两个都不能被Shattered,(如果可以,加上\(x_{4}\)则有3个点被Shattered)则,\(\alpha \leq B(3,2) \),有如下三个结果:
(1) \( B(4,3) = 2\alpha + \beta\)
(2)\( B(3,3) \geq \alpha + \beta\)
(3) \(B(3,2) \geq \alpha\)
综合上面三个公式,可得:
\( B(4,3) \leq B(3,3) + B(3,2)\)
推广得:\( B(N,k) \leq B(N-1,k) + B(N-1, k-1)\)
根据数学归纳法,
\( B(N,k) \leq \sum_{i=0}^{k-1}\binom{N}{i}\)
从上面这个式子可以更为欣喜的得到,之前的概率上界是可以在多项式里的,这样当\(N\) 足够大时,出现坏事情的概率就会比较小。这样学习就会更为可行。
下面就要去求解一个上界:VC Bound
want:
\( P[ \exists h \in \mathcal{H} s.t. |E_{in}(h) - E_{out}(h)| > \epsilon] \leq 2 m_{\mathcal{H}}(N) exp(-2\epsilon^2N)\)
机器学习基石的泛化理论及VC维部分整理(第六讲)的更多相关文章
- 机器学习基石的泛化理论及VC维部分整理(第五讲)
第五讲 Training versus Testing 一.问题的提出 \(P_{\mathcal{D}}\left [ BAD \mathcal{D} \right ] \leq 2M \cd ...
- 机器学习基石的泛化理论及VC维部分整理
第四讲 机器学习的可行性 一.Hoeffding's Inequality \(P[\left | \nu -\mu \right |>\epsilon ] \leq 2exp(-2\epsi ...
- 机器学习基石笔记:07 The VC Dimension
当N大于等于2,k大于等于3时, 易得:mH(N)被Nk-1给bound住. VC维:最小断点值-1/H能shatter的最大k值. 这里的k指的是存在k个输入能被H给shatter,不是任意k个输入 ...
- 【机器学习基石笔记】七、vc Dimension
vc demension定义: breakPoint - 1 N > vc dimension, 任意的N个,就不能任意划分 N <= vc dimension,存在N个,可以任意划分 只 ...
- 《机器学习基石》---VC维
1 VC维的定义 VC维其实就是第一个break point的之前的样本容量.标准定义是:对一个假设空间,如果存在N个样本能够被假设空间中的h按所有可能的2的N次方种形式分开,则称该假设空间能够把N个 ...
- 机器学习基石7-The VC Dimension
注: 文章中所有的图片均来自台湾大学林轩田<机器学习基石>课程. 笔记原作者:红色石头 微信公众号:AI有道 前几节课着重介绍了机器能够学习的条件并做了详细的推导和解释.机器能够学习必须满 ...
- 机器学习基石:07 The VC Dimension
当N大于等于2,k大于等于3时, 易得:mH(N)被Nk-1给bound住. VC维:最小断点值-1/H能shatter的最大k值. 这里的k指的是存在k个输入能被H给shatter,不是任意k个输入 ...
- 【转载】VC维的来龙去脉
本文转载自 火光摇曳 原文链接:VC维的来龙去脉 目录: 说说历史 Hoeffding不等式 Connection to Learning 学习可行的两个核心条件 Effective Number o ...
- 机器学习基石12-Nonlinear Transformation
注: 文章中所有的图片均来自台湾大学林轩田<机器学习基石>课程. 笔记原作者:红色石头 微信公众号:AI有道 上一节课介绍了分类问题的三种线性模型,可以用来解决binary classif ...
随机推荐
- hdu 1059 多重背包 背包指数分块
思路: 这个方法要看<浅谈几类背包问题>这篇论文. #include"stdio.h" #define Max(a,b) (a)>(b)?(a):(b) ],k[ ...
- 用Activator.CreateInstance代替new实现类的实例化(转)
一直想得到这样一个函数,输入一个类的名称为参数,返回一个相应的类的实例. 这在工厂模式中是非常有用的 这样,可以使程序有更高的扩展性,例如,,下面的例子 如果现在有一个类,专门用来计算交通工具的速度, ...
- BOOTCAMP版本适配机型表
这些只支持64位的win7 win8 ******************************************** 5.1.5640 MacBook Air(11 英寸,2013 年中)M ...
- 也说border-box盒模型
border-box是css3的一个新属性,使用这个属性,和以往的content-box比起来,会有诸多便利之处,bootstrap3也使用的是这个border-box,甚至很多人认为,border- ...
- Commons Configuration2 - Quick start guide
原文:http://commons.apache.org/proper/commons-configuration/userguide/quick_start.html Reading a prope ...
- ActiveMQ(5.10.0) - Destination-level authorization
To build upon authentication, consider a use case requiring more fine-grained control over clients t ...
- 【WebKit】---WebKit的CSS扩展(WebKit是私有属性)
1.-webkit-touch-callout 当你触摸并按住触摸目标时候,禁止或显示系统默认菜单.在iOS上,当你触摸并按住触摸的目标,比如一个链接,Safari浏览器将显示链接有关的系统默认菜单. ...
- Core Bluetooth Programming Guide
https://developer.apple.com/library/ios/documentation/NetworkingInternetWeb/Conceptual/CoreBluetooth ...
- 160多个android开源代码汇总
第一部分 个性化控件(View) 主要介绍那些不错个性化的View,包括ListView.ActionBar.Menu.ViewPager.Gallery.GridView.ImageView.Pro ...
- 标准库string类型简述
若想使用标准库的string类需要使用如下声明: #include <string> Using std::string: Using std::wstring: 那么就可以使用这两个类了 ...