线性SVM一文中提到,线性可分时b的求解。但是在线性不可分情形下,如下二维平面图,无法找到一条直线将红蓝色样本点完全分开

SVM提出了一个解决办法,就是把低维的特征投影到高维空间使得样本可以一分为二,例如下动图所示。

回顾上一节软间隔,我们得到优化目标

$\underset{a}{min}=\frac{1}{2}\sum \sum a_{i}a_{j}y_{i}y_{j}x_{i}\cdot x_{j}-\sum a_{i}$

        $s.t \sum a_{i}y_{i}=0$

        $0\leqslant \alpha _{i}\leqslant C$

那么按照低维到高维的思想, 我们在$x_{i}\cdot x_{j}$一个函数变化$\phi $,使得样本维度变高,然后再做內积,即$\phi(x_{i}) \cdot\phi(x_{j})$

也就是$\underset{a}{min}=\frac{1}{2}\sum \sum a_{i}a_{j}y_{i}y_{j}\phi(x_{i}) \cdot\phi(x_{j})-\sum a_{i}$

        $s.t \sum a_{i}y_{i}=0$

        $0\leqslant \alpha _{i}\leqslant C$

这样似乎简单粗暴地将线性不可分问题就解决了,但是人们很快发现这个方法的缺陷,当样本本身维度就很高时,再将样本特征映射到更高维,

计算量明显增大,甚至出现无穷维。

 

那么这时候核函数隆重登场!


 

举一个简单例子说明核函数(kernel function)的神奇之处

样本X1(a1,a2),X2(b1,,b2)

将二维特征投影到六维变成

X'1(1,√2a1,√2a2,a12,a22,√2a1a2)

X'2(1,√2b1,√2b2,b12,b22,√2b1b2)

X1'•X2'=1+2a1b1+2a2b2+a12b12+a22b22+2a1b1a2b2(高维空间做內积)

K(Xi,Xj=(Xi•Xj+1)2=(a1b1+a2b2+1)2=1+2a1b1+2a2b2+a12b12+a22b22+2a1b1a2b2

可以看出红色部分完全相同。

但是使用核函数求內积时,仅仅输入的是二维数据,但是和高维向量X1'和X2'的內积完全相同。

至于常见的核函数,参考https://blog.csdn.net/kateyabc/article/details/79980880


 

所以我们再将$\phi(x_{i}) \cdot\phi(x_{j})$变成$\mathbf{K}(x_{i},x_{j})$

整理算法过程:

$\underset{a}{min}=\frac{1}{2}\sum \sum a_{i}a_{j}y_{i}y_{j}\mathbf{K}(x_{i},x_{j})-\sum a_{i}$

        $s.t \sum a_{i}y_{i}=0$

        $0\leqslant \alpha _{i}\leqslant C$

1,根据SMO得到α*

2,根据$w = \sum a^{*}y_{i}\phi(x_{i})$有$w^{*}\phi(x_{j}) = \sum a^{*}y_{i}\phi(x_{i})\phi(x_{j})$,这里不必得到显式的w,而且,$\phi(x)$往往我们也不知道

3,根据$0<αi<C,找到所有支持向量上的点,小标为s,有

$y_{s}\left ( \sum \alpha _{i}y_{i} K\left ( x_{i},x_{s} \right )+b\right )=1$

其中的$\sum a_{i}y_{i}\phi(x_{i})\phi(x_{j})$为已知,所以可求得b,将b求平均得到b*

4,最终超平面为

$\sum \alpha ^{*}y_{i}K(x_{i},x_{j})+b^{*}=0$

 

对于核函数的定义低维的输入空间(欧式空间子集)到高维的希尔伯特空间的映射。参考这篇博文。简单理解不影响理解SVM即可。

posted on 2019-05-12 19:59  be·freedom  阅读(441)  评论(0编辑  收藏  举报