VC维这块我参考了一个博客,写得很好,一下子就理解了,这里放上出处,自己只是简要即几个要点放在这里备查。zhuanlan.zhihu.com/p/59113933
1 Machine Learning的过程是利用算法A依据样本D从假设空间H中找到一个合适的函数g,使得最接近ground truth函数f,从而完成各种模型的功能。
2 这个过程有两个环节,一是找到g使得在样本数据上的误差仅可能小,二是样本误差程度和真实的误差情况仅可能接近。分别对应了training和test的过程。
3 重点关注一下第二个过程,用Hoeffding界,可以写成Pr[∣ED(g)−ETest(g)∣<ϵ]≤2e−2ϵ2∣D∣。看起来样本数量够大就可以,问题是,我们并不知道自己找到的是哪一个g,所以如果H空间中的数量很多,那遇到一个train集合表现好而test表现不好的函数很正常,所以要求,假设空间的所有函数存在超过ϵ的概率有界,即Pr[∣ED(g1)−ET(g1)∣>ϵ+∣ED(g2)−ET(g2)∣>ϵ+...]≤∑Pr[∣ED(gi)−ET(gi)∣>ϵ],所以前面的Hoeffding界变成了
Pr[∣ED(g)−ETest(g)∣<ϵ]≤2∣H∣e−2ϵ2∣D∣
所以,假设空间太大,其实是不好的。但是我们发现并的界放缩太大了,假设空间很多情况可以收缩,因此并没有那么大。这样有没有办法对∣H∣有一个更紧的估计?
4 对分:H中所有函数对样本可以实现的不同结果的数量。(例如在平面点二分类问题,如果H是全体直线,那3个点划分最多实现14种结果,亦或不可分)
5 增长函数mH(N):样本数量不同结果不同,同样数量的样本可能造成结果不一样,比如共线之类的。所以样本相同我们取最大值。然后对分数随样本数增长的函数为增长函数
6 打散:显然对于二分类问题,可能结果的上界是2N,如果H的对分可以达到这个上界,则称H把D打散了。
7 breakpoint:增长函数中,N增大样本打散难度变大,第一个使H不能打散的N为breakpoint(设为k)。VC维的定义为能被打散的最大的样本数,因此VC(H)=k−1
8 VC bound:有了breakpoint,带来的好处是增长函数可以被多项式bound住,上界为Nk−1。这样,我们有了对∣H∣更为有效的估计,它是从增长函数导出的,为2mH(2∣D∣),公式变为
Pr[∣ED(g)−ETest(g)∣<ϵ]≤4mH(2∣D∣)e−ϵ2∣D∣/8