支持向量机Support Vector Machine
数据集
T
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
.
.
.
,
(
x
N
,
y
N
)
}
T=\{(x_1,y_1),(x_2,y_2),...,(x_N,y_N)\}
T={(x1,y1),(x2,y2),...,(xN,yN)}
其
中
x
i
∈
R
n
,
y
i
=
±
1
其中x_i\in R^n,y_i=\pm 1
其中xi∈Rn,yi=±1
SVM通过找最大间隔或解等价的凸优化问题学得分离超平面
ω
∗
x
+
b
∗
\omega ^*x+b^*
ω∗x+b∗
决策函数
f
(
x
)
=
s
i
g
n
(
ω
∗
x
+
b
∗
)
f(x)=sign(\omega ^*x+b^*)
f(x)=sign(ω∗x+b∗)
函数间隔在成比例改变时,函数间隔会发生变化,但决策平面实际不变,所以引入几何间隔
几何间隔:可分数据集情况下样本点到超平面的最小距离
γ
=
min
i
=
1
,
.
.
.
,
N
2
y
i
(
ω
x
i
+
b
)
∥
ω
∥
=
2
∥
ω
∥
\gamma =\min_{i=1,...,N}\frac{2y_i(\omega x_i+b)}{\parallel \omega \parallel}=\frac{2}{\parallel \omega \parallel}
γ=i=1,...,Nmin∥ω∥2yi(ωxi+b)=∥ω∥2
几何间隔自带L2正则化,所以SVM本身有防止过拟合的能力.
SVM要求解约束优化问题使得在样本被正确分类的情况下,间隔最大
max
ω
,
b
γ
s
.
t
.
y
i
(
ω
x
i
+
b
)
≥
γ
\max_{\omega ,b}\gamma \\s.t. \ y_i(\omega x_i+b)\geq \gamma
ω,bmaxγs.t. yi(ωxi+b)≥γ
等价为
min
w
,
b
1
2
∥
ω
∥
2
\min_{w,b} \ \frac{1}{2}\parallel \omega \parallel ^2 \\
w,bmin 21∥ω∥2
s
.
t
.
y
i
(
ω
x
i
+
b
)
≥
1
s.t. \ y_i(\omega x_i+b)\geq 1
s.t. yi(ωxi+b)≥1
支持向量:样本点中与支持向量距离最近的实例,既满足上式中等号成立的样本点
问题的目标函数是二次函数,约束条件为线性约束,所以是凸优化问题。
考虑对偶问题原因:
1.更容易求解和计算,决策函数只与数据中支持向量有关,节约计算量
2.形式上便于引入核函数
要把把有约束的优化问题转化为无约束的优化问题求解,用拉格朗日乘数法,有
L
(
ω
,
b
,
α
⃗
)
=
1
2
∥
ω
∥
2
−
∑
i
=
1
N
α
i
y
i
(
ω
x
i
+
b
)
+
∑
i
=
1
N
α
i
\mathcal{L}(\omega,b, \vec{\alpha})=\frac{1}{2}\parallel \omega \parallel^2-\sum_{i=1}^{N}\alpha _iy_i(\omega x_i+b)+\sum_{i=1}^{N}\alpha_i
L(ω,b,α)=21∥ω∥2−i=1∑Nαiyi(ωxi+b)+i=1∑Nαi
其中
α
⃗
=
[
α
1
,
α
2
,
.
.
.
,
α
n
]
为
L
a
g
r
a
n
g
e
因
子
\vec{\alpha}=[\alpha _1,\alpha _2,...,\alpha_n]为Lagrange因子
α=[α1,α2,...,αn]为Lagrange因子
要解决
max
α
⃗
min
ω
,
b
L
(
ω
,
b
,
α
⃗
)
\max_{\vec{\alpha}}\min_{\omega,b}\mathcal{L}(\omega,b, \vec{\alpha})
αmaxω,bminL(ω,b,α)
经过推导
决策函数变为
f
(
x
)
=
s
i
g
n
(
∑
i
=
1
N
α
i
∗
y
i
(
x
⋅
x
i
)
+
b
∗
)
f(x)=sign(\sum_{i=1}^{N}\alpha_i^*y_i(x\cdot x_i)+b^*)
f(x)=sign(i=1∑Nαi∗yi(x⋅xi)+b∗)
此时决策函数与内积有关
第二种解决方法:
引入损失函数hinge loss折页损失
J
=
∑
i
=
1
N
m
a
x
(
0
,
[
1
−
y
i
(
ω
x
i
+
b
)
]
)
+
λ
∥
ω
∥
2
\mathscr{J}=\sum_{i=1}^{N}max(0,[1-y_i(\omega x_i+b)])+\lambda\parallel\omega\parallel^2
J=i=1∑Nmax(0,[1−yi(ωxi+b)])+λ∥ω∥2
可用梯度下降法直接进行求解
不可分数据集时
数据集不可分时,加入松弛条件 ξ i ≥ 0 , y i ( ω x i + b ) ≥ 1 − ξ i \xi_i\geq0,\ y_i(\omega x_i+b)\geq1-\xi_i ξi≥0, yi(ωxi+b)≥1−ξi
目标函数变为 1 2 ∥ ω ∥ 2 + C ∑ i = 1 N ξ i \frac{1}{2}\parallel\omega\parallel^2+C\sum_{i=1}^{N}\xi_i 21∥ω∥2+C∑i=1Nξi
核函数kernel function
数据集不可分时,将数据映射到高维空间中,就可能可分
映射
ϕ
(
x
)
\phi (x)
ϕ(x)将
x
x
x映射到高维空间中,核函数有如下性质
K
(
x
,
z
)
=
ϕ
(
x
)
⋅
ϕ
(
z
)
K(x,z)=\phi(x)\cdot\phi(z)
K(x,z)=ϕ(x)⋅ϕ(z)
即可通过核函数直接求得高维空间中的内积。
任意半正定的
R
n
∗
R
n
−
>
R
R^n*R^n->R
Rn∗Rn−>R的映射,只要对特征向量空间满足对称半正定,都可以作为核函数(Mercer’s Theorem)。至于具体的升维方式不重要
此时目标函数为
W
(
x
)
=
1
2
∑
i
=
1
N
∑
i
=
1
N
α
i
α
j
y
i
y
j
K
(
x
i
,
x
j
)
−
∑
i
=
1
N
α
i
W(x)=\frac{1}{2}\sum_{i=1}^N\sum_{i=1}^N\alpha_i\alpha_jy_iy_jK(x_i,x_j)-\sum_{i=1}^N\alpha_i
W(x)=21i=1∑Ni=1∑NαiαjyiyjK(xi,xj)−i=1∑Nαi
决策函数为
f
(
x
)
=
s
i
g
n
(
∑
i
=
1
N
α
i
∗
y
i
K
(
x
i
,
x
)
+
b
∗
)
f(x)=sign(\sum_{i=1}^N\alpha_i^*y_iK(x_i,x)+b^*)
f(x)=sign(i=1∑Nαi∗yiK(xi,x)+b∗)
使用高斯核函数时(最常用),由于高斯核函数考察的是相对距离的大小,所以需要做归一化操作。核函数的选取一般采取结果导向。特征纬度很高的情况下,采取线性核函数即可。
多分类问题
处理多分类问题时,一般有两种策略
1.one-against-all
一类为正集,其余所有为负即,需训练n个分类器
可能出现数据偏斜问题(SVM对数据集不平衡不是十分敏感)
2.one-against-one
任意两个类别训练出一个分类器,需
n
(
n
−
1
)
2
\frac{n(n-1)}{2}
2n(n−1)个分类器,最后结果投票产生
3.层次支持向量机(H-SVMs)
4.无环图SVM(Directed Acyclic Graph SVMs,简称DAG-SVMs)
KKT条件
条件极值问题等式约束时用拉格朗日乘数法求解,不等式约束时用KKT(Karush Kuhn Tucker)条件求解
考虑n个不等式的条件极值问题
min
x
f
(
x
)
s
.
t
.
g
k
(
x
)
≤
0
,
k
=
0
,
1
,
2
,
.
.
.
,
n
\min_xf(x) \\ s.t. \ \ \ g_k(x)\leq0,k=0,1,2,...,n
xminf(x)s.t. gk(x)≤0,k=0,1,2,...,n
转化为
L
(
x
,
μ
)
=
f
(
x
)
+
∑
k
=
1
n
μ
k
g
k
(
x
)
u
k
≥
0
g
k
(
x
)
≤
0
μ
k
g
k
(
x
)
≤
0
(
1
)
L(x,\mu) = f(x)+\sum_{k=1}^n\mu_k \ g_k(x) \\u_k\geq0\\ g_k(x) \leq0 \\ \mu_kg_k(x)\leq0 \ \ \ \ \ \ \ \ \ \ \ \ \ (1)
L(x,μ)=f(x)+k=1∑nμk gk(x)uk≥0gk(x)≤0μkgk(x)≤0 (1)
其中(1)式为互补松弛条件
当
x
x
x同时满足
∂
L
∂
x
=
0
\frac{\partial L}{\partial x}=0
∂x∂L=0
时,
f
(
x
)
f(x)
f(x)取极值
KKT条件是拉格朗日乘数法在不等式条件下的推广。
若满足KKT条件,则求极值顺序可以调换
min
w
,
b
f
(
x
)
=
min
w
,
b
max
α
i
L
(
w
,
b
,
α
)
=
max
α
i
min
w
,
b
L
(
w
,
b
,
α
)
\min_{w,b}f(x) = \min_{w,b}\max_{\alpha_i}L(w,b,\alpha) = \max_{\alpha_i}\min_{w,b}L(w,b,\alpha)
w,bminf(x)=w,bminαimaxL(w,b,α)=αimaxw,bminL(w,b,α)
L
L
L先对
w
,
b
w,b
w,b求极值,再对
α
i
\alpha_i
αi 求极值,即对
w
,
b
w,b
w,b求偏导等于0
得到
w
,
b
w,b
w,b与
α
i
,
x
i
,
y
i
\alpha_i,x_i,y_i
αi,xi,yi的关系
L
(
w
,
b
,
α
)
=
1
2
∥
w
∥
2
−
∑
i
=
1
m
α
i
[
y
i
(
w
T
x
+
b
)
−
1
]
L(w,b,\alpha)=\frac{1}{2}\|w\|^2-\sum_{i=1}^m\alpha_i[y_i(w^Tx+b)-1]
L(w,b,α)=21∥w∥2−i=1∑mαi[yi(wTx+b)−1]
∂
L
∂
w
=
w
−
∑
i
=
1
m
α
i
y
i
x
i
=
0
∂
L
∂
b
=
∑
i
=
1
m
α
i
y
i
=
0
\frac{\partial{L}}{\partial w}= w-\sum_{i=1}^m\alpha_iy_ix_i=0 \\ \frac{\partial{L}}{\partial b}= \sum_{i=1}^m\alpha_iy_i=0
∂w∂L=w−i=1∑mαiyixi=0∂b∂L=i=1∑mαiyi=0
将关系带入
L
L
L
可以消去
w
,
b
w,b
w,b同时添加约束条件
∑
i
=
1
m
α
i
y
i
=
0
\sum{}_{i=1}^m\alpha_iy_i=0
∑i=1mαiyi=0
整理得
max
α
L
(
α
)
=
∑
i
=
1
m
α
i
−
1
2
∑
i
=
1
m
∑
j
=
1
m
α
i
α
j
y
i
y
j
x
i
T
x
j
\max_\alpha L(\alpha)=\sum_{i=1}^m\alpha_i-\frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\alpha_i\alpha_jy_iy_jx_i^Tx_j
αmaxL(α)=i=1∑mαi−21i=1∑mj=1∑mαiαjyiyjxiTxj
此时只要在KKT即
∑
i
=
1
m
α
i
y
i
=
0
\sum{}_{i=1}^m\alpha_iy_i=0
∑i=1mαiyi=0的条件下优化
α
i
\alpha_i
αi上式即可求得SVM的解,再通过
α
i
\alpha_i
αi求解出
w
,
b
w,b
w,b
w
=
∑
i
=
1
m
α
i
y
i
x
i
w=\sum_{i=1}^m\alpha_iy_ix_i
w=∑i=1mαiyixi
再由互补松弛条件
α
i
(
1
−
y
i
(
w
T
x
+
b
)
)
=
0
\alpha_i(1-y_i(w^Tx+b))=0
αi(1−yi(wTx+b))=0,
α
i
\alpha_i
αi不为0时,即可通过支持向量求出
b
i
b_i
bi,当数据集严格可分时,所有
b
i
b_i
bi的值都相同,不可分时,可取所有
b
i
b_i
bi的平均值。
线性不可分数据集
对于线性不可分数据集,约束条件相互矛盾,没有解空间。此时需要在约束条件中引入松弛因子。将原本的约束条件
y
i
(
w
T
x
+
b
)
≥
1
y_i(w^Tx+b)\geq1
yi(wTx+b)≥1,改为
y
i
(
w
T
x
+
b
)
≥
1
−
ξ
i
y_i(w^Tx+b)\geq1-\xi_i
yi(wTx+b)≥1−ξi,即点到决策面的距离不一定绝对大于间隔,可能小于间隔或者分类错误。同时,我们想让松弛因子尽可能的小,从而时更多的点能满足一般的条件,则此时的优化问题变为
min
1
2
∥
w
∥
2
+
C
∑
i
=
1
m
ξ
s
.
t
.
    
