Coursera台大机器学习课程笔记6 -- The VC Dimension
本章的思路在于揭示VC Dimension的意义,简单来说就是假设的自由度,或者假设包含的feature vector的个数(一般情况下),同时进一步说明了Dvc和,Eout,Ein以及Model Complexity Penalty的关系。
一回顾

由函数B(N,k)的定义,可以得到比较松的不等式mh(N)小于等于N^(k-1)(取第一项)。

这样就可以把不等式转化为仅仅只和VC Dimension和N相关了,从而得出如下结论:
1 mh(N)有break point k,那么其就是多项式级别的,我们认为假设数量不算多,是个好的假设;
2 N 足够大,这样我们便算有了好的抽样数据集(假设不含很多Noise);
=〉这两点由上述不等式可以推导这样的机器学习算法有好的泛化能力,其在全集上会有和在D上一致的表现;
3 如果算法选择的是小的Ein
=>最终我们可以推断机器可以学习,因为其在全集数据集错误率会较低。
二什么是VC Dimension
下面给出了VC Dimension的定义,
- 它是该假设集能够shatter的最多inputs的个数,即最大完全正确的分类能力(注意,只要存在一种分布的input能够正确分类就算是,这才叫最大);
- 它是最小的k-1,这个很好理解,最小的k是假设集不能shatter任何分布类型的inputs的最少个数,和VC Dimension正好相反;

同样,将Dvc替换k,得到mh(N)<=N^(Dvc)
三 VC Dimension 和 Feature 数量的关系,在PLA算法中
维的情况,对于多维呢?也就是说增加feature咋办?

这里又抛出了一个结论:Dvc = d+1, d为feature vector的维度。
要证明这个等式,可以将它分为两块证明,
1 证明 Dvc >= d+1;
2 证明 Dvc <= d+1;
:
因为Dvc >= d+1, 那么我们必然可以shatter 某一类的d+1的inputs,这个是VC Dimension的定义。这里用线性代数的方法表达了X矩阵的每一行是一个x向量的转置。这个有意构造的X便能够被shatter。首先,shatter的本质是H对X的每个判断都是对的即等于y,所以有如下不等式:
X*W = Y,我们注意到X是可逆的,所以W = X^(-1) * Y,所以我们只要让feature vector等于X的逆矩阵乘以Y就能给完全shatter X,言外之意,只要我们构造的inputs其有逆矩阵就能够被shatter!

下面证明等式二,Dvc<=d+1,也就是说对于d+2的inputs,其一定不能被shatter,同样我们构造一个X,这次是任意的,其包含d+2个inputs,我们发现这个矩阵的列为d+1而行为d+2,由线性代数的知识,我们知道这d+2个向量的某一个可以表示为另外d+1个向量的线性组合,假设这个向量为Xd+2,那么便有了如下等式:
w^Txd+2 = a1w^Tx1 + a2w^Tx2 + ... + ad+1w^Txd+1,
我们只要构造这样这组w,保证每一项是正的,例如假设a1是负的,那么我们构造w使得w^Tx1也是负的,这样就使得最终的值为正,从而我们没法分类其为负的情况,因为其值始终是正的。换句话说,因为d+2是前d+1的线性组合,这样一个限制导致了最终的结果。所以对于d+2我们无法完全分类,也即使Dvc<=d+1。

四 VC Dimension的直观理解
那么VC Dimension本质上到底是什么呢?
下图给了答案

自由度的概念,体现在我们能够包含多少feature w,能够有多少假设H的数量,以及我们最终的分类能力Dvc,也就是说Dvc本质上大体上是H的分类能力,同样可以理解为feature的个数,假设的个数,因为它们都是互相成正比的。
再次回到以前那个泛化不等式:

将它左右变形,求出Eout的的界限,我们比较关注上限,可知我们最终的机器学习算法其在整体的错误率和N,H,S的表达式(Model 复杂度的惩罚)有关。下图很直观的给出了它们之间的关系:

