吴恩达机器学习笔记及作业代码实现中文版
第十章 支持向量机
直观上对大间隔的理解
-
人们有时将支持向量机看作是大间距分类器。
-
支持向量机模型的代价函数,在左边这里我画出了关于 z 的代价函数 ,此函数用于正样本,而在右边这里我画出了关于 z 的代价函数 ,横轴表示 z。
-
最小化代价函数的必要条件
- 如果你有一个正样本, ,则只有在z >= 1时,代价函数 才等于0。换句话说,如果你有一个正样本,我们会希望 ,反之,如果 ,函数 ,它只有在z <= -1的区间里函数值为 0。
- 事实上,如果你有一个正样本 ,则其实我们仅仅要求 大于等于 0,就能将该样本恰当分出,这是因为如果 的话,我们的模型代价函数值为0,类似地,如果你有一个负样本,则仅需要 就会将负例正确分离。
- 但是,支持向量机的要求更高,不仅仅要能正确分开输入的样本,即不仅仅要求 ,我们需要的是比0值大很多,比如大于等于1,或者比0小很多,比如我希望它小于等于-1,这就相当于在支持向量机中嵌入了一个额外的安全因子,或者说安全的间距因子。
-
如果 非常大,则最小化代价函数的时候,我们将会很希望找到一个使第一项为 0 的最优解。因此,让我们尝试在代价项的第一项为 0 的情形下理解该优化问题。
- 首先支持向量机的代价函数表示如下: 。
- 我们已经看到输入一个训练样本标签为 ,你想令第一项为 0,你需要做的是找到一个 ,使得 ,类似地,对于一个训练样本,标签为 ,为了使 函数的值为0,我们需要 。
- 因为我们将选择参数使第一项为0,因此这个函数的第一项为0,因此是 乘以 0 加上二分之一乘以第二项。这将遵从以下的约束: ,如果 是等于 1 的, ,如果样本 是一个负样本。
-
具体而言,如果你考察下面这样一个数据集,其中有正样本,也有负样本,可以看到这个数据集是线性可分的。
-
支持向量机将会选择这个黑色的决策边界,黑线看起来是更稳健的决策界。在分离正样本和负样本上它显得的更好。数学上来讲,这条黑线有更大的距离,这个距离叫做间距(margin)。
-
当画出两条额外的蓝线,我们看到黑色的决策界和训练样本之间有更大的最短距离。然而粉线和蓝线离训练样本就非常近,在分离样本的时候就会比黑线表现差。因此,这个距离叫做支持向量机的间距,而这是支持向量机具有鲁棒性的原因,因为它努力用一个最大间距来分离样本,因此支持向量机有时被称为大间距分类器。
-
我们将这个大间距分类器中的正则化因子常数 设置的非常大,因此对这样的一个数据集,也许我们将选择黑线这样的决策界,从而最大间距地分离开正样本和负样本。
-
在让代价函数最小化的过程中,我们希望找出在 和 两种情况下都使得代价函数中左边的这一项尽量为零的参数。如果我们找到了这样的参数,则我们的最小化问题便转变成:
-
事实上,支持向量机现在要比这个大间距分类器所体现得更成熟,尤其是当你使用大间距分类器的时候,你的学习算法会受异常点(outlier)的影响。
- 比如我们加入一个额外的正样本:
- 在这里,如果你加了这个样本,为了将样本用最大间距分开,也许我最终会得到一条类似这样粉色的线的决策界,仅仅基于一个异常值,仅仅基于一个样本,就将我的决策界从这条黑线变到这条粉线,这实在是不明智的。
- 而如果正则化参数 设置的非常大,这事实上正是支持向量机将会做的。它将决策界,从黑线变到了粉线,但是如果 设置的小一点, 如果你将 设置的不要太大,则你最终会得到这条黑线。
- 当然数据如果不是线性可分的,如果你在这里有一些正样本或者你在这里有一些负样本,则支持向量机也会将它们恰当分开。因此,大间距分类器的描述,仅仅是从直观上给出了正则化参数 非常大的情形。
- 的作用类似于 , 是我们之前使用过的正则化参数。这只是 非常大的情形,或者等价 非常小的情形。你最终会得到类似粉线这样的决策界,但是实际上应用支持向量机的时候,当 不是非常非常大的时候,它可以忽略掉一些异常点的影响,得到更好的决策界。甚至当你的数据不是线性可分的时候,支持向量机也可以给出好的结果。
- 比如我们加入一个额外的正样本:
-
较大时,相当于 较小,可能会导致过拟合,高方差; 较小时,相当于 较大,可能会导致低拟合,高偏差。