VC维

来源:互联网 发布:beta回归算法 编辑:程序博客网 时间:2024/04/28 16:47
    今天开始看《支持向量机导论》,前面三章讲的还是通俗易懂的。但是第四章看了一节之后,就让人坠入云里雾里了。其中VC维数讲了长长的一大段,看了几遍都是不知所云。于是我只能BAIDU下了。果然,网上很多人对这个问题相当关心的,也有些很经典的解释。我摘录如下:

    VC维被认为是数学和计算机科学中非常重要的定量化概念,它可用来刻画分类系统的性能.

    模式识别中VC维的直观定义是:对一个指示函数集,如果存在h个样本能够被函数集中的函数按所有可能的2h种形式分开,则称函数集能够把h个样本打散,函数集的VC维就是它能打散的最大样本数目h,若对任意数目的样本都有函数能将它们打散.则函数集的VC维是无穷大。有界实函数的VC维可以通过用一定的阈值将它转化成指示函数来定义。VC维反映了函数集的学习能力,VC维越大则学习机器越复杂,所以VC维又是学习机器复杂程度的一种衡量。

    换一个角度来理解,如果用函数类{f(z,a)}代表一个学习机,a 确定后就确定了一个判别函数了EF,而VC维为该学习机能学习的可以由其分类函数正确给出的所有可能二值标识的最大训练样本数。


    VC维的直观定义是:对一个指标函数集,如果存在h 个样本能够被函数集中的函数按所有可能的2h种形式分开,则称函数集能够把h个样本打散;函数集的VC维就是它能打散的最大样本数目h。若对任意数目的样本都有函数能将它们打散,则函数集的VC维是无穷大,有界实函数的VC维可以通过用一定的阀值将它转化成指示函数来定义。

    故有这样的结论,平面内只能找到3个点能被直线打散而不找到第4个。

    对于这个结论我是如下理解的:

    (1)平面内只能找到3个点能被直线打散:直线只能把一堆点分成两堆,对于3个点,要分成两堆加上顺序就有23种。其中A、B、C表示3个点,+1,-1表示堆的类别, {A→-1,BC→+1}表示A分在标号为-1的那堆,B和C分在标号为+1的那堆。这就是一种分发。以此类推。则有如下8种分法:

{A→-1,BC→+1},{A→+1,BC→-1}

{B→-1,AC→+1},{B→+1,BC→-1}

{C→-1,AB→+1},{C→+1,BC→-1}

{ABC→-1},{ABC→+1}

(2)找不到4个点。假设有,则应该有24=16分法,但是把四个点分成两堆有:一堆一个点另一对三个点(1,3);两两均分(2,2);一堆四个另一堆没有(0,4)三种情况。对于第一种情况,4个点可分别做一次一个一堆的,加上顺序就有8种:

{A→-1,BCD→+1},{A→+1,BCD→-1}

{B→-1,ACD→+1},{B→+1,ACD→-1}

{C→-1,ABD→+1},{C→+1,ABD→-1}

{D→-1,ABC→+1},{D→+1,ABC→-1};

对于第二种情况有4种:

{AB→-1,CD→+1},{AB→+1,CD→-1}

{AC→-1,BD→+1},{AC→+1,BD→-1}

没有一条直线能使AD在一堆,BC在一堆,因为A、D处在对角线位置,B、C处在对角线位置。(这是我直观在图上找出来的)

对于第三种情况有2种;

{ABCD→-1}

{ABCD→+1}

所以总共加起来只有8+4+2=14种分法,不满足24=16分法,所以平面找不到4个点能被直线打散。

       -------------总而言之,不能太迷信书!

转自:http://xyxy100.blog.163.com/blog/static/115572596201041754333345/