SVM处理非线性问题理解
(1)利用核函数
在现实任务中,原始样本空间也许并不存在一个能正确划分两类样本的超平面,那这个时候应该怎么办呢?我们的想法是仍然去找平面,但我们去更高的纬度里去找平面。在低维空间里一些线性不可分的数据集,到高维空间里面将会以更大的概率被线性分开。有人证明,在特征空间中随机的选取一些点,同时随机的将这些点分成两类,那么在越高维度的空间里进行这个操作,这些点能被线性分开的概率越大。如果说你在无限的维度里面进行这个操作,那么这些点能被线性分开的概率为1。
我们定义一个映射
φ
\varphi
φ,将低维矢量
X
X
X映射至高维去,即:
X
→
φ
(
X
)
X\rightarrow\varphi(X)
X→φ(X)
其中,
φ
(
X
)
\varphi(X)
φ(X) 是更高维的矢量。那么我们应该如何选取这个
φ
\varphi
φ呢,这应该是SVM最有创造力的部分之一:
-
φ ( X ) \varphi(X) φ(X) 取无限维(当然不无限有时也能操作),但同时使用有限维的操作。
-
我们可以不用知道 φ ( X ) \varphi(X) φ(X) 的显示表达,取而代之,如果对空间任意向量,我们知道一个低维的核函数
K ( X 1 , X 2 ) = φ ( X 1 ) T φ ( X 2 ) K(X_1,X_2)=\varphi(X_1)^T\varphi(X_2) K(X1,X2)=φ(X1)Tφ(X2),则仍然能通过SVM,计算 W T φ ( X ) + b W^T\varphi(X)+b WTφ(X)+b 的值,进而得出 X X X所属的类别。
当然,什么样的函数可以作为核函数是有条件的,此处不作说明,有兴趣的同学可以参阅西瓜书支持向量机那一章。SVM最常用的核函数是如下2个:
K
(
X
1
,
X
2
)
=
e
−
∣
∣
X
1
−
X
2
∣
∣
2
2
σ
2
K(X_1,X_2)=e^{-\frac{||X_1-X_2||^2}{2\sigma^2}}
K(X1,X2)=e−2σ2∣∣X1−X2∣∣2
K ( X 1 , X 2 ) = ( X 1 T X 2 + 1 ) d K(X_1,X_2)=(X_1^TX_2+1)^d K(X1,X2)=(X1TX2+1)d
(2)软间隔和正则化
在现实任务中,往往很难确定合适的核函数使得训练样本在特征空间中线性分开。即如果我们硬要求找一个平面将所有样本正确划分,那最终结果很可能是我们找不到这样一个平面,因为条件太苛刻了,退而求其次,我们降低要求。原先我们要求所有样本必须满足以下关系(硬间隔):
y
i
[
W
T
X
+
b
]
≥
1
(
i
=
1
⋯
N
)
y_i[W^TX+b]\ge1 (i=1\cdots N)
yi[WTX+b]≥1(i=1⋯N)
现在我们允许某些样本不满足上述约束,于是我们将约束条件改写为(软间隔):
{
y
i
[
W
T
X
+
b
]
≥
1
−
ξ
i
(
i
=
1
⋯
N
)
ξ
i
≥
0
(
i
=
1
⋯
N
)
\left\{ \begin{array}{c} y_i[W^TX+b]\ge1-\xi_i~~(i=1\cdots N)\\ \xi_i\ge0~~(i=1\cdots N)\\ \end{array} \right.
{yi[WTX+b]≥1−ξi (i=1⋯N)ξi≥0 (i=1⋯N)
同时为了使不满足约束的样本尽可能少,我们将优化目标改写为:
m
i
n
{
1
2
∣
∣
W
∣
∣
2
+
C
∑
i
=
1
N
ξ
i
}
min\left\{\frac{1}{2}||W||^2+C\sum_{i=1}^N\xi_i\right\}
min{21∣∣W∣∣2+Ci=1∑Nξi}
当然目标函数的改写不止这一种方式,可以通过尝试不同的改写方式,来达到不同的效果。其中
C
∑
i
=
1
N
ξ
i
C\sum_{i=1}^N\xi_i
Ci=1∑Nξi
称作正则项。
ξ
i
\xi_i
ξi称作松弛变量,用以表征该样本不满足约束的程度。
C
C
C是事先设定的参数,根据经验来调试。从这个方面来看,SVM还是很好的,因为事先需要调试的参数并不算多。
总结
从以上来看,利用SVM处理非线性问题主要用到了两种方法:
- 到更高维度去找可以分类的超平面。
- 有限制地降低分类要求。
当然,这两种方法可以结合使用来达到更好的效果。