支持向量机

支持向量机是一种二类分类模型,它的基本模型是定义在特征空间上的间隔最大的线性分类器。支持向量机可以形式化为一个求解凸二次规划的问题,也等价于正则化的合页损失函数的最小化问题,支持向量机的学习算法是求解凸二次规划的最优化算法

支持向量机包括构建由简至繁的模型:

1.线性可分支持向量机:当训练数据是线性可分时,通过硬间隔最大化学习一个线性分类器;

2.线性支持向量机:当训练数据近似线性可分时,通过软间隔最大化学习;

3.非线性支持向量机:当训练数据线性不可分时,通过使用核技巧以及软间隔最大化学习一个非线性分类器。

1.线性可分支持向量机

一般地,当训练数据线性可分时,存在无穷多个分离超平面可将两类数据正确分开,感知机利用误分类最小的策略求得分类超平面,不过这样的解有无穷多个。而线性可分支持向量机利用间隔最大化求最优分离超平面,这时解是唯一的。

1.1函数间隔与几何间隔

一般来说,一个点距离分离超平面的远近可以表示分类预测的置信程度,在超平面w\cdot x+b=0确定的情况下,\left | w\cdot x+b \right |能够相对地表示点x距离超平面的远近,而w\cdot x+b的符号与类标记y的符号是否一致能够表示分类是否正确,所以可以用y(w\cdot x+b)来表示分类的正确性及确信度,这就是函数间隔。

定义1:函数间隔:对于给定的训练数据集T和超平面(w,b),定义超平面(w,b)关于样本点(x_i,y_i)的函数间隔为:

训练数据集T的函数间隔为超平面(w,b)关于T中所有样本点(x_i,y_i)的函数间隔之最小值,即:

函数间隔可以表示分类预测的正确性及确信度,但是只根据函数间隔来选择分离超平面是不够的。因为只要成比例地改变w和b,超平面并没有改变,而函数间隔变为原来的几倍。

所以这启发我们,可以对分类超平面的法向量w加些约束,如规范化:\left \| w \right \|=1,使得间隔是确定的,这时函数间隔变为几何间隔,这是点到超平面的真正距离。

定义2:几何间隔:对于给定的训练数据集T和超平面(w,b),定义超平面(w,b)关于样本点(x_i,y_i)的几何间隔为:

注:推导过程:

如图所示,假设对于点x,另其垂直投影到超平面上的对应点为x_0w是垂直于超平面的一个向量,\gamma为样本x到超平面的距离:

x=x_0+\gamma \frac{w}{||w||}

其中\frac{w}{||w||}为单位向量。因为点x_0在超平面上,所以满足w\cdot x_0+b=0

