1 VC维的定义
VC维其实就是第一个break point的之前的样本容量。标准定义是:对一个假设空间,如果存在N个样本能够被假设空间中的h按所有可能的2的N次方种形式分开,则称该假设空间能够把N个样本打散;假设空间的VC维就是它能打散的最大样本数目N。若对任意N,总存在一组样本使得假设空间能将它们打散,则函数集的VC维是无穷大:
几种假设空间的VC维如下:
2 推导d维感知机的VC维
这里将证明,d维感知机的vc维是d+1。
第一步,证明 dvc >= d + 1。
要证明 dvc >= d+1,我们只需要找到一组大小是d+1数据,使它能够被d维感知机打散。
这里我们就给了这样一组数据:
想一下,什么叫打散?就是:
由于X是可逆的,因此对于任意的y,都能求出一个w。
因此就证明了 dvc >= d+1.
第二步,证明 dvc <= d + 1
要证明 dvc <= d+1,我们需要证明,d维感知机不能打散任意一组大小为d+2的数据。
我们给任意一组大小为d+2的数据:
由于每个行向量维度是d+1,因此由线性代数的结论,他们是线性相关的,即有:
现在我们取一种Dicotomy,使得圈圈叉叉与前面的系数a同号:
可以发现由于这个线性依赖,使得第d+2个数据一定是大于0的,所以我们就没办法shatter了。
因此就证明了dvc = d + 1。
3 VC维的物理意义
VC维表示的是做二分类时假设空间的自由度,是把数据集打散的能力。
我们可以用如下的方法来估计VC维:
即这个假设空间里面可调整的参数的个数。(只是一种估计的方法,有时候可能是不对的)
4 折衷
我们在选择假设空间时,如果选的假设空间VC维太小,好处是能保证Ein和Eout是PAC近似的,坏处是由于假设空间自由度太低,产生的Dichotomy太少,算法可能找不到使得Ein比较小的假设函数h;如果我们的VC维选的很大,好处是假设空间自由度高,能保证算法能找到一个Ein较小的假设函数h,坏处是我们坏事情发生的概率增大了(过拟合了,Ein很小但Eout很大)。
5 模型复杂度
对VCbound进行相应的变形(过程略),我们可以得到(其中根号式Ω称为模型复杂度):
因此我们有如下图:
即vc维增大时,由于产生了更多的Dichotomy,因此Ein通常会下降,但是坏事发生的几率变大了;
vc维减小时,坏事发生的几率减小了,但是Dichotomy比较少,算法的选择有限,因此Ein通常不会太好。
因此最好的vc维是介于中间的。
6 VC-bound是宽松的
按照vcbound, 如果我们要求泛化误差ε是0.1,并且要求坏事发生的几率为0.1,我们可以推出:
然而实际上,我们并不需要这么多数据,通常只需要:
这是因为,VC bound是一个很宽松的上界,宽松表现为以下四点:
p.p1 { margin: 0; font: 24px Georgia; color: rgba(47, 47, 47, 1); -webkit-text-stroke: #2f2f2f; background-color: rgba(255, 255, 255, 1) }
span.s1 { font-kerning: none }