咱们知道dichotomies数量的上限是成长函数,成长函数的上限是边界函数:算法
边界函数的上限就是N^(k-1)了:函数
因而咱们获得了上限(成长函数)的上限(边界函数)的上限。。。学习
因此VC Bound能够改写成:测试
复习结束,下面咱们定义VC Dimension:大数据
用中文讲,对于某个备选函数集H,VC Dimension就是它所能shatter的最大数据个数N。spa
VC Dimension = minimum break point - 1。教程
因此在VC Bound中,(2N)^(k-1)能够替换为(2N)^(VC Dimension)。事件
VC Dimension与学习算法A,输入分布P,目标函数f均无关。数学
1D的PLA最多shatter2个点,因此VC Dimension = 2;it
2D的PLA最多shatter3个点,因此VC Dimension = 3;
因此dD的PLA,VC Dimension会不会等于d+1?
要证实这一点,只需证实:
------------------------------------------------------------------------------------------------------------
(1) 证实VC Dimension≥d+1,只需证实H能够shatter某些d+1个输入。
咱们刻意构造一组d+1个输入:
第一列灰色的1是对每一个输入提升1维的操做,这个是一个d+1维的方阵,对角线所有是1,因此该矩阵可逆。
对于任意一种输出,咱们总能找到一个备选函数使得:
即这一组输入的全部dichotomies都被穷尽了,因此VC Dimension≥d+1得证。
------------------------------------------------------------------------------------------------------------
(2) 证实VC Dimension≤d+1,只需证实H不能shatter任何d+2个输入。
在2D情形下构造一组4个输入:
因此 x4 = x3 + x2 - x1。
若是前3个输出是:
那么第4个输出是多少?
因为:
因此:
------<1>
若是有一个备选函数W,使得其在x1,x2,x3上的输出的符号与方程<1>中的符号相同:
那么必定有:
因此H不能shatter 2+2=4个输入。
推广到d维:
任何d+2个数据做为输入,即便升了一维以后,输入矩阵的行数(d+2)依然大于列数(d+1),因此矩阵各行是线性相关的,即x(d+2)能用x(d+1),......,x2,x1的线性组合来表示。
咱们假设H能够shatter d+2个输入,那么咱们必定能找到一个W,使得x(d+1),......,x2,x1对应的输出的符号与他们在线性表达式中的系数符号相同:
因此:
以前的假设是错的,H不能shatter d+2个输入。
因此VC Dimension≤d+1得证。
综合(1)(2),对于d-D PLA,其VC Dimension=d+1。
在教程中这么说:
即VC Dimension是备选函数集H的“能力”。“能力”越大,H对数据的划分就越细致。
例如,从Positive Ray到Positive Interval,自由变量从1个变成了2个,VC Dimension从1变成了2,H变得更强大。
在VC Dimension与备选函数集大小M基本正相关:
VC Bound:
因此GOOD事件:| E-in(h) - E-out(h) ≤ ε |能够改写成:
即:
咱们最终但愿E-out越小越好,因此上面的不等式中能够只关心上界。
咱们把根号项看作一种惩罚,它拉大了E-in与E-out之间的距离,这个惩罚与“模型复杂度”有关,模型越复杂,惩罚越大:
一图胜千言,能够看出随着模型复杂度的增长,E-in与E-out两条曲线渐行渐远。
若是VC Dimension太大,模型复杂度增长,E-in与E-out偏离;
若是VC Dimension过小,虽然E-in≈E-out,但H不够给力,很难找到不犯错(或不多犯错)的h。
基本上,天下没有免费的面包!
-----------------------------------------------------------------------------------------------------------
VC Bound提升了数据复杂度。
用一个简单的数学题就能说明:
你帮老板分析股票数据,老板说E-in与E-out差距最大为ε=0.1;置信度为90%,即δ=0.1;所用模型的VC Dimension = 3。你用程序算了一番,发现:
因而你向老板汇报,请给我29300条数据做为训练集、29300条做为测试集,我就能达到你的要求,若是想万无一失,200000条数据是起码的。原本被老板逼死的节奏,如今要把老板逼死了,哪来这么多数据?
本题中:
need N ≈ 10000 * VC Dimension
而实际应用中,须要的数据量在10倍VC Dimension左右。
为何VC Bound会这么宽松,以致于过多估算数据量?
由于VC Bound对数据分布、目标函数、备选函数集、学习算法都没有要求,它牺牲了部分精确性,换来了无所不包的通常性。这使得VC Bound具备哲学意义上的指导性。