x=x_0+\gamma \frac{w}{||w||}两边同时乘以w^T,(w^Tw=\left \| w \right \|^2

即可以得出:\gamma =\frac{w^Tx+b}{\left \| w\right \|}=\frac{f(x)}{||w||},将\gamma乘上对应的类别y即可得到距离的绝对值,即几何间隔。

训练数据集T的几何间隔为超平面(w,b)关于T中所有样本点(x_i,y_i)的几何间隔之最小值,即:

可以看出,函数间隔与几何间隔之间的关系:

而函数间隔y*f(x)就是\left | f(x) \right |,只是认为定义的一个间隔度量,而几何间隔才是直观上点到超平面的距离。如果\left \| w \right \|=1,则两者相等。如果超平面参数w和b成比例地改变(超平面没有改变),函数间隔也成比例改变,而几何间隔不变。

1.2 间隔最大化

支持向量机学习的基本想法是求解能够正确划分训练数据集并且几何间隔最大的分离超平面。间隔最大化的直观解释是:当超平面离数据点的“间隔”越大,分类的确信度也越大,所以所选择的超平面要能够最大化“间隔”值。不仅能够将正负实例点分开,而且对于离超平面最近的点也以尽可能大的确信度将它们分开,这样的超平面会有很好的泛化能力。

为求得一个几何间隔最大的分离超平面,可以表示为下面的约束最优化问题:

我们希望最大化几何间隔,而且约束条件表示超平面关于每个训练样本点的几何间隔至少是\tilde{\gamma }。用函数间隔代替几何间隔,这个最优化问题就改写成:

如果另函数间隔\hat{\gamma }等于1,对目标函数的优化没有影响??


原因:

做一个变量替换,用w'=\frac{w}{\hat{\gamma }},b'=\frac{b}{\hat{\gamma }}代替上面的w,b,这样新的变量依旧是w和b的函数,所以最大化依然可以进行,接着把这两个新的变量带入到原来的约束最大化问题中,就变成了在y_i(w'\cdot x_i+b')\geqslant 1的条件下,使得\frac{1}{||w'||}最大化的w,b. 这样一来,通过一个变量替换,关于w,b的问题等价地变换成了w',b'的问题。


方便推导和优化,带入上式,则目标函数转化为了:

线性可分训练数据集的最大间隔分离超平面是存在且唯一的。如下图所示,中间的实线便是寻找到的最优超平面,其到两条虚线边界的距离相等,这个距离便是几何间隔\tilde{\gamma },两条虚线之间的距离等于2\tilde{\gamma },而间隔边界(虚线)上的点就是支持向量,它们恰好满足y_i\left ( w \cdot x_i+b \right )= 1(因为我们已经把函数间隔设为1),而对于所有不是支持向量的点则有y_i\left ( w \cdot x_i+b \right )> 1。由于支持向量在确定分离超平面中起着决定性作用,所以将这种分类模型称为支持向量机。

接着考虑之前得到的目标函数等价于:

为什么要这么转换呢?目的是为了得到凸二次规划问题,从而可以用现成的QP优化包进行求解。现在得到的目标函数是二次的,约束条件是线性的,所以它是一个凸二次规划问题。我们可以在该约束条件下,使目标函数最优。

附:凸优化问题是指约束最优化问题:\underset{w}{min}\ f(w)\ s.t.\ \ g_i(w)\leq 0,i=1,2,...,k\ \ h_i(w)=0,\ i=1,2,...,l

其中目标函数与约束函数g(x)都是\mathbb{R}^n上连续可微的凸函数,约束函数h(x)是\mathbb{R}^n上的仿射函数。

当目标函数f(w)是二次函数且约束函数g(w)是仿射函数时,上述凸最优化问题称为凸二次规划问题。

1.3 学习的对偶算法

求解这个线性可分支持向量机的最优化问题,由于这个问题的特殊结构,可以通过利用拉格朗日对偶性,通过求解与原问题等价的对偶问题得到原始问题的最优解。这就是线性可分支持向量机的对偶算法。这样做的优点是:一是对偶问题往往更容易求解;二是自然引入核函数??,进而推广到非线性分类问题。

首先构建拉格朗日函数,通过给每一个约束条件加上一个拉格朗日乘子,将约束条件融合到目标函数中去:

L(w,b,\alpha)=\frac{1}{2}||w||^{2}-\sum_{i=1}^{n}\alpha_{i}\left ( y_i(w^Tx_i+b)-1 \right )

接下来设:\theta (w)=\underset{\alpha_i\geq 0}{max}L(w,b,\alpha)

当约束条件不满足时,即y_i(w^Tx_i+b)<1时,那么\theta (w)=+\infty(只要令\alpha_i为无穷即可)。而当所有约束条件都满足时,L(w,b,\alpha)的最大值即为\frac{1}{2}||w||^{2},所以\theta (w)的最优值即为最初要最小化的值。

所以在满足约束条件的情况下,最小化\theta (w)等价于原始的最优化问题min\frac{1}{2}||w||^{2},所以目标函数就转变为了:

\underset{w,b}{min}\theta(w)=\underset{w,b}{min}\ \underset{\alpha_i\geq 0}{max}L(w,b,\alpha)=p^*

p^*表示这个问题的最优值,如果直接求解,一上来就面对w和b两个参数,而\alpha_i又是不等式约束,这个求解过程不好做。所以转化为原始问题的对偶问题:

\underset{\alpha_i\geq 0}{max}\ \underset{w,b}{min}\ L(w,b,\alpha)=d^*

该对偶问题的最优值用的d^*来表示,并且有d^*\leqslant p^*,在满足某些条件的情况下,两者相等。

1.3.1 KKT条件

有关拉格朗日函数的对偶问题和KKT条件的具体证明请看:拉格朗日乘子与KKT条件

一个最优化数学模型能够表示为下列的标准形式:

f(x)是需要最小化的函数,h(x)是等式约束,g(x)是不等式约束。

凸优化的概念:\mathcal{X}\subset \mathbb{R}^n为一凸集,f:\mathcal{X}\rightarrow \mathbb{R}为一凸函数,凸优化就是要找出一点x^*\in \mathcal{X},使得每一个x\in \mathcal{X}满足f(x^*)\leq f(x)

KKT条件是一个非线性规划问题能够有最优解的必要和充分条件,其具体是指最优化数学模型的标准形式中的最优解x^*必须满足下面的条件:

经过论证,原始问题满足KKT条件,所以对偶问题与原问题等价,而且该对偶问题更容易求解,所以接下来我们求解这个对偶学习问题\underset{\alpha_i\geq 0}{max}\ \underset{w,b}{min}\ L(w,b,\alpha)

(1)固定\alpha\underset{w,b}{min}\ L(w,b,\alpha)

将其带入L,得到:

 (2) 求\underset{w,b}{min}\ L(w,b,\alpha)对于\alpha的极大,即是关于对偶问题的最优化问题(通过求解w和b,上述式子中只有\alpha):

综上所述,假设对偶最优化问题对\alpha的解为\alpha^*=(\alpha_1^*,\alpha_2^*,...,\alpha_N^*)^T,可以由\alpha^*求得原始最优化问题的解w^*,b^*(因为它们所分别对应的最优化问题的解是相同的)。

\left\{\begin{matrix} w^*=\sum^N_{i=1}\alpha_i^*y_ix_i \\ b^*=y_j-\sum^{N}_{i=1}\alpha_i^*y_i(x_i \cdot x_j) \ (\alpha_j^*> 0) \end{matrix}\right.

根据最优解,得到分类超平面:\sum^{N}_{i=1}\alpha_i^*y_i(x\cdot x_i)+b^*=0

以及分类决策函数:f(x)=sign\left ( \sum^{N}_{i=1}\alpha_i^*y_i(x\cdot x_i)+b^* \right )

可以看出分类决策函数只依赖于输入x与训练样本输入的内积。而且w^*,b^*只依赖于训练数据中对应于\alpha_i^*>0的样本点,其他点没有影响。而这些\alpha_i^*>0的样本点为支持向量。

证明:因为符合KKT条件,其中一条为:\alpha_i^*(y_i(w^*\cdot x_i+b^*)-1)=0,\ i=1,2,...,N

对于\alpha_i^*>0的实例x_i,有y_i(w^*\cdot x_i+b^*)-1)=0,即w^*\cdot x_i+b^*=\pm 1,这些点即为支持向量。

直观上来理解的话,那些非支持向量的\alpha等于0,因为这些“后方的点”,对于超平面是没有影响的,所以这些无关的点不会参与分类问题的计算。

考虑目标函数\theta (w)=\underset{\alpha_i\geq 0}{max}L(w,b,\alpha)=\frac{1}{2}||w||^2-\sum_{i=1}^{n}\alpha_i{\color{Red} \left( y_i(w^Tx_i+b)-1 \right )}

对于支持向量,第二项为0,而对于非支持向量,functional margin大于1,红色部分大于0,而\alpha _i非负,所以为了满足最大化,\alpha _i必须等于0,这就是这些非支持向量点的局限性。

所以对于新的数据点的内积计算只需要针对少量的“支持向量”,而不是所有的训练数据。

对于线性可分问题,上述硬间隔最大化算法是完美的,但是这是理想的情况。在现实问题中,训练数据往往是线性不可分的,样本中会存在噪声或者异常点。

2.线性支持向量机

对于线性不可分数据,上述方法中的不等式约束并不能够都成立。例如有些数据本身并非不是线性结构的,而是因为数据中有噪声。对于这种偏离正常位置很远的数据点,我们称之为outlier。而这些outlier的存在可能会造成很大的影响,因为超平面本身就是由少数几个支持向量组成的,如果这些支持向量中存在outlier的话,那么影响就会很大,例如下图:

由于outlier的出现,margin变小了,如果这个outlier再往上移动一些距离的话,将无法构造出能够将数据正确分离的超平面。而如果直接忽略掉它的话,剩下的大部分样本点组成的集合还是是线性可分的。

这些样本点不满足函数间隔大于等于1的约束条件,为了处理这种情况,可以为每个样本点引进一个松弛变量\xi_i \geq0,(能够直接找出outlier,只为这些点引入松弛变量呢?)它是数据点x_i允许偏离的functional margin的量,使函数间隔加上松弛变量大于等于1,这样,约束条件变为了:

y_i(w \cdot x_i+b) \geq 1-\xi_i

当然,如果我们运行\xi_i任意大的话,那么人已死的超平面都是符合条件的了。所以要在原来的目标函数中加上一项,使得这些\xi_i的总和也要最小,目标函数变为:

\frac{1}{2}\left \| w \right \| ^2+C\sum^N_{i=1}\xi_i

其中C> 0为惩罚参数,用于控制目标函数中的两项“寻找margin最大的超平面”和“保证数据点偏差量最小”之间的平衡。C值大时对误分类的惩罚增大,C值小时对误分类的惩罚减小。

有了上面的思路,当训练数据集不是线性可分时,硬间隔最大化变为软间隔最大化,线性支持向量机的学习问题变为如下凸二次规划问题:

\underset{w,b,\xi}{min}\ \frac{1}{2}\left \| w \right \| ^2+C\sum^N_{i=1}\xi_i \\ s.t. y_i(w \cdot x_i+b)\geq 1-\xi_i,\ i=1,2,...,N \\ \xi_i\geq 0,\ i=1,2,...,N

该原始优化问题是一个凸二次优化问题,因为关于(w,b,\xi)的解是存在的,可以证明w的解是唯一的,但是b的解可能不唯一,而是存在一个区间。

2.1学习的对偶算法

原始最优化问题的拉格朗日函数为:

同上述方法一样,对偶问题是拉格朗日函数的极大极小问题,实现求L对于w,b,\xi的极小:

带回原始简化,得到原始问题的对偶问题:

\underset{w,b,\xi}{min}L(w,b,\xi,\alpha,\mu)=-\frac{1}{2}\sum^N_{i,j}\alpha_i\alpha_jy_iy_j\left \langle x_i,x_j \right \rangle+\sum^N_{i=1}\alpha_i

再对\underset{w,b,\xi}{min}L(w,b,\xi,\alpha,\mu)\alpha的极大,即得对偶问题:

\underset{\alpha}{max}\sum^n_{i=1}\alpha_i-\frac{1}{2}\sum^n_{i,j=1}\alpha_i\alpha_jy_iy_j\left \langle x_i,x_j \right \rangle \\ s.t. \ \ \sum^N_{i=1}\alpha_iy_i=0 \\ C-\alpha_i-\mu_i=0 \\ \alpha_i\geq 0 \\ \mu_i\geq 0,\ i=1,2,...,n

消去\mu_i,只留下\alpha_i,约束条件变为:0\leq \alpha_j \leq C.进而如同硬间隔算法一样,根据KKT条件,可以通过求解对偶问题而得到原始问题的解,进而确定分离超平面和决策函数。

3.合页损失函数

对于线性支持向量机来说,学习策略为软间隔最大化,学习算法为凸二次规划。线性支持向量机学习还有另外一种解释,就是最小化一下目标函数:

\underset{w,b}{min}\left [ 1-y_i(w\cdot x_i+b) \right ]_++\lambda \left \| w \right \|^{2}

该目标函数中第一项为经验损失(经验风险),加上正则化项之后为结构风险。其中函数L\left ( y(w \cdot x+b) \right ) = \left [ 1-y(w \cdot x+b) \right ]_+称为合页损失函数(hinge loss function).

[z]_+=\left\{\begin{matrix}z,\ z>0 \\ 0,\ z\leq 0 \end{matrix}\right.

这就代表着,当样本点被正确分类且函数间隔y_i(w\cdotx_i+b)大于1时,损失是0,否则损失就是1-y_i(w\cdotx_i+b).


附:证明线性支持向量机原始最优化问题与该损失函数最优化问题是等价的。

原始最优化问题:

\underset{w,b,\xi}{min}\ \frac{1}{2}\left \| w \right \| ^2+C\sum^N_{i=1}\xi_i \\ s.t. y_i(w \cdot x_i+b)\geq 1-\xi_i,\ i=1,2,...,N \\ \xi_i\geq 0,\ i=1,2,...,N

\left [ 1-y_i(w\cdot x_i+b) \right ]_+=\xi_i

\xi_i\geq 0

1-y_i(w\cdot x_i+b) \right >> 0时,有y_i(w\cdot x_i+b) \right =1-\xi_i

1-y_i(w\cdot x_i+b) \right \leq 0时,\xi_i=0,有y_i(w\cdot x_i+b) \right \geqslant 1-\xi_i

所以w,b,\xi_i对于原始最优化问题中的约束条件都成立。所以损失函数可以写成:

\underset{w,b}{min} \sum^N_{i=1}\xi_i+\lambda ||w||^2

\lambda =\frac{1}{2C},则变为\underset{w,b}{min} \frac{1}{C}\left ( \frac{1}{2}||w||^2+C\sum^N_{i=1}\xi_i \right ).与原始最优化问题等价,得证。


合页损失函数如下图所示:

横轴是函数间隔y_i(w\cdotx_i+b),纵轴是损失,由于函数形状像一个合页,故名为合页损失函数。

图中还画出了0-1损失函数,可以认为它是二分类问题的真正的损失函数。而合页损失函数是0-1损失函数的上界,由于0-1损失函数不是连续可导的,直接优化由其构成的目标函数比较困难,可以认为线性支持向量机是优化由0-1损失函数上界构成的目标函数。

图中的虚线显示的是感知机的损失函数[-y_i(w\cdot x_i+b)]_+,当样本被正确分类时,损失函数为0。

感知机算法与SVM的区别:

1.感知机算法存在很多解,由于不同的初值或不同的迭代顺序而可能会有所不同。

2.而SVM存在唯一的解,因为SVM对分离超平面增加了约束条件,将间隔最大化,所以存在唯一解。

间隔最大使支持向量机有别于感知机。相比之下,合页损失函数不仅要正确分类,而且确信度足够高时损失才为0,也就是说合页损失函数对学习有更高的要求

4.非线性支持向量机与核函数

对于线性分类问题,线性分类支持向量机是一种非常有效的方法。但是事实上,大部分时候数据不是线性可分的,这个时候满足条件的超平面根本不存在。我们希望能够使用解线性分类问题的方法来解决这个问题,所采取的方法是进行一个非线性变换,将非线性问题变换为线性问题。通过将数据映射到高维空间中,来解决在原始空间中线性不可分的问题。

具体来说,在线性不可分的情况下,支持向量机首先在低维空间中完成计算,然后通过核函数将输入空间映射到高维空间中,这样原空间的非线性可分问题就变成了新空间的线性可分问题。然后在高维空间中用线性分类学习方法从数据中学习分类模型,构造出最优分离超平面。

如图所示,一堆数据在二维空间中无法划分,从而可以映射到三维空间里划分。

  • 建立非线性学习器:在遇到核函数之前,如果使用线性学习器学习一个非线性关系,相当于应用一个固定的非线性映射,将数据映射到特征空间中,在特征空间中使用线性学习器。因此,考虑的假设集是这种类型的函数:

这里的\phi :X\rightarrow F是从输入空间到某个特征空间的映射,这意味着建立非线性学习器分为两个步骤:

1.首先使用一个非线性映射将数据变换到一个特征空间F.

2.然后在特征空间中使用线性支持向量机学习器进行分类.

对偶形式是线性学习器的一个重要性质。还记得在线性可分支持向量机中,对于新的数据点x的预测,只需要计算它与训练数据点的内积即可,这一点至关重要,是使用kernel进行非线性推广的基本前提

而上文提到过的:通过对偶问题求得最优解的优点之一为可以自然的引入核函数,推广到非线性分类问题。

因为对偶形式意味着决策规则可以使用测试点与训练点的内积来表示,而内积可以使用核函数来代替(面对非线性数据,我们需要将数据映射到高维空间中,核函数能够简化映射空间中的内积运算,避开了直接在高维空间中进行计算):

如果有一种方式可以直接在特征空间中计算内积\left \langle \phi( x_i),\phi(x_j) \right \rangle,就像在原始输入点函数一样,就有可能将两个步骤融合到一起建立一个非线性的学习器,这种直接计算的方法称为核函数方法。

 


举例:

如果拿到非线性数据就找一个映射\phi (\cdot ),然后将原来的数据映射到新空间中,再做线性SVM即可。

但是这种方法有问题,如果对一个二维空间做映射,选择的新空间是原始空间的所有一阶和二阶的组合,得到5个维度。如果原始空间是三维的,那么就会得到19维的新空间,这个数目是呈指数级爆炸性增长的,从而这势必给\phi (\cdot )的计算带来非常大的困难,而且如果遇到无穷维的情况,就根本无法计算了。

这个时候就需要核函数出马了。

设两个向量x_1=(\eta _1,\eta _2)^Tx_2=(\xi _1,\xi _2)^T,而\phi (\cdot )即是前面说的五维空间的映射,因此映射之后的内积为:

另外,我们注意到:

两者有很多相似的地方,而上面这个式子的计算结果实际上和映射

之后的内积\left \langle \varphi (x_1),\varphi (x_2) \right \rangle的结果是相等的。

而区别在于:第二个是将其先映射到高维空间中,然后再根据内积的公式进行计算;而第一种是直接在原始的低维空间中进行计算,而不需要显式地写出映射后的结果。而刚才提到的维度爆炸,在前一种方法已经无法计算的情况下,后一种方法依然能够从容处理,真是是无穷维的情况也没有问题。

例如上例中核函数为:

这种计算两个向量在隐式映射过后的空间中的内积的函数叫做核函数。核函数能够简化映射空间中的内积运算,刚好碰巧的是,在SVM中需要计算的地方数据向量总是以内积的形式出现的。所以可以将内积直接替换为核函数。这样一来解决了计算的问题,避开了直接在高维空间中进行计算,而结果是等价的。

 


定义4.1 核函数的定义:

\mathcal{X}是输入空间,又\mathcal{H}为特征空间,如果存在一个从\mathcal{X}\mathcal{H}的映射:

\phi (x):\mathcal{X}\rightarrow \mathcal{H}

使得所有x,z\in \mathcal{X},函数K(x,z)=\phi (x)\cdot \phi(z)

则称K(x,z)为核函数,\phi (x)为映射函数。

通常直接计算K(x,z)比较容易,而通过\phi (x)\phi (z)计算K(x,z)比较困难。核技巧的想法是:在学习与预测时只定义核函数,而不显示地定义映射函数。

特征空间一般是高维的,甚至是无穷维的。对于核函数K(x,z),特征空间\mathcal{H}和映射函数\phi的取法并不唯一,即使是同一特征空间,也可以取不同的映射。

4.1核技巧在支持向量机中的应用

通过上述线性支持向量机算法的介绍,我们注意到在对偶问题中,无论是目标函数还是分类决策函数(分离超平面)都只涉及输入样本与样本数据之间的内积。而对偶问题中的目标函数中的内积\left \langle x_i,x_j \right \rangle可以使用核函数K(x_i,x_j)=\phi (x_i)\cdot \phi (x_j)来代替。同样,分类决策函数中的内积也可以使用核函数来代替,而分类决策函数式变为:

f(x)=sign\left ( \sum^{N}_{i=1}\alpha_i^*y_i \phi (x_i)\cdot \phi(x)+b^* \right )+sign\left ( \sum^{N}_{i=1}\alpha_i^*y_i K(x \cdot x_i )+b^* \right )

这等价于经过映射函数\phi将原来的输入空间变换到一个新的特征空间,在新的特征空间中从训练样本中学习线性支持向量机。

也就是说,在核函数给定的情况下,可以利用解线性分类问题的方法求解非线性分类问题的支持向量。

核技巧:不需要显式地定义特征空间与映射函数,学习是隐式地在特征空间进行的。它是巧妙的利用线性分类学习方法与核函数解决非线性问题的技术。

在实际的应用中,核函数的选择往往依赖于领域知识,核函数选择的有效性需要通过实验验证。

4.2 几种核函数

  1. 多项式核函数:K(x,z)=(x\cdot z+1)^P
  2. 高斯核函数:K(x,z)=exp(-\frac{\left \| x-z\right \|^2}{2\sigma ^2})

           该核可以将原始空间映射到无穷维空间。如果\sigma很大的话,高次特征上的权重实际上衰减得非常快,所以实际上相当于一个低微的子空间。而如果\sigma选的很小的话,则可以将任意的数据映射为线性可分。但是这可能会带来非常严重的过拟合问题。所以,通过调控参数\sigma,高斯核实际熵具有非常高的灵活性,因为是最广泛使用的核函数之一。

4.3 核函数的本质

5.SMO算法(序列最小最优算法)

我们知道支持向量机的学习问题可以形式化为求解凸二次规划问题,这样的凸二次规划问题具有全局最优解,并且有许多最优化算法可以用于这一问题的求解。但是当训练样本容量很大时,这些算法往往会变得非常低效,以致无法使用。

1998年,Microsoft Research的John C. Platt在论文《Sequential Minimal Optimization:A Fast Algorithm for Training Support Vector Machines》中提出针对上述问题的解法:SMO算法,它很快便成为最快的二次规划优化算法,特别是在针对线性SVM和数据稀疏时性能更优,其特点是不断地将原二次规划问题分解为只有两个变量的二次规划子问题,并对子问题进行解析求解,直到所有变量都满足KKT条件为止。

SMO算法要解如下凸二次规划的对偶问题:

\underset{\alpha}{min}\frac{1}{2}\sum^n_{i,j=1}\alpha_i\alpha_jy_iy_j\left \langle x_i,x_j \right \rangle -\sum^n_{i=1}\alpha_i\\ s.t. \ \ \sum^N_{i=1}\alpha_iy_i=0 \\ 0\leqslant \alpha _i\leqslant C,\ i=1,2,...,n

SMO算法具体步骤请见SMO算法,在这里就不再赘述。

SMO算法的基本思想是将Vapnik在1982年提出的Chunking方法推到极致,SMO算法每次迭代只选出两个分量ai和aj进行调整,其它分量则保持固定不变,在得到解ai和aj之后,再用ai和aj改进其它分量。这样通过启发式的方法得到原二次规划问题的最优解。与通常的分解算法比较,尽管它可能需要更多的迭代次数,但每次迭代的计算量比较小,虽然计算子问题次数很多,但是总体上还是高效的。所以该算法表现出较好的快速收敛性,且不需要存储核矩阵,也没有矩阵运算。

 

参考资料:《统计学习方法》--李航

                    https://blog.csdn.net/v_july_v/article/details/7624837

 

 

 

 

 

 

 

  • 6
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值