12 支持向量机
内容:大边界的直观理解,大边界分类背后的数学,核函数,使用支持向量机
12.2 大边界的直观理解
-
大间距
用一个具体的例子来说,考察这样的有正样本和负样本的数据集,我们可以画出很多个决策边界将正负样本完全分开。像下面这样,三条线都符合:
但是我们会发现好像黑色的这条线会更加稳定,为什么呢?这条黑线有更大的距离——间距。
我们使用支持向量机,往往会得到黑线所代表的结果。大间距是支持向量机具有鲁棒性(更稳定更强壮)的原因。支持向量机有时也被称为大间距分类器。
然而为什么会产生这个结果呢?支持向量机为什么会努力将正负样本用最大间距分开呢? -
支持向量机特点
首先再理解一下支持向量机的特点:
(1) 关于z和y
左边是关于z的代价函数cost1(z),此函数用于正样本。意思就是如果我有一个正样本,我会希望𝜃𝑇𝑥>=1(即z>=1)。事实上,如果你有一个正样本𝑦 = 1,则其实我们仅仅要求𝜃𝑇𝑥>= 0,就能将该样本恰当分出,但是,支持向量机的要求更高,不仅仅要能正确分开输入的样本,即不仅仅要求𝜃𝑇𝑥>0,我们需要的是比 0 值大很多,比如大于等于 1,我也想这个比 0 小很多,比如我希望它小于等于-1,这就相当于在支持向量机中嵌入了一个额外的安全因子,或者说安全的间距因子。
右边是关于z的代价函数cost0(z),此函数用于负样本,同理。
(2) 关于C
如果 𝐶非常大,则最小化代价函数的时候,我们将会很希望找到一个使第一项为 0 的最优解,所以这将遵从这样的约束:如果训练样本y = 1,我们呢想令第一项为0,那么就找到一个𝜃,使得𝜃𝑇𝑥 >= 1;训练样本y = 0时同理。
当你求解出𝜃以后,也将得出决策边界(𝜃就是那些参数,有了参数自然也就知道边界,) -
不准确的划分
支持向量机现在要比这个大间距分类器所体现得更成熟,尤其是当你使用大间距分类器的时候,你的学习算法会受异常点(outlier) 的影响。比如我们加入一个额外的正样本(左下角的红×)。
如果正则化参数C 设置的非常大,支持向量机会选择这天粉线;将 C 设置的不太大,则你最终会得到这条黑线。
为什么呢?回想我们如何设置出C,它的作用类似于1/𝜆,𝜆是我们之前使用过的正则化参数。因此:
𝐶 较大时,相当于 𝜆 较小,可能会导致过拟合,高方差。
𝐶 较小时,相当于 𝜆 较大,可能会导致低拟合,高偏差。
12.3 大边界分类背后的数学
-
向量内积
𝑝是𝑣投影到向量𝑢上的长度(有正负之分),因此可以将𝑢𝑇𝑣 = 𝑝 ⬝ ∥𝑢∥ = 𝑢1 × 𝑣1 + 𝑢2 × 𝑣2
-
支持向量机中的目标函数
(1)目标函数:
下面就是支持向量机中的目标函数,在不同的y值下对自变量有不同的约束
当然你可以将其写作𝜃0,𝜃1,𝜃2,如果𝜃0 = 0,那就是𝜃1,𝜃2的长度。在这里我将忽略𝜃0,这样来写𝜃的范数,它仅仅和𝜃1,𝜃2有关。但是,数学上不管你是否包含,其实并没有差别, 因此在我们接下来的推导中去掉𝜃0不会有影响。
(2)𝜃𝑇𝑥:
-
大间距如何产生
假设我们有这样的例子
我们选择参数𝜃,可以看到参数向量𝜃事实上是和决策界是 90 度正交的,因此这个绿色的决策界对应着一个参数向量𝜃这个方向,顺便提一句𝜃0 = 0的简化仅仅意味着决策界必须通过原点(0,0)。
任选两个样本点x1,x2。根据上图我发现投影p很小,所以为了符合约束条件我们需要将参数的范数设置的很大。但是我们的目标函数是希望找到一个参数𝜃,它的范数是小的,所以这不符合条件。再看下面的情况:
支持向量机可以使参数𝜃的范数变小很多。
以上就是为什么支持向量机最终会找到大间距分类器的原因。因为它试图极大化这些𝑝(𝑖)的范数,它们是训练样本到决策边界的距离。最后一点,我们的推导自始至终使用了这个简化假设,就是参数𝜃0 = 0。 事实上这只是代表截距,并不会影响投影的长短以及角度。
12.4 核函数
核函数的作用:计算出新的特征- 高斯核函数
地标:给定一个训练实例𝑥 ,我们利用𝑥 的各个特征与我们预先选定的地标(landmarks)𝑙(1),𝑙(2),𝑙(3)的近似程度来选取新的特征𝑓1,𝑓2,𝑓3。 例如:
sim()函数:高斯核函数
地标的作用:如果一个训练实例𝑥与地标𝐿之间的距离近似于 0,则新特征 𝑓近似于1,如果训练实例𝑥与地标𝐿之间距离较远,则𝑓近似于0
𝜎:决定随着𝑥的改变𝑓值改变的速率 -
如何选择地标
根据训练集的数量选择地标的数量。
下面我们将核函数运用到支持向量机中,修改我们的支持向量机假设为: - 线性核函数
即支持向量机不使用核函数。当我们不采用非常复杂的函数,或者我们的训练集特征非常多而实例非常少的时候,可以用这种不带核函数的支持向量机。 - 参数𝐶和𝜎
𝐶 = 1/𝜆
𝐶 较大时,相当于𝜆较小,可能会导致过拟合,高方差;
𝐶 较小时,相当于𝜆较大,可能会导致低拟合,高偏差;
𝜎较大时,可能会导致低方差,高偏差;
𝜎较小时,可能会导致低偏差,高方差。
12.6 使用支持向量机
- 核函数的选择
高斯核函数
多项式核函数(Polynomial Kernel)
字符串核函数(String kernel)
卡方核函数( chi-square kernel)
直方图交集核函数(histogram intersection kernel)
这些核函数的目标也都是根据训练集和地标之间的距离来构建,这些核函数需要满足 Mercer's 定理,才能被支持向量机的优化软件正确处理。 - 多分类问题
如果一共有𝑘个类,则我们需要𝑘个模型,以及𝑘个参数向量𝜃。我们同样也可以训练𝑘个支持向量机来解决多类分类问题。 - 使用准则
(1)如果相较于𝑚而言,𝑛要大许多,即训练集数据量不够支持我们训练一个复杂的非线性模型,我们选用逻辑回归模型或者不带核函数的支持向量机。
(2)如果𝑛较小,而且𝑚大小中等,例如𝑛在 1-1000 之间,而𝑚在 10-10000 之间,使用高斯核函数的支持向量机。
(3)如果𝑛较小,而𝑚较大,例如𝑛在 1-1000 之间,而𝑚大于 50000,则使用支持向量机会非常慢,解决方案是创造、增加更多的特征,然后使用逻辑回归或不带核函数的支持向量机。