前言
下面将会介绍支持向量机(SVM)学习算法。SVM被很多学者认为是现有的最好的监督学习算法。为了介绍监督学习算法我们,我们需要首先讨论关于间隔和如何用最大的“间隔”划分数据。接下来我们将会讨论最优化间隔分类器,因此我们不得不让我们了解拉格朗日对偶问题。我们也会见到核,他会使我们一种在非常高的维度(比如无限维)特征的空间有效的利用SVM,最后,我们将会以一个SMO算法结束,这种算法有效的实现了SVM。
1 间隔
考虑逻辑回归,概率p(y=1|x;Θ)的模型是hΘ(x)=g(ΘTx)。如果hΘ(x)≥0.5我们 就预测结果为“1”。考虑一个正例(y=1)。更大的ΘTx我们同样还是预测结果为1,但是因此我们的结果将会有更大的可信度。所以我们可以这样认为如果ΘTx>>0那会y=1的可信度将会非常高。对于反例(y=0)则相反。所以我们要尽量找出这样一条直线:能够尽可能的找到这样一条直线使无论任何y(i)=1的训练样例满足ΘTx>>0。并且,y(i)=0的训练样例满足ΘTx<<0,这样我们就找到一条关于所有训练样例最可靠的分类直线。这就是SVM要解决的目标问题。
下面来看这幅图:
这幅图中圆点代表正例,×代表反例。中间的是满足ΘTx=0的分隔超平面。A,B,C三个点是待测点。注意到,A远离分隔线,C点靠的比较近,C点和A点测预测值都是y=1,但是A点的可信度要远远高于C点。因此,我们想如果能找到一条使所有训练样例可信并且正确的点将会是这个问题的最优解。
2 函数间隔和几何间隔
假设y∈{−1,+1},分类器的模型为hw,b(x)=g(wTx+b)我们定义间隔函数为γ^=y(i)(wTx+b)记如果y(i)=1,为了使间隔函数的值更大,我们需要wTx+b是一个很大的正数,对于y(i)=−1为了使间隔函数的值更大,我们需要wTx+b是一个很大的负数。如果y(i)(wTx+b)>0则我们的预测结果是正确的。因此,一个大的间隔函数代表一个可行高且正确的预测。给出了训练集S,同样我们定义了以(w,b)为参数的间隔函数对于S,其目标是找出训练样例中最小的间隔函数,表示为:
γ^=mini=1,2..mγ^(i)
接下来,我们将会讨论几何间隔。考虑如下的图:
从图中可以看出对应的(w,b)。w是分隔超平面的法向量,考虑A点,它代表某一个标号y(i)=1的训练样例的输入x(i)。他到分解线的距离γ(i)就是线段AB。如何才能表示出γ(i),w/||w||是和w同方向的单位向量。因为A代表x(i)因此我们可以通过x(i)−γ(i)∗w/||w||,由于B点位于分界线上,并且所有位于分界线上的点x都满足等式wTx+b=0.因此,可以得到:
wT(x(i)−γ(i)w||w||)+b=0
可以解出γ(i)等于:
γ(i)=wTx(i)+b||w||=(w||w||)Tx(i)+b||w||。
更一般的,我们定义参数为(w,b)的几何函数对应于训练样例(x(i),y(i))表示为:
γ(i)=y(i)((w||w||)Tx(i)+b||w||)。同样,我们最终要的到的集合间隔为所有训练样例中最小的几何间隔:
γ=minγ(i)i=1,2,...,m
3 最优化间隔分类器
给定一个训练集,根据前面的讨论我们自然迫切的想要找到能够最大化集合间隔的决定边界。因此这条分界线将会很好的预测结果并且很好的拟合训练数据。
到现在我们价格训练数据集是线性可分的;就是说可以通过一些超平面把正例和负例分隔开。我们如何找到一个能使集合边界最大化的分界面呢?我们可以得出如下的问题:
maxγ,w,bγ
s.t.y(i)(wTx(i)+b)≥γ,i=1,...,m
||w||=1
如果我们能解决上述的最优化问题,我们的任务就完成了。但是限制条件||w||=1非常糟糕,所以我们可以转化问题为:
maxγ,w,bγ^
s.t.y(i)(wTx(i)+b)≥γ^,i=1,...,m
这里我们试图最大化γ^/||w||,约束条件至少所有的函数间隔都要至少为γ^。因此几何间隔和函数间隔的关系为:γ=γ^/||w||,这将会得到我们想要的结果。但是我们又得到了一个讨厌的对象γ^||w||,并且我们还没有现成的软件来处理这个问题。
因此我们继续往下走。我们可以通过更改w和b的倍数来改变函数间隔使得对应训练集的:γ^=1。因此最大化γ^/||w||=1/||w||同时也等价于最小化||w||2。我们现在得到了如下的最优化问题:
minγ,w,b12γ
s.t.y(i)(wTx(i)+b)≥1,i=1,...,m
现在我们把问题转化成了一个可以有效解决的形式。一个凸二次对象带有线性约束的最优化问题。这个最优化问题可以用QP代码来解决。
但是,接下来我们将要利用拉格朗日对偶来处理这个问题,使得这种算法在高维空间变得更加有效。