基于libsvm的中文文本分类原型 ,虽然做了原型,但是概念还不是很清晰。
“支持向量机方法是建立在统计学习理论的VC 维理论和结构风险最小原理基础上”
结构化风险
结构化风险 = 经验风险 + 置信风险
经验风险 = 分类器在给定样本上的误差
置信风险 = 分类器在未知文本上分类的结果的误差
置信风险因素:
- 样本数量,给定的样本数量越大,学习结果越有可能正确,此时置信风险越小;
- 分类函数的VC维,显然VC维越大,推广能力越差,置信风险会变大。
提高样本数量,降低VC维,降低置信风险。
以前机器学习的目标是降低经验风险,要降低经验风险,就要提高分类函数的复杂度,导致VC维很高,VC维高,置信风险就高,所以,结构风险也高。---- 这是SVM比其他机器学习具有优势的地方。下面就说说VC维是怎么回事。
VC维
机器学习导论 的解释 :假定我们有一个数据集,包含N个点。这N个点可以用 种方法标记为正例和负例(属于和不属于某个类)。因此,N个数据点可以定义 种不同的学习问题。假如(,)逗号前的是属于,逗号都的是不属于。比如1个点,可以分为( a , )( , a );2个点可以分为( ab , )( , ab ) ( a , b ) ( b , a )四种;依次类推...如果对于这些问题中的任何一个,我们都能够找到一个假设h∈ 将正例和负例分开,那么我们就称 散列(shatter )N个点。也就是说,可以用N个点定义的任何的学习问题都能够用一个从中抽取的假设无误差地学习。可以被散列的点的最大数量称为 的VC 维(Vapnik 和Cortes ),记为VC( ),它度量假设类 的学习能力(capactiy )。
具体参考:2.2 VC维
网友解释 :模式识别中VC 维的直观定义是:对一个指示函数集,如果存在N 个样本能够被函数集中的函数按所有可能的 种形式分开,则称函数集能够把N 个样本打 散,函数集的VC 维就是它能打散的最大样本数目N ,若对任意数目的样本都有函数能将它们打散. 则函数集的VC 维是无穷大。有界实函数的VC 维可以通过用一 定的阈值将它转化成指示函数来定义。VC 维反映了函数集的学习能力,VC 维越大则学习机器越复杂,所以VC 维又是学习机器复杂程度的一种衡量。换一个角度来理解,如果用函数类{f(z,a)} 代表一个学习机,a 确定后就确定了一个判别函数了EF ,而VC 维为该学习机能学习的可以由其分类函数正确给出的所有可能二值标识的最大训练样本数。
具体参考:http://xyxy100.blog.163.com/blog/static/115572596201041754333345/
为什么直线函数的VC维是3呢不是4呢。因为对角线上的AD分不到一起,BC分不到一起。
A B
C D
总之:分类函数简单,VC维低,分类函数复杂,VC维高。