本章的主要内容
学习SVM前需要了解的理论
系列教程:
(一)学习svm前需要了解的理论
(二)硬SVM
(三)软SVM
(四)对偶学习
Svm理论
1.1 模型选择
结构风险最小化:在“未见过的数据”(即测试数据)上的误差最小化
经验风险最小化:在训练数据上误差最小化
通常测试误差与训练误差之间存在这样的关系:test error rate<=train error rate + f(N,h,p)[泛化界]
N:训练集大小
H:模型复杂度
P:概率(引入的控制变量)the probability that this bound fails【不用管】
我们可以通过最小化test error rate来选择合适的模型。
但是,模型复杂度是一个很宽泛的概念,通过参数大小来评价模型复杂度通常不是一个好的选择,那么应该通过什么来衡量呢?
这就引入了VC维的概念
1.2 VC Dimension
什么是VC维呢?
想象这样一个场景,我有N个样本,我对它们随机打标签(+1,-1),一开始N很小,模型不论在任意的标签分配策略下都能将样本分开,随着我慢慢增大N,直到模型无法在任意标签分配策略下都能将样本分开时,这时的数据量N-1就定义为VC维。
举个栗子:如下图a所示,二维空间中当存在三个样本点时,对其随机打标签(+1,-1)一共有8种分配方法(黑色为-1,白色为+1),假定此时的模型是一个线性分类器,在这8种分配方法都能用一条直线将正负样本划分开,再如图b所示,二维空间中存在四个样本点时,在图示这种标签分配策略下,不管如何都无法用一条直线将正负样本划分开,说明二维空间中的一条直线的VC维为3。
事实上,如果你用线性分类器再多举几个例子,你会发现在K维空间的一个线性分类器的VC维为K+1。这样说的话感觉VC维好像与参数量(K维空间参数量为K)有关,事实上,VC维与参数量之间没有直接关系,我们再考虑这样一个例子:sin函数。
看上图可以知道,当我们调整sin函数的a,b参数时,总能将样本点分开,也就是说sin函数的VC维趋近于
+
∞
+\infty
+∞,但是它只有两个参数!
看上去我们好像可以直接计算得到VC维?
实际上,VC维只是一个理论概念,对于大多数分类器,其VC维是很难被实际计算的,我们通常用它来定性地描述模型的复杂度,一个模型的VC维越大,模型就越复杂,一个模型越灵活,可能就有着较高的VC维。
说完了VC维这个有趣的概念,让我们重新回到测试误差与训练误差之间存在的关系:
test error rate<=train error rate + f(N,h,p)[泛化界]
数学家们在VC维这个想法出现后,经过推导得出了这个式子:
式子中将泛化界写成了右侧的一长串公式,其中:
N表示训练集大小
h表示模型的VC维
p表示概率(引入的控制变量)the probability that this bound fails【不用管】
这个式子不做推导,让我们直观地看看能从这个式子中发现什么?
- N越大,泛化界越小
- H越小,泛化界越小
所以,我们只要增大样本量同时降低模型的复杂度,就可以收获较好的泛化性。
1.3 Large margin(大间隔)
VC维只是一种理论概念,有没有什么可以被实际计算的具象化的东西具有与VC维相近的概念呢?
这里就引入了large margin(后面称为大间隔),数学上证明了VC维与大间隔相关,如果分类器具有较大的间隔,那么其VC维一般较低。
那么,大间隔是什么?我们想象这样一个场景,在二维平面上有很多样本点,它们是线性可分的,那么就存在多条直线可以将这些样本点完全分开,现在我们对所有可行的决策面不断加粗,一直加粗到它刚好碰到样本点边界为止,那么这时直线的宽度称为间隔,那条最宽的直线显然是划分样本的最佳选择,使用这条直线我们将得到最佳的泛化性能,也就是间隔大,VC维越低。数学上已经证明了这种最大的间隔对应的分类器是唯一的。