zoukankan      html  css  js  c++  java
  • 《机器学习基石》---VC维

    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是一个很宽松的上界,宽松表现为以下四点:

     

  • 相关阅读:
    Pytorch 入门之Siamese网络
    Pytorch 之 backward
    非极大值抑制(NMS)
    Apriori 算法python实现
    canny 算子python实现
    转载
    ubuntu 安装lightgbm
    OneHotEncoder独热编码和 LabelEncoder标签编码
    Adroid—— DVM
    PHP——做服务
  • 原文地址:https://www.cnblogs.com/coldyan/p/6246477.html
Copyright © 2011-2022 走看看