VC的一些理解

来源:互联网 发布:java实现一个迭代器 编辑:程序博客网 时间:2024/06/04 18:43
vc维就是一个系数,这个系数就是为了度量一组函数集的容量(capacity)。注意这里的“函数”是广义的,线性函数、多项式函数当然都是函数;对于一个多层的神经网络,权值大小不知道(训练神经元网络就是为了确定权值),每组权值就可以认为对应一个函数。
而容量就反映了一组函数集对样本的区分能力,容量越大,对应的一组函数集区分能力就越大;注意容量的大小跟这组函数集自由参数的多少是没有必然联系的(不确信这样说是否合适),因为函数集{y=sin(w*x+b),w,b(-R}的vc为即为无穷大。

还有一个应该注意的问题是:vapnik定义vc维是指能够找到N个样本可以被一组函数集打散(不是任意N个样本都满足这个条件)的最大N。比如说二维平面上空间上对于所有的线性分类面,能够找到3个点可以被线性分类面打散,但不是任意三个点都能够满足这个条件(是不是?很简单的,相信你能够找到这样的三个点)。再说说svm,说白了就是个线性分类面,不过是定义在高维特征空间上的,跟感知机算法相比就多了一个最大间隔,没别的,呵呵。(当然,暂时不考虑核函数映射问题)。那为啥最大间隔最好呢?vapnik用vc维解释这回事:所有把两类样本以d间隔分开的线性函数组成的集合,假如记为F(随便了,statistical learning theory中好像不是这样记的,忘了),那么d越大,函数集F的VC维就越小(vapnik的书有证明),d取极限情况不就是最大间隔超平面吗?那为何vc维越小越好呢,就是因为这时推广能力(或者说泛化能力,generalization,随呢咋叫)好。统计学习理论中被叫烂了的那个结构风险最小化就是说这个事的。简单的说就是推广能力有两个因素决定:训练错误和置信范围(置信范围这个叫法很土),也就是STL中一个很重要不等式右边两项,而结构风险最小化就是最小化前面那两个的和;对于svm,既然都被线性分开了,训练错误当然就是零了,那分类器的泛化性能就只由置信范围来决定了,而vc维越小,置信范围就越小了。

因此,svm就是在最小化经验风险的基础上从vc维最小的函数集里面选择函数,不是吗?(别忘了,vapnik也给什么是机器学习下了个定义,就是从一组函数集里面选择函数,就这么简单)我们当然也可以用别的方法寻找最好的函数,只要在寻找的时候记住结构风险最小,那我们就可能找到别的机器学习算法了。

0 0
原创粉丝点击