对于经典的SVM以及核函数等概念,总是感觉有点陌生,平常都是直接调用现成的第三方库,没有深究其原理, 但该学还是得学,不学不行啊
问题:
给定训练样本集
D
=
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
.
.
.
,
(
x
n
,
y
n
)
D={(\pmb{x_1},y_1),(\pmb{x_2},y_2),...,(\pmb{x_n},y_n)}
D=(x1x1x1,y1),(x2x2x2,y2),...,(xnxnxn,yn),其中
y
i
∈
{
−
1
,
+
1
}
y_i \in \{-1,+1\}
yi∈{−1,+1}(这里为什么是-1而不是0,主要是为了推出后面的公式)。在此假定样本集线性可分,即能在样本空间中找到一个超平面(
x
\pmb{x}
xxx为二维时,该划分平面为直线;
x
\pmb{x}
xxx三维时为平面),将不同类别的样本分开。如下图所示,
x
\pmb{x}
xxx为二维向量,此时应该找到一条位于两类训练样本正中间的直线
A
x
1
+
B
x
2
+
C
=
0
Ax_1+Bx_2+C=0
Ax1+Bx2+C=0,比较理想的即红色的那条
在样本空间中,划分超平面为
ω
T
x
+
b
=
0
\pmb{\omega}^T\pmb{x} +b=0
ωωωTxxx+b=0
其中法向量
ω
T
=
{
ω
1
,
ω
2
,
.
.
.
,
ω
n
}
\pmb{\omega}^T=\{\omega_1,\omega_2,...,\omega_n\}
ωωωT={ω1,ω2,...,ωn}决定超平面的方向;
b
b
b为位移项,决定了原点到超平面的距离。类似于点到平面的距离,对于样本空间中的任意点
x
\pmb{x}
xxx到该超平面的距离为
r
=
∣
ω
T
x
+
b
∣
∣
∣
ω
∣
∣
r=\frac{|\pmb{\omega}^T\pmb{x}+b|}{||\pmb{\omega}||}
r=∣∣ωωω∣∣∣ωωωTxxx+b∣
对于
y
i
=
−
1
y_i=-1
yi=−1,有
ω
T
x
i
+
b
<
0
\pmb{\omega}^T\pmb{x_i} +b<0
ωωωTxixixi+b<0;对于
y
i
=
1
y_i=1
yi=1,有
ω
T
x
i
+
b
>
0
\pmb{\omega}^T\pmb{x_i} +b>0
ωωωTxixixi+b>0。当线性可分时,存在
ω
,
b
\pmb{\omega},b
ωωω,b使得下面成立
{
ω
T
x
i
+
b
≥
+
1
,
y
i
=
1
ω
T
x
i
+
b
≤
−
1
,
y
i
=
−
1.
\begin{cases} \pmb{\omega}^T\pmb{x_i} +b\geq+1,y_i=1\\ \pmb{\omega}^T\pmb{x_i} +b\leq-1,y_i=-1. \end{cases}
{ωωωTxixixi+b≥+1,yi=1ωωωTxixixi+b≤−1,yi=−1.
使得上面两个不等式中的等号成立的点被称作支持向量(可以理解为不同类别的样本向量撑起了这个超平面),且两个不同类别的支持向量到超平面的距离之和如下,且被称为间隔
γ
=
2
∣
∣
ω
∣
∣
\gamma=\frac{2}{||\pmb{\omega}||}
γ=∣∣ωωω∣∣2
找最优的划分超平面即寻找
ω
,
b
\pmb{\omega},b
ωωω,b使得间隔
γ
\gamma
γ最大,等价于最小化
∣
∣
ω
∣
∣
||\pmb{\omega}||
∣∣ωωω∣∣。因此,原问题可以转化为一个凸二次规划问题,具体可以使用凸优化技术,比如拉格朗日数乘数法等进行求解:
arg min
ω
,
b
1
2
∣
∣
ω
∣
∣
s
.
t
.
y
i
(
ω
T
x
i
+
b
)
≥
1
,
i
=
1
,
2
,
.
.
.
,
n
\underset{\omega,\ b}{\operatorname{\argmin}} \quad \frac{1}{2}||\pmb{\omega}|| \\ s.t. \quad y_i(\pmb{\omega}^T\pmb{x_i} +b)\geq1,i=1,2,...,n
ω, bargmin21∣∣ωωω∣∣s.t.yi(ωωωTxixixi+b)≥1,i=1,2,...,n
核函数
上文所说的都是基于训练样本线性可分的前提下,而当样本线性不可分时,此时在原样本空间无法找到一个超平面能将样本正确de划分开来(比如下图的“异或”问题)。
对于这样的问题,可以将原始空间映射到一个更加高维的空间,原本在低维空间不可分的样本在更加高维的空间线性可分。例如下图,将“异或”问题对应的原始二维空间映射到一个合适的三维空间,就能找到一个合适的超平面。而且有,如果原始空间是有限维,即特征数量有限,则一定存在更加高维的空间使得样本可分。
ϕ
(
x
)
\phi(x)
ϕ(x)表示一种非线性映射关系,表示将原来的
x
x
x映射到更高维的特征空间,在新的特征空间划分超平面所对应的模型变为
f
(
x
)
=
ω
T
ϕ
(
x
)
+
b
f(x) = \pmb{\omega}^T\phi{(\pmb{x})} +b
f(x)=ωωωTϕ(xxx)+b
在求解新模型时,会涉及到到
ϕ
(
x
i
)
T
ϕ
(
x
j
)
\phi{(\pmb{x_i})}^T\phi{(\pmb{x_j})}
ϕ(xixixi)Tϕ(xjxjxj)的计算,即
x
i
和
x
j
\pmb{x_i}和\pmb{x_j}
xixixi和xjxjxj映射到新的特征空间之后的内积,由于映射后的空间维度更大(可能无穷维),因此直接计算内积
ϕ
(
x
i
)
T
ϕ
(
x
j
)
\phi{(\pmb{x_i})}^T\phi{(\pmb{x_j})}
ϕ(xixixi)Tϕ(xjxjxj)通常比较困难,因此,核函数(kernel trick)被提出来解决这个问题。核函数是指,低维输入空间存在函数
κ
\kappa
κ,它恰好等于在高维空间中的这个内积,这样就避免了复杂的非线性变换以及高维内积的计算,公式如下所示。
κ
(
x
i
,
x
j
)
=
<
ϕ
(
x
i
)
,
ϕ
(
x
j
)
>
=
ϕ
(
x
i
)
T
ϕ
(
x
j
)
\kappa(\pmb{x_i},\pmb{x_j})=<\phi{(\pmb{x_i})},\phi{(\pmb{x_j})}>=\phi{(\pmb{x_i})}^T\phi{(\pmb{x_j})}
κ(xixixi,xjxjxj)=<ϕ(xixixi),ϕ(xjxjxj)>=ϕ(xixixi)Tϕ(xjxjxj)
当
ϕ
(
∗
)
\phi(*)
ϕ(∗)已知,则可以求出对应的
κ
(
∗
,
∗
)
\kappa{(*,*)}
κ(∗,∗),但问题是我们往往不知道
ϕ
(
∗
)
\phi(*)
ϕ(∗)是什么形式,而且我们通常也不会去显式地找到这个
ϕ
(
∗
)
\phi(*)
ϕ(∗)。若核函数的选择不合适,则样本被映射到的空间仍然不能构造出一个好的划分超平面,因此核函数的选择至关重要。下面是常用的几种核函数: