博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
7 - VC维度(VC Dimension)-- 衡量模型与样本的复杂度
阅读量:6195 次
发布时间:2019-06-21

本文共 2390 字,大约阅读时间需要 7 分钟。

hot3.png

  • VC Dimension的定义

    我们知道dichotomies数量的上限是成长函数,成长函数的上限是边界函数:

    142757_HmJt_1047422.png

    边界函数的上限就是N^(k-1)了:

    142913_hW6y_1047422.png

    于是我们得到了上限(成长函数)的上限(边界函数)的上限。。。

    143038_KtaI_1047422.png

    所以VC Bound可以改写成:

    143219_ZEbp_1047422.png

    复习结束,下面我们定义VC Dimension:

    143359_dRM1_1047422.png

    用中文讲,对于某个备选函数集H,VC Dimension就是它所能shatter的最大数据个数N。

    VC Dimension = minimum break point - 1。

    所以在VC Bound中,(2N)^(k-1)可以替换为(2N)^(VC Dimension)。

    VC Dimension与学习算法A,输入分布P,目标函数f均无关。

  • PLA的VC Dimension

    1D的PLA最多shatter2个点,所以VC Dimension = 2;

    2D的PLA最多shatter3个点,所以VC Dimension = 3

    所以dD的PLA,VC Dimension会不会等于d+1?

    145537_v9Us_1047422.png

    要证明这一点,只需证明:

    145612_LvQC_1047422.png

    ------------------------------------------------------------------------------------------------------------

    (1) 证明VC Dimension≥d+1,只需证明H可以shatter某些d+1个输入。

    我们刻意构造一组d+1个输入:

    150930_YPVP_1047422.png

    第一列灰色的1是对每个输入提高1维的操作,这个是一个d+1维的方阵,对角线全部是1,所以该矩阵可逆。

    对于任意一种输出,我们总能找到一个备选函数使得:

    151412_DOeX_1047422.png

    即这一组输入的所有dichotomies都被穷尽了,所以VC Dimension≥d+1得证。

    ------------------------------------------------------------------------------------------------------------

    (2) 证明VC Dimension≤d+1,只需证明H不能shatter任何d+2个输入

    在2D情形下构造一组4个输入:

    153037_n8UT_1047422.png

    所以 x4 = x3 + x2 - x1。

    如果前3个输出是:

    153723_PHDf_1047422.png 

    那么第4个输出是多少?

     153127_yOun_1047422.png

    由于:

    154046_vU33_1047422.png

    所以:

    154224_rVTN_1047422.png------<1>

    如果有一个备选函数W,使得其在x1,x2,x3上的输出的符号与方程<1>中的符号相同:

    154510_oYnZ_1047422.png

    那么一定有:

    154625_JBZn_1047422.png

    所以H不能shatter 2+2=4个输入。

    推广到d维:

    154831_KF3G_1047422.png

    任何d+2个数据作为输入,即使升了一维之后,输入矩阵的行数(d+2)依然大于列数(d+1),所以矩阵各行是线性相关的,即x(d+2)能用x(d+1),......,x2,x1的线性组合来表示。

    我们假设H可以shatter d+2个输入,那么我们一定能找到一个W,使得x(d+1),......,x2,x1对应的输出的符号与他们在线性表达式中的系数符号相同:

    155348_XSO1_1047422.png

    所以:

    155503_SrDT_1047422.png

    之前的假设是错的,H不能shatter d+2个输入

    所以VC Dimension≤d+1得证。

    综合(1)(2),对于d-D PLA,其VC Dimension=d+1。

  • VC Dimension的物理意义

    在教程中这么说:

    161523_ij5j_1047422.png

    即VC Dimension是备选函数集H的“能力”。“能力”越大,H对数据的划分就越细致。

    161759_zPfY_1047422.png

    例如,从Positive Ray到Positive Interval,自由变量从1个变成了2个,VC Dimension从1变成了2,H变得更强大。

    在VC Dimension与备选函数集大小M基本正相关:

    162259_NeMR_1047422.png

  • 深入理解VC Dimension

    VC Bound:

    170807_k6rU_1047422.png

    170854_Hzwa_1047422.png

    所以GOOD事件:| E-in(h) - E-out(h) ≤ ε |可以改写成:

    171123_6sG7_1047422.png

    即:

    171214_zFFV_1047422.png

    我们最终希望E-out越小越好,所以上面的不等式中可以只关心上界。

    我们把根号项看做一种惩罚,它拉大了E-in与E-out之间的距离,这个惩罚与“模型复杂度”有关,模型越复杂,惩罚越大:

    171617_kvPi_1047422.png

    171647_R2kz_1047422.png

    一图胜千言,可以看出随着模型复杂度的增加,E-in与E-out两条曲线渐行渐远。

    171833_ty0c_1047422.png

    如果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。你用程序算了一番,发现:

    173349_Kuy8_1047422.png

    于是你向老板汇报,请给我29300条数据作为训练集、29300条作为测试集,我就能达到你的要求,如果想万无一失,200000条数据是起码的。本来被老板逼死的节奏,现在要把老板逼死了,哪来这么多数据?

    本题中:

    need N ≈ 10000 * VC Dimension

    而实际应用中,需要的数据量在10倍VC Dimension左右。

    为什么VC Bound会这么宽松,以至于过多估算数据量?

    174350_rsgG_1047422.png

    因为VC Bound对数据分布、目标函数、备选函数集、学习算法都没有要求,它牺牲了部分精确性,换来了无所不包的一般性。这使得VC Bound具有哲学意义上的指导性。

转载于:https://my.oschina.net/findbill/blog/214849

你可能感兴趣的文章
Dynamic CRM 2013学习笔记(二十七)无代码 复制/克隆方法
查看>>
PHP Memcached 面试题
查看>>
Android Service和广播
查看>>
Windows 10下通过蓝牙连接iPhone个人热点进行共享上网
查看>>
scrollview中停止滚动的监听
查看>>
交叉熵代价函数
查看>>
<转> 解决异常:IllegalStateException: Fragment <ThisFragment> is not currently in the FragmentManager...
查看>>
解决dnu restore时的“Cannot handle address family”问题
查看>>
BestCoder-Round#33
查看>>
分类书单
查看>>
C++内联函数
查看>>
css3中变形与动画(二)
查看>>
HDOJ 1495 非常可乐 【BFS】
查看>>
uva757 - Gone Fishing(馋)
查看>>
jQuery.extend和jQuery.fn.extend的区别
查看>>
Atitit.论图片类型 垃圾文件的识别与清理 流程与设计原则 与api概要设计 v2 pbj...
查看>>
Python中的编码
查看>>
IOS开发之待探究随录
查看>>
Delphi Berlin 窗体代码分离风格 回到Delphi7传统风格
查看>>
python中给for循环增加索引
查看>>