这个图说了:
1 Dvc越高 -> Ein下降(shatter能力变强)-> model complexity的penalty提高,导致Eout先降后升
2 Dvc越低 -> Ein升高 -> model complexity的penalty降低,Eout最终也是会上升
所以最好情况的Eout是我们选取Dvc在中间的情况,这样Ein和penalty都不高,即最终的Eout也不会太高。这也就是为什么,我们不能够盲目增加feature也不能有太少feature的原因。
五总结
本章主要描述了VC Dimension并给出了较为直观的解释,我们不能盲目增加VC Dimension也不能太低,而应该去中间值,这样既保证Ein不高也保证model complexity的penalty不高。
Coursera台大机器学习课程笔记6 -- The VC Dimension的更多相关文章
- Coursera台大机器学习课程笔记7 -- Noise and Error
本章重点: 简单的论证了即使有Noise,机器依然可以学习,VC Dimension对泛化依然起作用:介绍了一些评价Model效果的Error Measurement方法. 一论证即使有Noisy, ...
- Coursera台大机器学习课程笔记4 -- Training versus Testing
这节的主题感觉和training,testing关系不是很大,其根本线索在于铺垫并求解一个问题: 为什么算法PLA可以正确的work?因为前面的知识告诉我们,只有当假设的个数有限的时候,我们才 ...
- Coursera台大机器学习课程笔记3 – 机器学习的可能性
提纲: 机器学习为什么可能? 引入计算橙球概率问题 通过用Hoeffding's inequality解决上面的问题,并得出PAC的概念,证明采样数据学习到的h的错误率可以和全局一致是PAC的 将得到 ...
- Coursera台大机器学习课程笔记15 -- Three Learning Principles
这节课是最后一节,讲的是做机器学习的三个原则. 第一个是Occan's razor,即越简单越好.接着解释了什么是简单的hypothesis,什么是简单的model.关于为什么越简单越好,林老师从大致 ...
- Coursera台大机器学习课程笔记5 -- Theory of Generalization
本章思路: 根据之前的总结,如果M很大,那么无论假设泛化能力差的概率多小,都无法忽略,所以问题转化为证明M不大,然后上章将其转化为证明成长函数:mh(N)为多项式级别.直接证明似乎很困难,本章继续利用 ...
- Coursera台大机器学习课程笔记14 -- Validation
这节课是接着上节的正则化课程的,目的也是为了防止overfitting. 第一小节讲了模型的选择,前面讲了很多模型,那么如何做出正确的选择呢?我们的目标是选择最小的Eout目标函数.首先应避免视觉化选 ...
- Coursera台大机器学习课程笔记8 -- Linear Regression
之前一直在讲机器为什么能够学习,从这节课开始讲一些基本的机器学习算法,也就是机器如何学习. 这节课讲的是线性回归,从使Ein最小化出发来,介绍了 Hat Matrix,要理解其中的几何意义.最后对比了 ...
- Coursera台大机器学习课程笔记13 -- Regularization
这一节讲的是正则化,在优化中一直会用到正则化项,上课的时候老师一句话代过,没有作过多的解释.听完这节课后, 才明白好大学和野鸡大学的区别有多大.总之,这是很有收获的一节课. 首先介绍了为什么要正则化, ...
- Coursera台大机器学习课程笔记11 -- Nonlinear Transformation
这一节讲的是如何将线性不可分的情况转为非线性可分以及转换的代价.特征转换是机器学习的重点. 最后得出重要的结论是,在做转换时,先从简单模型,再到复杂模型. 参考:http://www.cnblogs. ...
随机推荐
- mysql数据去除重复及相关优化(转)
由于mysql不支持同时对一张表进行操作,即子查询和要进行的操作不能是同一张表,因此需要通过临时表中专以下. 1.单字段重复 生成临时表,其中uid是需要去重的字段 create table tmp_ ...
- 【BZOJ】3523: [Poi2014]Bricks
题意 \(n(n \le 1000000)\)个物品,颜色分别为\(a[i]\),现在要求排在一排使得相邻两个砖块的颜色不同,且限定第一个砖块和最后一个砖块的颜色,输出一个合法解否则输出-1. 分析 ...
- .NET基础面试题整理
1.什么是.NET?什么是CLI?什么是CLR?IL是什么? (1).net用于代码编译和执行的集成托管环境,换句话,它管理应用程序运行的方方面面,包括首次运行的编译,为程序分配内存存储数据和指令 ...
- php摇杆Tiger摇奖
先说下整体思路,代码已附下方. 1.递归产生一个非中奖数(即非连续数字:'111','222','333','444','555','666','777','888') 2.点击摇奖,把奖项通过设置的 ...
- convert与int.parse int
1,convert :适合将object 转换 int:简单数据转换 int.parse:将string类型转换为int 2,convert:对于空值返回0 不会报异常 int.parse:将会抛出异 ...
- matlab处理图像代码
1.图像的读取MATLAB中从图像文件中读取数据用函数imread(),这个函数的作用就是将图像文件的数据读入矩阵中,此外还可以用imfinfo()函数查看图像文件的信息(见例1)%例1:图像数据及图 ...
- Request 、Response 与Server的使用
纯属记录总结,以下图片都是来自 ASP.NET笔记之 Request .Response 与Server的使用 Request Response Server 关于Server.MapPath 方法看 ...
- 动态加载多国语言 ---- cookie + 浏览器
一.多国语言缩写列表 因为涉及到浏览器的可接收语言,所以需要知道各个国家的语言缩写. 这个百度一下即可. en 英文 en_US 英文 (美国) ar 阿拉伯文 ar_AE 阿拉伯文 (阿拉伯联合酋长 ...
- Mac下,使用sshpass让iterm2支持多ssh登录信息保存
windows里有个Xshell非常的方便好使,因为它能保存你所有的ssh登录帐号信息.MAC下并没有xshell,有些也提供这样的功能,但效果都不好.iterm2是很好的终端,但却不能很好的支持多p ...
- 使用JSON.Net(Newtonsoft.Json)作为ASP.Net MVC的json序列化和反序列化工具
ASP.Net MVC默认的JSON序列化使用的是微软自己的JavaScriptSerializer.性能低不说,最让人受不了的是Dictionary<,>和Hashtable类型居然对应 ...