本章思路

根据之前的总结,如果M很大,那么无论假设泛化能力差的概率多小,都无法忽略,所以问题转化为证明M不大,然后上章将其转化为证明成长函数:mh(N)为多项式级别。直接证明似乎很困难,本章继续利用转化的思想,首先想想和mh(N)相关的因素可能有哪些?不难想到目前来看只有两个:

  • 假设的抽样数据集大小N;
  • break point k(这个变量确定了假设的类型);

那么,由此可以得到一个函数B,给定N和k可以确定该系列假设能够得到的最大的mh(N),那么新的目标便是证明B(N,k) <= Poly(N)。这便是本章的主要目标。

上图展示了不同N和k如何影响最终的growth function,表达了本章的重点是证明growth function是Poly的。

接着,问题可以进一步简化,上面我们知道growth function由N及H决定,而H又可以转为k,一个k决定了一类H,这样的抽象推导出了一个很重要的函数,这个函数的y是growth function,X则分别为N和k。

,它们的growth function即时一致的,换句话说,这个函数将H的本质通过k表达了出来。

原目标就继续转化为证明B(N,k)为poly。

证明的过程很巧妙,以B(4,3)为例子:

:找出B(4,3)和B(3,x)的关系,则可以得到一个递推式

,dichotomy如下:

是极限。

种dichotomy分组,目前分成两组,分别是orange和purple,orange的特点是,x1,x2和x3是一致的,x4不同并成对,例如1和5,2和8等,purple则是单一的,x1,x2,x3都不同。

个不同的vector并成为alpha,相应的purple为beta,那么B(4,3) = 2*alpha + beta,这个是直接转化。紧接着,由定义,B(4,3)是不能允许任意三点shatter的,所以由alpha和beta构成的所有B(4,3)的所有三点组合也不能shatter(alpha经过去重),即alpha + beta <= B(3,3)

最关键的来了,首先给出结论,alpha的vector不能在任意两点被shatter,为啥?反证法,假设可以,那么由于alpha对x4是成对出现的,所以把apha加上x4就能构成三个点的shatter,这个地方非常巧妙这也道出了之前这样分组的精髓,所以alpha <= B(3,2)。

由此得出B(4,3)和B(3,x)的关系。

步骤二:推导出一般式

有了前面一步的基础,后面的就很直接了。


展开可以,接着得出:

那么得出的结论就是:

上面明显是poly的,由此得出来我们梦寐已久的结果。

光有这个还不行,我们要带到下面的关键不等式中才能最终得出,选取最小Ein 假设是可以的忽略错误的,只要有breaking point存在于假设。

这里的证明我大致看了一下,对整体理解不是很大帮助,准备以后上完大部分课程后再看看。

总结:

本章的结论很明显,即时假设看起来是无穷的,只要存在breaking point,那么growth function便是多项式级别,假设的数量是限定的,我们只要保证Ein足够小,那么N大以及breaking point存在可以保证该假设具有较好的泛化性。

Coursera台大机器学习课程笔记5 -- Theory of Generalization的更多相关文章

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

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

  2. Coursera台大机器学习课程笔记3 – 机器学习的可能性

    提纲: 机器学习为什么可能? 引入计算橙球概率问题 通过用Hoeffding's inequality解决上面的问题,并得出PAC的概念,证明采样数据学习到的h的错误率可以和全局一致是PAC的 将得到 ...

  3. Coursera台大机器学习课程笔记15 -- Three Learning Principles

    这节课是最后一节,讲的是做机器学习的三个原则. 第一个是Occan's razor,即越简单越好.接着解释了什么是简单的hypothesis,什么是简单的model.关于为什么越简单越好,林老师从大致 ...

  4. Coursera台大机器学习课程笔记6 -- The VC Dimension

    本章的思路在于揭示VC Dimension的意义,简单来说就是假设的自由度,或者假设包含的feature vector的个数(一般情况下),同时进一步说明了Dvc和,Eout,Ein以及Model C ...

  5. Coursera台大机器学习课程笔记14 -- Validation

    这节课是接着上节的正则化课程的,目的也是为了防止overfitting. 第一小节讲了模型的选择,前面讲了很多模型,那么如何做出正确的选择呢?我们的目标是选择最小的Eout目标函数.首先应避免视觉化选 ...

  6. Coursera台大机器学习课程笔记8 -- Linear Regression

    之前一直在讲机器为什么能够学习,从这节课开始讲一些基本的机器学习算法,也就是机器如何学习. 这节课讲的是线性回归,从使Ein最小化出发来,介绍了 Hat Matrix,要理解其中的几何意义.最后对比了 ...

  7. Coursera台大机器学习课程笔记7 -- Noise and Error

    本章重点:  简单的论证了即使有Noise,机器依然可以学习,VC Dimension对泛化依然起作用:介绍了一些评价Model效果的Error Measurement方法. 一论证即使有Noisy, ...

  8. Coursera台大机器学习课程笔记13 -- Regularization

    这一节讲的是正则化,在优化中一直会用到正则化项,上课的时候老师一句话代过,没有作过多的解释.听完这节课后, 才明白好大学和野鸡大学的区别有多大.总之,这是很有收获的一节课. 首先介绍了为什么要正则化, ...

  9. Coursera台大机器学习课程笔记11 -- Nonlinear Transformation

    这一节讲的是如何将线性不可分的情况转为非线性可分以及转换的代价.特征转换是机器学习的重点. 最后得出重要的结论是,在做转换时,先从简单模型,再到复杂模型. 参考:http://www.cnblogs. ...

随机推荐

  1. requirejs 多页面,多js 打包代码,requirejs多对多打包【收藏】

    这段代码来自 http://stackoverflow.com/questions/20583812/grunt-requirejs-optimizer-for-a-multi-app-project ...

  2. Shader实例:边缘发光和描边

    效果图: 1.边缘发光 思路:用视方向和法线方向点乘,模型越边缘的地方,它的法线和视方向越接近90度.点乘越接近0 那么用 1-减去上面点乘的结果,来作为颜色分量,来反映边缘颜色强弱. Shader ...

  3. iOS常用技术

    1.判断系统 #define UMSYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v)  ([[[UIDevice currentDevice] systemVersi ...

  4. 修复VS,恢复初始状态

    命令提示 输入命令: devenv.exe /resetuserdata 处理版本221优化改动:1.SQL优化,采用预编译方式并将SQL语句修改为大写,尽量减少Oracle数据库硬解析2.复用部分代 ...

  5. css3新特性

    1.css3选择器   我们所定义的 CSS 属性之所以能应用到相应的节点上,就是因为 CSS 选择器模式.参考下述代码: Body > .mainTabContainer div > s ...

  6. javaScript中其他类型的值转换为Boolean类型

    将javaScript中其他任意类型的值转换为对应Boolean类型的值. 一  将number类型的值转换为Boolean类型 数值为0: var myBoolean = new Boolean(0 ...

  7. Android如何做到应用程序图标隐藏,由第三方程序启动

    在你App的AndroidManifest.xml中,将启动页做如下修改 <intent-filter> <action android:name="android.int ...

  8. The Path Attribute

    https://tools.ietf.org/html/rfc6265#section-5.1.1 4.1.2.4. The Path Attribute The scope of each cook ...

  9. eclipse SE增加Web开发插件;安装配置Apache

    在eclipse SE版本点击"Help"--"Install New Software..."--"Work with"中输入" ...

  10. JS检测移动端横竖屏

    (function () {                                var supportOrientation = (typeof window.orientation == ...