前言
- 我也在学习SVM,边学习边记录学到的东西,特别感谢在学习核函数这一部分时提供帮助的博文,下面的记录也是基于它之上的,并加入了一些个人补充,博文链接:https://blog.csdn.net/v_july_v/article/details/7624837
问题背景
- 前几篇讲到的SVM的知识是针对线性问题进行处理的,而对于非线性问题,使用核函数可以较好的解决,我们先来直观的理解一下非线性问题与其解决方法:
- 上图中的一维坐标下的+和-两类数据是无法直接通过一个点(一维情况下,一个点就是一个超平面)来直接区分的,现在我们把它们拓展到二维情况,此时用一条直线(二维情况下,一条直线就是一个超平面),就可以直接区分两类数据,如右上角的图所示,下面的图则是二维升到三维空间进行处理的情况。
- 可见,对于低维度的线性不可分情况,我们可以通过升高到高维度来进行处理。
- 好,这是关于问题背景的描述。
决策规则
- 下面我们先来回顾一下之前的内容,我们的决策超平面公式是:
f
(
x
)
=
w
T
x
+
b
f(x)=w^{T}x+b
f(x)=wTx+b,我们前面所做的一切工作都是为了得到一个最优的参数
w
和
b
w和b
w和b。之后我们就可以通过这个公式来对数据点进行分类了。
下面是对于非支持向量所对应的系数 α α α为0的原因分析:(这一部分和核函数没什么关系,有兴趣的同学可以了解一下,其实如果之前的知识学得扎实的话,你就能够自己得出结论,其实是KKT条件约束的作用)
其实上面就是KKT条件的解释,上面说的functional margin其实就是 y i ( w T x i + b ) y_{i}(w^{T}x_{i}+b) yi(wTxi+b),其实本质是KKT条件约束的原因,要想得到最优参数,一定是要满足KKT条件的,当 y i ( w T x i + b ) − 1 = 0 y_{i}(w^{T}x_{i}+b)-1=0 yi(wTxi+b)−1=0时,证明最优参数不在约束域内,只能尽可能的靠近最优参数,所以最适合的参数落在约束域边界,即 y i ( w T x i + b ) − 1 = 0 y_{i}(w^{T}x_{i}+b)-1=0 yi(wTxi+b)−1=0,而此时 α α α此时是>0,而当 y i ( w T x i + b ) − 1 > 0 y_{i}(w^{T}x_{i}+b)-1>0 yi(wTxi+b)−1>0,表示最优参数在约束域内,所以失去了约束效果,所以说 α = 0 α=0 α=0,至于支持向量,还记得吗:
支持向量是落到上面虚线的,满足带入放缩后的 w x + b wx+b wx+b中使得函数间隔为1或者-1,所以 y i ( w T x i + b ) − 1 = 0 y_{i}(w^{T}x_{i}+b)-1=0 yi(wTxi+b)−1=0,而非支持向量不能满足这个条件,所以 y i ( w T x i + b ) − 1 > 0 y_{i}(w^{T}x_{i}+b)-1>0 yi(wTxi+b)−1>0。 - 好了,言归正传,通过将
w
w
w带进决策函数,我们得到了最终的分类函数:
- 到目前为止,这还是线性情况,这只是铺垫,下面我们进入非线性情况。
核函数
困难
- 首先,我们按照原来的思路,我们必须要把数据映射到高维空间才能达到线性可分的目的。
上面这个式子还是线性分类器,只不过由于 Φ Φ Φ的映射,此时x是高维空间向量,在高维情况下是线性可分的,到时候再用这个分类器就可以达到分类的目的。
好了,大体思路清楚了,找到一个合理的 Φ Φ Φ映射,然后在高维空间使用上面的线性分类器f(x)就好了,问题就迎刃而解了。 - 然而,并不是这么简单的,
对啊,怎么找到合适的映射函数呢?这个太难了,如同大海捞针。另外在高维空间中求解的计算代价是很高的,我们来看例子:
是的,分类圈的公式应该就是上面的形式。
是的,这是一个超平面方程,我们通过用z轴代替二维坐标的5种组合形式,来将二维数据映射到了5维空间。把图8中的两类数据映射到5维空间后,就得到了两个5维的超平面,然后我们再应用线性分类算法就可以构建最优的分类超平面了。
由于5维无法绘图,所以作者为了让我们清楚的看到,用了特殊的数据,圆圈的圆心在x2轴上,所以最后的圈就可以映射到3维空间了,这样就可以绘图展示一下映射之后的效果了:
可以看出的线性可分的,可以用3维空间的超平面来区分两类数据。
是的,维度爆炸,是难以计算的。也就是说,映射不好找,但是我们可以干脆映射到可能的最高纬度,比如二维的时候,x1、x2最多有5种组合形式,那我们就映射到5维;三维时,x1、x2、x3最多有19种组合形式,那我们就映射到19维……,虽然这种映射是可取,但是会产生维度爆炸,无法计算的问题。
解决办法
是的,映射之后x1和x2两个向量(注意,此处x1和x2代表向量,不是坐标,坐标分别是η和ξ)分别有5种坐标组合方式,然后内积就相乘到了一起。
下面重点来了!!!!看我们怎么用更好的方法,达到和上面同样的效果!
就是说,倘若x1和x2是两个向量,分别等于
(
η
1
,
η
2
)
,
(
ξ
1
,
ξ
2
)
(η_{1},η_{2}),(ξ_{1},ξ_{2})
(η1,η2),(ξ1,ξ2),那么有以下式子成立:
(
<
x
1
,
x
2
>
+
1
)
2
=
2
η
1
ξ
1
+
η
1
2
ξ
1
2
+
2
η
2
ξ
2
+
η
1
2
ξ
1
2
+
2
η
1
η
2
ξ
1
ξ
3
+
1
=
<
Φ
(
x
1
)
,
Φ
(
x
2
)
>
,
其
中
,
Φ
(
x
1
)
=
(
√
2
η
1
,
η
1
2
,
√
2
η
2
,
η
2
2
,
√
2
η
1
η
2
,
1
)
T
,
Φ
(
x
2
)
=
(
√
2
ξ
1
,
ξ
1
2
,
√
2
ξ
2
,
ξ
2
2
,
√
2
ξ
1
ξ
2
,
1
)
T
(<x1,x2>+1)^{2}=2η_{1}ξ_{1}+η_{1}^{2}ξ_{1}^{2}+2η_{2}ξ_{2}+η_{1}^{2}ξ_{1}^{2}+2η_{1}η_{2}ξ_{1}ξ_{3}+1=<Φ(x1),Φ(x2)>,其中,Φ(x1)=(√2η_{1},η_{1}^{2},√2η_{2},η_{2}^{2},√2η_{1}η_{2},1)^{T},Φ(x2)=(√2ξ_{1},ξ_{1}^{2},√2ξ_{2},ξ_{2}^{2},√2ξ_{1}ξ_{2},1)^{T}
(<x1,x2>+1)2=2η1ξ1+η12ξ12+2η2ξ2+η12ξ12+2η1η2ξ1ξ3+1=<Φ(x1),Φ(x2)>,其中,Φ(x1)=(√2η1,η12,√2η2,η22,√2η1η2,1)T,Φ(x2)=(√2ξ1,ξ12,√2ξ2,ξ22,√2ξ1ξ2,1)T,
惊了!!!本来
<
Φ
(
x
1
)
,
Φ
(
x
2
)
>
<Φ(x1),Φ(x2)>
<Φ(x1),Φ(x2)>的计算在高维下是十分困难的, 现在你竟然通过低维下的
(
<
x
1
,
x
2
>
+
1
)
2
(<x1,x2>+1)^{2}
(<x1,x2>+1)2来实现了,仅仅平方一下就搞定了??
是的,此处的映射比较容易构造出对应的核函数,
几个核函数
- 见下图:
小结
- 图: