支持向量机(Support Vector Machine, SVM)
SVM是一种二元分类模型,它依托的原理是如果能找到一条线,能够划分样本,并且训练点到线的间隔尽可能远,也就是所有点到超平面的最小值要最大,这样的分割线(一般叫超平面, Hyperplane)就是最好的分类方式,间隔叫作Margin。因此SVM的两个关键点就是:完全分类正确,及所有点到超平面的最小值要最大。
1. 线性SVM
设定超平面为
w
T
x
+
b
=
0
w^{T} x+b=0
wTx+b=0, 在超平面上方我们定义
y
=
1
y=1
y=1,下方定义为
y
=
−
1
y=-1
y=−1,则点
x
x
x到超平面的几何间隔为:
1
∥
w
∥
∣
w
T
x
+
b
∣
\frac{1}{\|w\|}\left|w^{T} x+b\right|
∥w∥1∣∣wTx+b∣∣
我们需要判断分类是否正确,可以通过观察
y
y
y(实际值)和
w
T
x
+
b
w^{T} x+b
wTx+b(预测值)是否同号(
y
y
y只能为
1
1
1或
−
1
-1
−1),即我们可以定义函数间隔:
γ
′
=
y
(
w
T
x
+
b
)
\gamma^{\prime}=y\left(w^{T} x+b\right)
γ′=y(wTx+b)
现在我们可以初步定义优化函数为:
max
γ
=
y
(
w
T
x
+
b
)
∥
w
∥
s.t
y
i
(
w
T
x
i
+
b
)
=
γ
′
(
i
)
≥
γ
′
(
i
=
1
,
2
,
…
m
)
\max \gamma=\frac{y\left(w^{T} x+b\right)}{\|w\|} \\ \text { s.t } y_{i}\left(w^{T} x_{i}+b\right)=\gamma^{\prime(i)} \geq \gamma^{\prime}(i=1,2, \ldots m)
maxγ=∥w∥y(wTx+b) s.t yi(wTxi+b)=γ′(i)≥γ′(i=1,2,…m)
由于无论
w
w
w和
b
b
b怎么放缩,超平面的几何位置不变,所以我们可以设定最小的函数间隔
γ
′
=
1
\gamma^{\prime}=1
γ′=1,这样优化函数进一步简化为:
max
1
∥
w
∥
s.t
y
i
(
w
T
x
i
+
b
)
≥
1
(
i
=
1
,
2
,
…
m
)
\max \frac{1}{\|w\|} \\ \text { s.t } y_{i}\left(w^{T} x_{i}+b\right) \geq 1(i=1,2, \ldots m)
max∥w∥1 s.t yi(wTxi+b)≥1(i=1,2,…m)
由于
1
∥
w
∥
\frac{1}{\|w\|}
∥w∥1等同于
1
2
∥
w
∥
2
\frac{1}{2}\|w\|^{2}
21∥w∥2的最小化,所以最终的优化函数可以表达为:
min
1
2
∥
w
∥
2
s.t
y
i
(
w
T
x
i
+
b
)
≥
1
(
i
=
1
,
2
,
…
m
)
\min \frac{1}{2}\|w\|^{2} \\ \text { s.t } y_{i}\left(w^{T} x_{i}+b\right) \geq 1(i=1,2, \ldots m)
min21∥w∥2 s.t yi(wTxi+b)≥1(i=1,2,…m)
这样其实就是一个标准的二次规划(QP)问题,可以代入别的工具求解
2. 对偶SVM
我们通常会将线性SVM转化为对偶问题,主要解决在非线性转换之后维度变高二次规划问题求解困难的问题。在非线性分类问题中,我们一般作非线性转换 z n = ϕ ( x n ) \mathbf{z}_{n}=\phi\left(\mathbf{x}_{n}\right) zn=ϕ(xn),从而在 z \mathbf{z} z空间里面进行线性分类,在非线性转换过程一般是一个升维的过程,将 z \mathbf{z} z的维度一般设为 d ~ \tilde{d} d~, 一般情况 d ~ > > d \tilde{d}>>d d~>>d,(比如2维变5维,3维变19维等是一个非线性升高),这样在高维空间内部,在二次规划问题中的就会有 d ~ + 1 \tilde{d}+1 d~+1个变量,那么权值维度同样也为 d ~ + 1 \tilde{d}+1 d~+1维,以及 m m m个约束,此外 Q Q Q 矩阵维度会十分大,达到 d ~ 2 \tilde{d}^2 d~2,因此,一旦 d ~ \tilde{d} d~变大了, 二次规划问题求解就会变得很困难。
我们引入拉格朗日乘子来转化为对偶问题,优化函数变为:
L
(
w
,
b
,
α
)
=
1
2
∥
w
∥
2
−
∑
i
=
1
m
α
i
[
y
i
(
w
T
x
i
+
b
)
−
1
]
满足
α
i
≥
0
L(w, b, \alpha)=\frac{1}{2}\|w\|^{2}-\sum_{i=1}^{m} \alpha_{i}\left[y_{i}\left(w^{T} x_{i}+b\right)-1\right] \text { 满足 } \alpha_{i} \geq 0
L(w,b,α)=21∥w∥2−i=1∑mαi[yi(wTxi+b)−1] 满足 αi≥0
优化目标为:
min
⏟
w
,
b
max
⏟
α
i
≥
0
L
(
w
,
b
,
α
)
\underbrace{\min }_{w, b} \underbrace{\max }_{\alpha_{i} \geq 0} L(w, b, \alpha)
w,b
minαi≥0
maxL(w,b,α)
由于这个优化函数满足KTT条件,因此通过拉格朗日对偶将优化目标转为:
max
⏟
α
i
≥
0
min
⏟
w
,
b
L
(
w
,
b
,
α
)
\underbrace{\max }_{\alpha_{i} \geq 0} \underbrace{\min }_{w, b} L(w, b, \alpha)
αi≥0
maxw,b
minL(w,b,α)
根据上式,我们可以先求出优化函数对于
w
,
b
w,b
w,b的极小值,然后求拉格朗日乘子
α
\alpha
α的最大值。
我们先求出优化函数对于
w
,
b
w,b
w,b的极小值,即
min
⏟
w
,
b
L
(
w
,
b
,
α
)
\underbrace{\min }_{w, b} L(w, b, \alpha)
w,b
minL(w,b,α),只需要对
w
,
b
w,b
w,b求偏导:
∂
L
∂
w
=
0
⇒
w
=
∑
i
=
1
m
α
i
y
i
x
i
∂
L
∂
b
=
0
⇒
∑
i
=
1
m
α
i
y
i
=
0
\begin{gathered} \frac{\partial L}{\partial w}=0 \Rightarrow w=\sum_{i=1}^{m} \alpha_{i} y_{i} x_{i} \\ \frac{\partial L}{\partial b}=0 \Rightarrow \sum_{i=1}^{m} \alpha_{i} y_{i}=0 \end{gathered}
∂w∂L=0⇒w=i=1∑mαiyixi∂b∂L=0⇒i=1∑mαiyi=0
这样我们就知道了
w
w
w和
α
\alpha
α的关系,然后代入
min
⏟
w
,
b
L
(
w
,
b
,
α
)
\underbrace{\min }_{w, b} L(w, b, \alpha)
w,b
minL(w,b,α)就可以消去
w
w
w,定义:
ψ
(
α
)
=
min
⏟
w
,
b
L
(
w
,
b
,
α
)
\psi(\alpha)=\underbrace{\min }_{w, b} L(w, b, \alpha)
ψ(α)=w,b
minL(w,b,α)
代入可得:
ψ
(
α
)
=
1
2
∥
w
∥
2
−
∑
i
=
1
m
α
i
[
y
i
(
w
T
x
i
+
b
)
−
1
]
=
1
2
w
T
w
−
∑
i
=
1
m
α
i
y
i
w
T
x
i
−
∑
i
=
1
m
α
i
y
i
b
+
∑
i
=
1
m
α
i
=
1
2
w
T
∑
i
=
1
m
α
i
y
i
x
i
−
∑
i
=
1
m
α
i
y
i
w
T
x
i
−
∑
i
=
1
m
α
i
y
i
b
+
∑
i
=
1
m
α
i
=
1
2
w
T
∑
i
=
1
m
α
i
y
i
x
i
−
w
T
∑
i
=
1
m
α
i
y
i
x
i
−
∑
i
=
1
m
α
i
y
i
b
+
∑
i
=
1
m
α
i
=
−
1
2
w
T
∑
i
=
1
m
α
i
y
i
x
i
−
∑
i
=
1
m
α
i
y
i
b
+
∑
i
=
1
m
α
i
=
−
1
2
w
T
∑
i
=
1
m
α
i
y
i
x
i
−
b
∑
i
=
1
m
α
i
y
i
+
∑
i
=
1
m
α
i
=
−
1
2
(
∑
i
=
1
m
α
i
y
i
x
i
)
T
(
∑
i
=
1
m
α
i
y
i
x
i
)
−
b
∑
i
=
1
m
α
i
y
i
+
∑
i
=
1
m
α
i
=
−
1
2
∑
i
=
1
m
α
i
y
i
x
i
T
∑
i
=
1
m
α
i
y
i
x
i
−
b
∑
i
=
1
m
α
i
y
i
+
∑
i
=
1
m
α
i
=
−
1
2
∑
i
=
1
m
α
i
y
i
x
i
T
∑
i
=
1
m
α
i
y
i
x
i
+
∑
i
=
1
m
α
i
=
−
1
2
∑
i
=
1
,
j
=
1
m
α
i
y
i
x
i
T
α
j
y
j
x
j
+
∑
i
=
1
m
α
i
=
∑
i
=
1
m
α
i
−
1
2
∑
i
=
1
,
j
=
1
m
α
i
α
j
y
i
y
j
x
i
T
x
j
\begin{aligned} \psi(\alpha) &=\frac{1}{2}\|w\|^{2}-\sum_{i=1}^{m} \alpha_{i}\left[y_{i}\left(w^{T} x_{i}+b\right)-1\right] \\ &=\frac{1}{2} w^{T} w-\sum_{i=1}^{m} \alpha_{i} y_{i} w^{T} x_{i}-\sum_{i=1}^{m} \alpha_{i} y_{i} b+\sum_{i=1}^{m} \alpha_{i} \\ &=\frac{1}{2} w^{T} \sum_{i=1}^{m} \alpha_{i} y_{i} x_{i}-\sum_{i=1}^{m} \alpha_{i} y_{i} w^{T} x_{i}-\sum_{i=1}^{m} \alpha_{i} y_{i} b+\sum_{i=1}^{m} \alpha_{i} \\ &=\frac{1}{2} w^{T} \sum_{i=1}^{m} \alpha_{i} y_{i} x_{i}-w^{T} \sum_{i=1}^{m} \alpha_{i} y_{i} x_{i}-\sum_{i=1}^{m} \alpha_{i} y_{i} b+\sum_{i=1}^{m} \alpha_{i} \\ &=-\frac{1}{2} w^{T} \sum_{i=1}^{m} \alpha_{i} y_{i} x_{i}-\sum_{i=1}^{m} \alpha_{i} y_{i} b+\sum_{i=1}^{m} \alpha_{i} \\ &=-\frac{1}{2} w^{T} \sum_{i=1}^{m} \alpha_{i} y_{i} x_{i}-b \sum_{i=1}^{m} \alpha_{i} y_{i}+\sum_{i=1}^{m} \alpha_{i} \\ &=-\frac{1}{2}\left(\sum_{i=1}^{m} \alpha_{i} y_{i} x_{i}\right)^{T}\left(\sum_{i=1}^{m} \alpha_{i} y_{i} x_{i}\right)-b \sum_{i=1}^{m} \alpha_{i} y_{i}+\sum_{i=1}^{m} \alpha_{i} \\ &=-\frac{1}{2} \sum_{i=1}^{m} \alpha_{i} y_{i} x_{i}^{T} \sum_{i=1}^{m} \alpha_{i} y_{i} x_{i}-b \sum_{i=1}^{m} \alpha_{i} y_{i}+\sum_{i=1}^{m} \alpha_{i} \\ &=-\frac{1}{2} \sum_{i=1}^{m} \alpha_{i} y_{i} x_{i}^{T} \sum_{i=1}^{m} \alpha_{i} y_{i} x_{i}+\sum_{i=1}^{m} \alpha_{i} \\ &=-\frac{1}{2} \sum_{i=1, j=1}^{m} \alpha_{i} y_{i} x_{i}^{T} \alpha_{j} y_{j} x_{j}+\sum_{i=1}^{m} \alpha_{i} \\ &=\sum_{i=1}^{m} \alpha_{i}-\frac{1}{2} \sum_{i=1, j=1}^{m} \alpha_{i} \alpha_{j} y_{i} y_{j} x_{i}^{T} x_{j} \end{aligned}
ψ(α)=21∥w∥2−i=1∑mαi[yi(wTxi+b)−1]=21wTw−i=1∑mαiyiwTxi−i=1∑mαiyib+i=1∑mαi=21wTi=1∑mαiyixi−i=1∑mαiyiwTxi−i=1∑mαiyib+i=1∑mαi=21wTi=1∑mαiyixi−wTi=1∑mαiyixi−i=1∑mαiyib+i=1∑mαi=−21wTi=1∑mαiyixi−i=1∑mαiyib+i=1∑mαi=−21wTi=1∑mαiyixi−bi=1∑mαiyi+i=1∑mαi=−21(i=1∑mαiyixi)T(i=1∑mαiyixi)−bi=1∑mαiyi+i=1∑mαi=−21i=1∑mαiyixiTi=1∑mαiyixi−bi=1∑mαiyi+i=1∑mαi=−21i=1∑mαiyixiTi=1∑mαiyixi+i=1∑mαi=−21i=1,j=1∑mαiyixiTαjyjxj+i=1∑mαi=i=1∑mαi−21i=1,j=1∑mαiαjyiyjxiTxj
我们再代入到优化目标中:
max
⏟
α
−
1
2
∑
i
=
1
m
∑
j
=
1
m
α
i
α
j
y
i
y
j
(
x
i
⋅
x
j
)
+
∑
i
=
1
m
α
i
s.t.
∑
i
=
1
m
α
i
y
i
=
0
α
i
≥
0
i
=
1
,
2
,
…
m
\begin{gathered} \underbrace{\max }_{\alpha}-\frac{1}{2} \sum_{i=1}^{m} \sum_{j=1}^{m} \alpha_{i} \alpha_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)+\sum_{i=1}^{m} \alpha_{i} \\ \text { s.t. } \sum_{i=1}^{m} \alpha_{i} y_{i}=0 \\ \alpha_{i} \geq 0 i=1,2, \ldots m \end{gathered}
α
max−21i=1∑mj=1∑mαiαjyiyj(xi⋅xj)+i=1∑mαi s.t. i=1∑mαiyi=0αi≥0i=1,2,…m
去掉负号转为最小值:
min
⏟
α
1
2
∑
i
=
1
m
∑
j
=
1
m
α
i
α
j
y
i
y
j
(
x
i
⋅
x
j
)
−
∑
i
=
1
m
α
i
s.t.
∑
i
=
1
m
α
i
y
i
=
0
α
i
≥
0
i
=
1
,
2
,
…
m
\begin{gathered} \underbrace{\min }_{\alpha} \frac{1}{2} \sum_{i=1}^{m} \sum_{j=1}^{m} \alpha_{i} \alpha_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)-\sum_{i=1}^{m} \alpha_{i} \\ \text { s.t. } \sum_{i=1}^{m} \alpha_{i} y_{i}=0 \\ \alpha_{i} \geq 0 i=1,2, \ldots m \end{gathered}
α
min21i=1∑mj=1∑mαiαjyiyj(xi⋅xj)−i=1∑mαi s.t. i=1∑mαiyi=0αi≥0i=1,2,…m
此时一般用SMO算法求解
α
\alpha
α对应的极小值
α
∗
\alpha^*
α∗,求得之后,我们就可以根据
w
=
∑
i
=
1
m
α
i
y
i
x
i
w=\sum_{i=1}^{m} \alpha_{i} y_{i} x_{i}
w=∑i=1mαiyixi得出
w
∗
w^*
w∗。
求
b
b
b则麻烦一些,但可根据对于任意的支持向量
(
x
x
,
y
s
)
\left(x_{x}, y_{s}\right)
(xx,ys),都有:
y
s
(
w
T
x
s
+
b
)
=
y
s
(
∑
i
=
1
m
α
i
y
i
x
i
T
x
s
+
b
)
=
1
y_{s}\left(w^{T} x_{s}+b\right)=y_{s}\left(\sum_{i=1}^{m} \alpha_{i} y_{i} x_{i}^{T} x_{s}+b\right)=1
ys(wTxs+b)=ys(i=1∑mαiyixiTxs+b)=1
即只需求出支持向量代入即可。
3. 软间隔SVM
前面讲到线性SVM一个关键点就是超平面必须完全分类所有点,但实际上一方面有些数据混入了异常点,导致本来线性可分变成了不可分,如下图一个橙色和蓝色的异常点导致我们无法用线性SVM。
但还有一种情况是没有糟糕到那么不可分,如下图,本来如果不考虑异常点,SVM的超平面应该是如红色线所示,但由于有一个蓝色的异常点,导致我们学到的超平面是如粗虚线所示。
为解决这个问题,SVM引入了软间隔的方法。
回顾硬间隔的优化函数:
min
1
2
∥
w
∥
2
s.t
y
i
(
w
T
x
i
+
b
)
≥
1
(
i
=
1
,
2
,
…
m
)
\min \frac{1}{2}\|w\|^{2} \\ \text { s.t } y_{i}\left(w^{T} x_{i}+b\right) \geq 1(i=1,2, \ldots m)
min21∥w∥2 s.t yi(wTxi+b)≥1(i=1,2,…m)
现在对每个样本引入一个松弛变量
ξ
i
≥
0
\xi_{i} \geq 0
ξi≥0,使函数间隔加上松弛变量大于等于1,即:
y
i
(
w
∙
x
i
+
b
)
≥
1
−
ξ
i
y_{i}\left(w \bullet x_{i}+b\right) \geq 1-\xi_{i}
yi(w∙xi+b)≥1−ξi
可以看到我们对样本到超平面的函数距离的要求放松了,之前是一定要大于等于1,现在只需要加上一个大于等于0的松弛变量能大于等于1就可以了。当然,松弛变量不能白加,这是有成本的,每一个松弛变量
ξ
i
\xi_{i}
ξi, 对应了一个代价
ξ
i
\xi_{i}
ξi,因此优化函数变为:
min
1
2
∥
w
∥
2
+
C
∑
i
=
1
m
ξ
i
s.t.
y
i
(
w
T
x
i
+
b
)
≥
1
−
ξ
i
(
i
=
1
,
2
,
…
m
)
ξ
i
≥
0
(
i
=
1
,
2
,
…
m
)
\begin{gathered} \min \frac{1}{2}\|w\|^{2}+C \sum_{i=1}^{m} \xi_{i} \\ \text { s.t. } \quad y_{i}\left(w^{T} x_{i}+b\right) \geq 1-\xi_{i} \quad(i=1,2, \ldots m) \\ \xi_{i} \geq 0 \quad(i=1,2, \ldots m) \end{gathered}
min21∥w∥2+Ci=1∑mξi s.t. yi(wTxi+b)≥1−ξi(i=1,2,…m)ξi≥0(i=1,2,…m)
这里
C
>
0
C>0
C>0为惩罚参数,
C
C
C越大,对误分类的惩罚越大,
C
C
C越小,对误分类的惩罚越小。
下面我们需要优化软间隔SVM优化函数,与线性SVM类似,引入拉格朗日乘子转为无约束问题:
L
(
w
,
b
,
ξ
,
α
,
μ
)
=
1
2
∥
w
∥
2
2
+
C
∑
i
=
1
m
ξ
i
−
∑
i
=
1
m
α
i
[
y
i
(
w
T
x
i
+
b
)
−
1
+
ξ
i
]
−
∑
i
=
1
m
μ
i
ξ
i
L(w, b, \xi, \alpha, \mu)=\frac{1}{2}\|w\|_{2}^{2}+C \sum_{i=1}^{m} \xi_{i}-\sum_{i=1}^{m} \alpha_{i}\left[y_{i}\left(w^{T} x_{i}+b\right)-1+\xi_{i}\right]-\sum_{i=1}^{m} \mu_{i} \xi_{i}
L(w,b,ξ,α,μ)=21∥w∥22+Ci=1∑mξi−i=1∑mαi[yi(wTxi+b)−1+ξi]−i=1∑mμiξi
需要优化的目标函数,根据KKT条件再经过拉格朗日对偶转为:
max
⏟
α
i
≥
0
,
μ
i
≥
0
min
⏟
w
,
b
,
ξ
L
(
w
,
b
,
α
,
ξ
,
μ
)
\underbrace{\max }_{\alpha_{i} \geq 0, \mu_{i} \geq 0} \underbrace{\min }_{w, b, \xi} L(w, b, \alpha, \xi, \mu)
αi≥0,μi≥0
maxw,b,ξ
minL(w,b,α,ξ,μ)
(以下推导略过),类似地首先求出
w
,
b
,
ξ
w, b, \xi
w,b,ξ的极小值:
∂
L
∂
w
=
0
⇒
w
=
∑
i
=
1
m
α
i
y
i
x
i
∂
L
∂
b
=
0
⇒
∑
i
=
1
m
α
i
y
i
=
0
∂
L
∂
ξ
=
0
⇒
C
−
α
i
−
μ
i
=
0
\begin{gathered} \frac{\partial L}{\partial w}=0 \Rightarrow w=\sum_{i=1}^{m} \alpha_{i} y_{i} x_{i} \\ \frac{\partial L}{\partial b}=0 \Rightarrow \sum_{i=1}^{m} \alpha_{i} y_{i}=0 \\ \frac{\partial L}{\partial \xi}=0 \Rightarrow C-\alpha_{i}-\mu_{i}=0 \end{gathered}
∂w∂L=0⇒w=i=1∑mαiyixi∂b∂L=0⇒i=1∑mαiyi=0∂ξ∂L=0⇒C−αi−μi=0
最后导出软间隔SVM的优化函数为:
min
⏟
α
1
2
∑
i
=
1
,
j
=
1
m
α
i
α
j
y
i
y
j
x
i
T
x
j
−
∑
i
=
1
m
α
i
s.t.
∑
i
=
1
m
α
i
y
i
=
0
0
≤
α
i
≤
C
\begin{gathered} \underbrace{\min }_{\alpha} \frac{1}{2} \sum_{i=1, j=1}^{m} \alpha_{i} \alpha_{j} y_{i} y_{j} x_{i}^{T} x_{j}-\sum_{i=1}^{m} \alpha_{i} \\ \text { s.t. } \sum_{i=1}^{m} \alpha_{i} y_{i}=0 \\ 0 \leq \alpha_{i} \leq C \end{gathered}
α
min21i=1,j=1∑mαiαjyiyjxiTxj−i=1∑mαi s.t. i=1∑mαiyi=00≤αi≤C
可以看到与硬间隔SVM相比,只是多了一个约束条件
0
≤
α
i
≤
C
0 \leq \alpha_{i} \leq C
0≤αi≤C。
4. 核函数SVM
对于完全线性不可分的情况,我们可以将数据映射到高维,从而线性可分。回顾线性可分的SVM优化函数:
min
⏟
α
1
2
∑
i
=
1
m
∑
j
=
1
m
α
i
α
j
y
i
y
j
(
x
i
⋅
x
j
)
−
∑
i
=
1
m
α
i
s.t.
∑
i
=
1
m
α
i
y
i
=
0
α
i
≥
0
i
=
1
,
2
,
…
m
\begin{gathered}\underbrace{\min }_{\alpha} \frac{1}{2} \sum_{i=1}^{m} \sum_{j=1}^{m} \alpha_{i} \alpha_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)-\sum_{i=1}^{m} \alpha_{i} \\\text { s.t. } \sum_{i=1}^{m} \alpha_{i} y_{i}=0 \\\alpha_{i} \geq 0 i=1,2, \ldots m\end{gathered}
α
min21i=1∑mj=1∑mαiαjyiyj(xi⋅xj)−i=1∑mαi s.t. i=1∑mαiyi=0αi≥0i=1,2,…m
上式低维特征仅仅以内积
𝑥
𝑖
∙
𝑥
𝑗
𝑥_𝑖∙𝑥_𝑗
xi∙xj的形式出现,如果我们定义一个低维特征空间到高维特征空间的映射
ϕ
\phi
ϕ,将所有特征映射到一个更高的维度,让数据线性可分,从而按照前面的方法求出超平面,即:
min
⏟
α
1
2
∑
i
=
1
,
j
=
1
m
α
i
α
j
y
i
y
j
ϕ
(
x
i
)
⋅
ϕ
(
x
j
)
−
∑
i
=
1
m
α
i
s.t.
∑
i
=
1
m
α
i
y
i
=
0
0
≤
α
i
≤
C
\begin{gathered} \underbrace{\min }_{\alpha} \frac{1}{2} \sum_{i=1, j=1}^{m} \alpha_{i} \alpha_{j} y_{i} y_{j} \phi\left(x_{i}\right) \cdot \phi\left(x_{j}\right)-\sum_{i=1}^{m} \alpha_{i} \\ \text { s.t. } \sum_{i=1}^{m} \alpha_{i} y_{i}=0 \\ 0 \leq \alpha_{i} \leq C \end{gathered}
α
min21i=1,j=1∑mαiαjyiyjϕ(xi)⋅ϕ(xj)−i=1∑mαi s.t. i=1∑mαiyi=00≤αi≤C
但是这样我们需要求出内积
ϕ
(
x
i
)
⋅
ϕ
(
x
j
)
\phi\left(x_{i}\right) \cdot \phi\left(x_{j}\right)
ϕ(xi)⋅ϕ(xj),这样类似于二次规划那样会引入一个
d
~
\tilde{d}
d~维空间,从而发生维度爆炸影响计算速度。
为此我们可以引入核函数,设
ϕ
\phi
ϕ是一个从低维的输入空间
χ
\chi
χ(欧式空间的子集或者离散集合)到高维的希尔伯特空间的
H
\mathcal{H}
H映射,如果存在函数
K
(
x
,
x
′
)
K(x, x')
K(x,x′),对于任意
x
,
x
′
∈
χ
x, x'\in\chi
x,x′∈χ,都有:
K
(
x
,
x
′
)
=
ϕ
(
x
)
∙
ϕ
(
x
′
)
K(x, x')=\phi(x) \bullet \phi(x')
K(x,x′)=ϕ(x)∙ϕ(x′)
咋看跟上面没什么区别,但实际上核函数计算都是在低维空间下进行的,例如对于
Φ
(
x
)
=
(
1
,
x
1
,
x
2
,
…
,
x
d
,
x
1
2
,
x
1
x
2
,
…
,
x
1
x
d
,
x
2
x
1
,
x
2
2
,
…
,
x
2
x
d
,
…
,
x
d
2
)
\Phi(\mathbf{x})=\left(1, x_{1}, x_{2}, \ldots, x_{d}, x_{1}^{2}, x_{1} x_{2}, \ldots, x_{1} x_{d}, x_{2} x_{1}, x_{2}^{2}, \ldots, x_{2} x_{d}, \ldots, x_{d}^{2}\right)
Φ(x)=(1,x1,x2,…,xd,x12,x1x2,…,x1xd,x2x1,x22,…,x2xd,…,xd2)
我们得到:
K
Φ
(
x
,
x
′
)
=
1
+
(
x
T
x
′
)
+
(
x
T
x
′
)
2
K_{\Phi}\left(x, x^{\prime}\right)=1+\left(x^{T} x^{\prime}\right)+\left(x^{T} x^{\prime}\right)^{2}
KΦ(x,x′)=1+(xTx′)+(xTx′)2
这样看只需要计算低维空间的内积就行了。
常见的核函数有四种:
核函数 | 公式 | 备注 |
---|---|---|
线性核函数 | K ( x , x ′ ) = x ∙ x ′ K(x, x')=x \bullet x' K(x,x′)=x∙x′ | 其实就是线性可分的SVM |
多项式核函数 | K ( x , x ′ ) = ( γ x ∙ x ′ + r ) d K(x, x')=(\gamma x \bullet x'+r)^{d} K(x,x′)=(γx∙x′+r)d | 其中 γ , r , d \gamma,r,d γ,r,d都需要自己调参定义 |
高斯核函数 | K ( x , x ′ ) = exp ( − γ ∥ x − x ′ ∥ 2 ) K(x, x')=\exp\left(-\gamma\|x-x'\|^{2}\right) K(x,x′)=exp(−γ∥x−x′∥2) | 最主流的核函数,在SVM中也叫径向基核函数 |
Sigmoid核函数 | K ( x , x ′ ) = tanh ( γ x ⋅ x ′ + r ) K(x, x')=\tanh (\gamma x \cdot x'+r) K(x,x′)=tanh(γx⋅x′+r) | 也是线性不可分SVM常用的核函数之一 |
下图是高斯核函数在不同参数下的分类效果:
可以看到原来线性SVM下超平面是一条直线,映射到高维可以较自由地定义位置形状。
5. SMO算法
我们可以将SMO算法过程归纳如下:
- 初始化所有变量的解ai=0
- 选取优化变量a1,a2,解析求解这两个变量的二次规划问题,得到最优解a1’,a2’
- 验证,所有变量的解ai是否满足KKT条件,若不满足,继续step2,否则step4
- 得到a=a1’,a2’…
Refs
西瓜书
台大林轩田机器学习技法