y
i
(
w
T
x
i
+
b
)
≥
1
−
ξ
i
    
(
i
=
1
,
2
,
.
.
.
m
)
ξ
i
≥
0
\min \frac{1}{2}\|w\|^2+C\sum_{i=1}^m\xi \\ s.t. \;\; y_i(w^Tx_i + b) \geq 1 - \xi_i \;\;(i =1,2,...m)\\ \xi_i\geq0
min21∥w∥2+Ci=1∑mξs.t.yi(wTxi+b)≥1−ξi(i=1,2,...m)ξi≥0
C
C
C为超参数,控制正则化,越大模型对异常点的忍耐越小,需要调参。
求解
依然通过KKT条件求解,此时问题有两组不等式约束,引入两组拉格朗日因子
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\limits_{i=1}^{m}\xi_i - \sum\limits_{i=1}^{m}\alpha_i[y_i(w^Tx_i + b) - 1 + \xi_i] - \sum\limits_{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
同样,先优化原本的变量,再优化乘数因子
min
w
,
b
,
ξ
max
α
i
,
μ
i
L
(
w
,
b
,
α
,
ξ
,
μ
)
=
max
α
i
,
μ
i
min
w
,
b
,
ξ
L
(
w
,
b
,
α
,
ξ
,
μ
)
\min_{w,b,\xi}\max_{\alpha_i , \mu_i } L(w,b,\alpha, \xi,\mu)=\max_{\alpha_i , \mu_i }\min_{w,b,\xi} L(w,b,\alpha, \xi,\mu)
w,b,ξminαi,μimaxL(w,b,α,ξ,μ)=αi,μimaxw,b,ξminL(w,b,α,ξ,μ)
求偏导等于0,得到
∂
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
\frac{\partial L}{\partial w} = 0 \;\Rightarrow w = \sum\limits_{i=1}^{m}\alpha_iy_ix_i \\ \frac{\partial L}{\partial b} = 0 \;\Rightarrow \sum\limits_{i=1}^{m}\alpha_iy_i = 0 \\ \frac{\partial L}{\partial \xi} = 0 \;\Rightarrow C- \alpha_i - \mu_i = 0
∂w∂L=0⇒w=i=1∑mαiyixi∂b∂L=0⇒i=1∑mαiyi=0∂ξ∂L=0⇒C−αi−μi=0
消去
w
,
b
,
μ
i
w,b,\mu_i
w,b,μi,忽略常数项
C
C
C,得到
L
(
α
)
=
∑
i
=
1
m
α
i
−
1
2
∑
i
=
1
m
∑
j
=
1
m
α
i
α
j
y
i
y
j
x
i
T
x
j
L(\alpha) = \sum_{i=1}^m\alpha_i-\frac{1}{2}\sum_{i=1}^m\sum_{j=1}^m\alpha_i\alpha_jy_iy_jx_i^Tx_j
L(α)=i=1∑mαi−21i=1∑mj=1∑mαiαjyiyjxiTxj
可见优化函数和之前没有正则项时相同,只是多了约束条件
C
−
α
i
−
μ
i
=
0
C-\alpha_i-\mu_i=0
C−αi−μi=0,
μ
i
\mu_i
μi只有约束条件
μ
i
≥
0
\mu_i\geq0
μi≥0,所以约束也等价于
0
≤
α
i
≤
C
0\leq\alpha_i\leq C
0≤αi≤C
此时模型的支持向量情况较为复杂,只要
α
i
>
0
\alpha_i >0
αi>0,就是支持向量,包括各种异常点。