线性可分支持向量机与硬间隔最大化
线性可分支持向量机
输入空间为欧式空间或离散集合,特征空间为 欧式空间 或者 希尔伯特空间。线性可分支持向量机、线性支持向量机及非线性支持向量机的输入都由输入空间转换到特征空间,支持向量机的学习是在特征空间进行的。
假设给定一个特征空间上的训练数据集
T
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
…
,
(
x
n
,
y
n
)
}
T = \{(x_1,y_1), (x_2,y_2), \ldots ,(x_n,y_n)\}
T={(x1,y1),(x2,y2),…,(xn,yn)}
其中,
x
i
∈
X
=
R
n
,
y
i
∈
Y
=
{
+
1
,
−
1
}
,
i
=
1
,
2
,
…
,
N
x_i \in X = R^n,y_i \in Y=\{+1,-1\},i=1,2, \ldots ,N
xi∈X=Rn,yi∈Y={+1,−1},i=1,2,…,N,
x
i
x_i
xi为第i个特征向量。
y
i
y_i
yi为
x
i
x_i
xi的类标记,当
y
i
=
+
1
y_i=+1
yi=+1时,称
x
i
x_i
xi为正例;当
y
i
=
−
1
y_i=-1
yi=−1时,称
x
i
x_i
xi为负例。
学习的目标是在特征空间中找到一个分离超平面,能将实例分到不同的类,分离超平面对应于方程
w
⋅
x
+
b
=
0
w \cdot x + b = 0
w⋅x+b=0,它由法向量w和截距b决定,可由(w, b)来表示。
线性可分支持向量机:给定线性可分训练数据集,通过间隔最大化或等价地求解相应的凸二次规划问题学习得到的分离超平面为
w
∗
⋅
x
+
b
∗
=
0
w^* \cdot x+b^*=0
w∗⋅x+b∗=0
以及相应的分类决策函数
f
(
x
)
=
s
i
g
n
(
w
∗
⋅
x
+
b
∗
)
f\left(x\right)=sign\left(w^* \cdot x+b^*\right)
f(x)=sign(w∗⋅x+b∗)
称为线性可分支持向量机。
线性可分支持向量机对应着将两类数据正确划分并且间隔最大的直线,如下图所示:
函数间隔和几何间隔
一个点距离分离超平面的远近
∣
w
⋅
x
+
b
∣
\left \vert w \cdot x+b \right \vert
∣w⋅x+b∣可以表示分类预测的确信度,而
w
⋅
x
+
b
w \cdot x +b
w⋅x+b的符号与标记
y
y
y的符号是否一致能够表示分类的正确性,从而便有了函数间隔:
函数间隔:对于给定的训练数据集
T
T
T和超平面
(
w
,
b
)
\left (w,b\right )
(w,b),定义超平面
(
w
,
b
)
\left (w,b \right )
(w,b)关于样本点
(
x
i
,
y
i
)
\left (x_i,y_i \right )
(xi,yi)的函数间隔为
γ
^
i
=
y
i
(
w
⋅
x
+
b
)
\hat \gamma _i=y_i \left (w \cdot x+b \right )
γ^i=yi(w⋅x+b)
定义超平面关于训练数据集
T
T
T的函数间隔为超平面
(
w
,
b
)
\left (w,b \right )
(w,b)关于
T
T
T中所有样本点
(
x
i
,
y
i
)
\left (x_i,y_i \right )
(xi,yi)的函数间隔之最小值,即
γ
^
=
min
i
=
1
,
…
,
N
γ
^
i
\hat \gamma = \min_{i=1, \ldots ,N} \hat \gamma _i
γ^=i=1,…,Nminγ^i
只有函数间隔不够,只要成比例地改变
w
w
w和
b
b
b,如改为
2
w
2w
2w和
2
b
2b
2b,超平面未变,但函数间隔却成为原来的2倍。因此,通过规范化
w
w
w,
∥
w
∥
\left \Vert w \right \Vert
∥w∥,使得间隔确定,便引入了几何间隔的概念。
几何间隔:对应给定的训练数据集
T
T
T和超平面
(
w
,
b
)
\left (w,b \right )
(w,b),定义超平面
(
w
,
b
)
\left (w,b \right )
(w,b)关于样本点
(
x
i
,
y
i
)
\left (x_i,y_i \right )
(xi,yi)的几何间隔为
γ
i
=
y
i
(
w
∥
w
∥
⋅
x
i
+
b
∥
w
∥
)
\gamma _i = y_i \left ( \frac w{\left \Vert w \right \Vert} \cdot x_i+ \frac b{\left \Vert w \right \Vert}\right )
γi=yi(∥w∥w⋅xi+∥w∥b)
定义超平面
(
w
,
b
)
(w,b)
(w,b)关于训练数据集
T
T
T的几何间隔为超平面
(
w
,
b
)
(w,b)
(w,b)关于
T
T
T中所有样本点
(
x
i
,
y
i
)
\left (x_i, y_i \right )
(xi,yi)的几何间隔之最小值,即
γ
=
min
i
=
1
,
⋯
 
,
N
γ
i
\gamma = \min _{i=1, \cdots , N} \gamma _i
γ=i=1,⋯,Nminγi
间隔最大化
支持向量机学习的基本想法是求解能够正确划分训练数据集并且几何间隔最大的分离超平面。直观解释是:对训练数据集找到几何间隔最大的超平面意味着以充分大的确信度对训练数据集进行分类。
最大间隔分离超平面
最大间隔分离超平面可以表述为下面的约束最优化问题:
max
w
,
b
γ
s
.
t
.
y
i
(
w
∥
w
∥
⋅
x
i
+
b
∥
w
∥
)
⩾
γ
,
i
=
1
,
2
,
⋯
 
,
N
\begin{array}{ll} \max_{w,b} \quad & \gamma \\ s.t. \quad & y_i \left ( \frac w{\left \Vert w \right \Vert} \cdot x_i+ \frac b{\left \Vert w \right \Vert} \right ) \geqslant \gamma , \quad i = 1,2, \cdots ,N \end{array}
maxw,bs.t.γyi(∥w∥w⋅xi+∥w∥b)⩾γ,i=1,2,⋯,N
考虑几何间隔和函数间隔的关系,可将问题改写为:
max
w
,
b
γ
^
∥
w
∥
s
.
t
.
y
i
(
w
⋅
x
i
+
b
)
⩾
γ
^
,
i
=
1
,
2
,
⋯
 
,
N
\begin{array}{ll} \max_{w,b} \quad & \frac {\hat \gamma}{\left \Vert w \right \Vert} \\ s.t. \quad & y_i \left (w \cdot x_i+ b \right ) \geqslant \hat \gamma , \quad i = 1,2, \cdots ,N \end{array}
maxw,bs.t.∥w∥γ^yi(w⋅xi+b)⩾γ^,i=1,2,⋯,N
函数间隔
γ
^
\hat \gamma
γ^的取值不影响最优化问题的解。假设将
w
w
w和
b
b
b按比例改变为
λ
w
\lambda w
λw和
λ
b
\lambda b
λb,则函数间隔变为
λ
γ
^
\lambda \hat \gamma
λγ^。因此,可以取
γ
^
=
1
\hat \gamma = 1
γ^=1,注意到最大化
1
∥
w
∥
\frac 1{\Vert w \Vert}
∥w∥1和最小化
1
2
∥
w
∥
2
\frac 12 {\Vert w \Vert}^2
21∥w∥2是等价地,于是便得到:
线性可分支持向量机学习算法——最大间隔法
输入:线性可分训练数据集
T
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
⋯
 
,
(
x
n
,
y
n
)
}
T=\{(x_1,y_1),(x_2,y_2), \cdots , (x_n,y_n)\}
T={(x1,y1),(x2,y2),⋯,(xn,yn)},其中,
x
i
∈
X
=
R
n
x_i \in \Chi = R^n
xi∈X=Rn,
y
i
∈
Y
=
{
+
1
,
−
1
}
y_i \in Y=\{+1,-1\}
yi∈Y={+1,−1},
i
=
1
,
2
,
⋯
 
,
N
i=1,2, \cdots, N
i=1,2,⋯,N;
输出:最大间隔分离超平面和分类决策函数。
(1)构造并求解约束最优化问题:
min
w
,
b
1
2
∥
w
∥
2
s
.
t
.
y
i
(
w
⋅
x
+
b
)
−
1
⩾
0
,
i
=
1
,
2
,
⋯
 
,
N
\begin{array}{ll} \min_{w,b} \quad & \frac 12 {\Vert w \Vert}^2 \\ s.t. \quad & y_i(w \cdot x+b) -1 \geqslant 0, \quad i=1,2, \cdots ,N \end{array}
minw,bs.t.21∥w∥2yi(w⋅x+b)−1⩾0,i=1,2,⋯,N
求得最优解
w
∗
w^*
w∗,
b
∗
b^*
b∗。
(2)由此得到分离超平面:
w
∗
⋅
x
+
b
∗
=
0
w^* \cdot x + b^* = 0
w∗⋅x+b∗=0
分类决策函数
f
(
x
)
=
sign
(
w
∗
⋅
x
+
b
∗
)
f (x)= \text {sign}(w^* \cdot x+b^*)
f(x)=sign(w∗⋅x+b∗)
线性可分训练数据集的最大间隔分离超平面存在且唯一。
支持向量和间隔边界
在线性可分情况下,训练数据集的样本点中与分离超平面距离最近的样本点的实例称为支持向量,支持向量是使约束条件
y
i
(
w
⋅
x
i
+
b
)
−
1
=
0
y_i(w \cdot x_i+b)-1=0
yi(w⋅xi+b)−1=0等号成立的点。
从图中可以看到,在决定分离超平面时只有支持向量起作用,如果移动支持向量将改变所求的解;但是间隔边界以外移动其他实例点,甚至去掉这些点,解是不会改变的。所以,支持向量机由很少的“重要的”训练样本确定。
学习的对偶算法
根据前面的约束最优化问题,构建拉格朗日函数,引进拉格朗日乘子
α
i
≥
0
\alpha _i \geq 0
αi≥0,
i
=
1
,
2
,
⋯
 
,
N
i=1,2, \cdots , N
i=1,2,⋯,N,定义拉格朗日函数:
L
(
w
,
b
,
α
)
=
1
2
∥
w
∥
2
−
∑
i
=
1
N
α
i
y
i
(
w
⋅
x
i
+
b
)
+
∑
i
=
1
N
α
i
L \left (w,b, \alpha \right )= \frac12 {\Vert w \Vert}^2- \sum_{i=1}^N \alpha _i y_i(w \cdot x_i + b)+ \sum_{i=1}^N \alpha _i
L(w,b,α)=21∥w∥2−i=1∑Nαiyi(w⋅xi+b)+i=1∑Nαi根据拉格朗日对偶性,原始问题的对偶问题是极大极小问题:
max
α
min
w
,
b
L
(
w
,
b
,
α
)
\max _ \alpha \min _{w,b} L \left (w,b, \alpha \right)
αmaxw,bminL(w,b,α)
在线性可分情况下,原始最优化问题和对偶最优化问题的最优值相等,所以存在
w
∗
w^*
w∗,
α
∗
\alpha ^*
α∗,
b
∗
b^*
b∗,使
w
∗
,
b
∗
w^*,b^*
w∗,b∗是原始问题的解,
α
∗
\alpha ^*
α∗是对偶问题的解。
线性可分支持向量机学习算法:
输入:线性可分训练集
T
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
⋯
 
,
(
x
N
,
y
N
)
}
T=\{(x_1,y_1),(x_2,y_2), \cdots , (x_N,y_N)\}
T={(x1,y1),(x2,y2),⋯,(xN,yN)},其中
x
i
∈
X
=
R
n
,
y
i
∈
Y
=
{
−
1
,
+
1
}
,
i
=
1
,
2
,
⋯
 
,
N
x_i \in X=R^n, y_i \in Y = \{-1,+1\},i=1,2, \cdots ,N
xi∈X=Rn,yi∈Y={−1,+1},i=1,2,⋯,N;
输出:分离超平面和分离决策函数
(1)构造并求解约束最优化问题
min
α
1
2
∥
w
∥
2
s
.
t
.
∑
i
=
1
N
α
i
y
i
=
0
α
i
≥
0
,
,
i
=
1
,
2
,
⋯
 
,
N
\begin{array}{ll} \min _\alpha \quad & \frac 12 {\Vert w \Vert}^2 \\[2ex] s.t. \quad & \sum _{i=1}^N \alpha _i y_i=0 \\[2ex] & \alpha _i \geq 0, \quad ,i=1,2, \cdots ,N \end{array}
minαs.t.21∥w∥2∑i=1Nαiyi=0αi≥0,,i=1,2,⋯,N求得最优解
α
∗
=
(
α
1
∗
,
α
2
∗
,
⋯
 
,
α
N
∗
)
T
\alpha ^*=(\alpha_1^*, \alpha_2^*, \cdots , \alpha_N^*)^T
α∗=(α1∗,α2∗,⋯,αN∗)T。
(2)计算
w
∗
=
∑
i
=
1
N
α
i
∗
y
i
x
i
w^*= \sum_{i=1}^N \alpha_i^* y_i x_i
w∗=i=1∑Nαi∗yixi并选择
α
∗
\alpha^*
α∗的一个正分量
α
j
∗
≥
0
\alpha_j^* \ge 0
αj∗≥0,计算
b
∗
=
y
j
−
∑
i
=
1
N
α
i
∗
y
i
(
x
i
⋅
x
j
)
b^*=y_j- \sum_{i=1}^N \alpha_i^* y_i(x_i \cdot x_j)
b∗=yj−i=1∑Nαi∗yi(xi⋅xj)(3)求得分离超平面
w
∗
⋅
x
+
b
∗
=
0
w^* \cdot x+b^*=0
w∗⋅x+b∗=0分类决策函数:
f
(
x
)
=
s
i
g
n
(
w
∗
⋅
x
+
b
∗
)
f \left (x \right)= sign(w^* \cdot x + b^*)
f(x)=sign(w∗⋅x+b∗)
支持向量:将训练数据中对应
α
i
∗
≥
0
\alpha_i^* \ge 0
αi∗≥0的样本点
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi)的实例
x
i
∈
R
∗
x_i \in R^*
xi∈R∗称为支持向量。
由KKT的对偶互补条件
α
i
∗
(
y
i
(
w
∗
⋅
x
i
+
b
∗
)
−
1
)
=
0
,
i
=
1
,
2
,
⋯
 
,
N
\alpha_i^*(y_i(w^* \cdot x_i+b^*)-1)=0, \quad i=1,2, \cdots ,N
αi∗(yi(w∗⋅xi+b∗)−1)=0,i=1,2,⋯,N,对应
α
i
∗
≥
0
\alpha_i^* \ge 0
αi∗≥0的实例
x
i
x_i
xi,有
y
i
(
w
∗
⋅
x
i
+
b
∗
)
−
1
=
0
y_i(w^* \cdot x_i + b^*) -1=0
yi(w∗⋅xi+b∗)−1=0即
x
i
x_i
xi一定在间隔边界上。
线性支持向量机与软间隔最大化
线性支持向量机
线性可分问题的支持向量机学习方法,不适用线性不可分问题,因为不可分意味着不等式约束
y
i
(
w
⋅
x
+
b
)
≥
1
y_i(w \cdot x +b) \geq 1
yi(w⋅x+b)≥1并不能都成立。怎么修改才能适用线性不可分情况?可以修改硬间隔最大化,使其成为软间隔最大化。
线性不可分意味着某些样本点
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi)不能满足不等式约束。为了解决这个问题,可以对每个样本点
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi)引进一个松弛变量
ξ
i
≥
0
\xi_i \geq 0
ξi≥0,使函数间隔加上松弛变量大于等于1。这样,约束条件变为
y
i
(
w
⋅
x
i
+
b
)
≥
1
−
ξ
i
y_i(w \cdot x_i + b) \geq 1- \xi_i
yi(w⋅xi+b)≥1−ξi同时,对每个松弛变量
ξ
i
\xi_i
ξi,支付代价
ξ
i
\xi_i
ξi。目标函数由原来的
1
2
∥
w
∥
2
\frac12 {\Vert w \Vert}^2
21∥w∥2变成
1
2
∥
w
∥
2
+
C
∑
i
=
1
N
ξ
i
\frac 12 {\Vert w \Vert}^2 + C \sum_{i=1}^N \xi_i
21∥w∥2+Ci=1∑Nξi这里,
C
>
0
C \gt 0
C>0为惩罚参数,
C
C
C值大时对误分类的惩罚增大,
C
C
C值小时对误分类的惩罚减小。最小化目标函数包含两层含义:使
1
2
∥
w
∥
2
\frac12{\Vert w \Vert}^2
21∥w∥2尽量小即间隔尽量大,同时使误分类点的个数尽量小,
C
C
C是调和二者的系数。
线性支持向量机:对应给定的线性不可分的训练数据集,通过求解凸二次规划问题,即软间隔最大化问题,得到的分离超平面为
w
∗
⋅
x
+
b
∗
=
0
w^* \cdot x+b^*=0
w∗⋅x+b∗=0以及相应的分类决策函数
f
(
x
)
=
s
i
g
n
(
w
∗
⋅
x
+
b
∗
)
f \left (x \right ) = sign ( w^* \cdot x + b^*)
f(x)=sign(w∗⋅x+b∗)
线性支持向量机学习算法:
输入:训练数据集
T
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
⋯
 
,
(
x
N
,
y
N
)
}
T=\{(x_1,y_1),(x_2,y_2), \cdots , (x_N,y_N)\}
T={(x1,y1),(x2,y2),⋯,(xN,yN)},其中,
x
i
∈
X
=
R
n
,
y
i
∈
Y
=
{
+
1
,
−
1
}
,
 
i
=
1
,
2
,
⋯
 
,
N
x_i \in X=R^n, y_i \in Y = \{+1,-1\}, \, i=1,2, \cdots ,N
xi∈X=Rn,yi∈Y={+1,−1},i=1,2,⋯,N;
输出:分离超平面和分类决策函数
(1)选择惩罚参数
C
>
0
C \gt 0
C>0,构造并求解凸二次规划问题
min
α
1
2
∑
i
=
1
N
∑
j
=
1
N
α
i
α
j
y
i
y
j
(
x
i
⋅
x
j
)
−
∑
i
=
1
N
α
i
s
.
t
.
∑
i
=
1
N
α
i
y
i
=
0
0
≤
α
i
≤
C
,
,
i
=
1
,
2
,
⋯
 
,
N
\begin{array}{ll} \min _\alpha \quad & \frac12 \sum_{i=1}^N \sum_{j=1}^N \alpha_i \alpha_j y_i y_j (x_i \cdot x_j) - \sum_{i=1}^N \alpha_i \\[2ex] s.t. \quad & \sum _{i=1}^N \alpha _i y_i=0 \\[2ex] & 0 \leq \alpha _i \leq C, \quad ,i=1,2, \cdots ,N \end{array}
minαs.t.21∑i=1N∑j=1Nαiαjyiyj(xi⋅xj)−∑i=1Nαi∑i=1Nαiyi=00≤αi≤C,,i=1,2,⋯,N求得最优解
α
∗
=
(
α
1
∗
,
α
2
∗
,
⋯
 
,
α
N
∗
)
T
\alpha^*=(\alpha_1^*, \alpha_2^*, \cdots , \alpha_N^*)^T
α∗=(α1∗,α2∗,⋯,αN∗)T。
(2)计算
w
∗
=
∑
i
=
1
N
α
i
∗
y
i
x
i
w^*=\sum_{i=1}^N \alpha_i^* y_i x_i
w∗=∑i=1Nαi∗yixi
选择
α
∗
\alpha^*
α∗的一个分量
α
j
∗
\alpha_j^*
αj∗适合条件
0
<
α
<
C
0 \lt \alpha \lt C
0<α<C,计算
b
∗
=
y
j
−
∑
i
=
1
N
y
i
α
i
∗
(
x
i
⋅
x
j
)
b^*=y_j- \sum_{i=1}^N y_i \alpha_i^* (x_i \cdot x_j)
b∗=yj−i=1∑Nyiαi∗(xi⋅xj)(3)求得分离超平面
w
∗
⋅
x
+
b
∗
=
0
w^* \cdot x + b^*=0
w∗⋅x+b∗=0分类决策函数:
f
(
x
)
=
s
i
g
n
(
w
∗
⋅
x
+
b
∗
)
f \left (x \right )=sign(w^* \cdot x+b^*)
f(x)=sign(w∗⋅x+b∗)
支持向量
在求解最优化问题的过程中,
α
i
\alpha_i
αi、
C
C
C、
ξ
i
\xi_i
ξi、
μ
i
\mu_i
μi之间有如下关系:
C
−
α
i
−
μ
i
=
0
μ
i
ξ
i
=
0
α
i
(
y
i
(
w
⋅
x
i
+
b
)
−
1
+
ξ
i
)
=
0
\begin{array}{ll} C- \alpha_i- \mu_i = 0 \\[2ex] \mu_i \xi_i=0 \\[2ex] \alpha_i (y_i(w \cdot x_i + b)-1+ \xi_i)=0 \end{array}
C−αi−μi=0μiξi=0αi(yi(w⋅xi+b)−1+ξi)=0在线性不可分的情况下,对应于
α
i
∗
>
0
\alpha_i^* \gt 0
αi∗>0的样本点
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi)的实例
x
i
x_i
xi称为支持向量。
软间隔的支持向量,或者在间隔边界上,或者在间隔边界与分离超平面之间,或者在分离超平面误分类一侧。
根据上面的关系:
若
α
i
<
C
\alpha_i \lt C
αi<C,则
ξ
i
=
0
\xi_i = 0
ξi=0,支持向量
x
i
x_i
xi落在间隔边界上;
若
α
i
=
C
\alpha_i = C
αi=C,
0
<
ξ
i
<
1
0 \lt \xi_i \lt 1
0<ξi<1,则分类正确,支持向量
x
i
x_i
xi落在间隔边界与分离超平面之间;
若
α
i
=
C
\alpha_i = C
αi=C,
ξ
i
=
1
\xi_i = 1
ξi=1,则
x
i
x_i
xi落在分离超平面上;
若
α
i
=
C
\alpha_i = C
αi=C,
ξ
i
>
1
\xi_i \gt 1
ξi>1,则
x
i
x_i
xi位于超平面误分一侧。
合页损失函数
线性支持向量机学习还有另外一个解释,就是最小化以下目标函数:
∑
i
=
1
N
[
1
−
y
i
(
w
⋅
x
i
+
b
)
]
+
+
λ
∥
w
∥
2
\sum_{i=1}^N \left [ 1-y_i(w \cdot x_i +b)\right ]_+ + \lambda {\Vert w \Vert}^2
i=1∑N[1−yi(w⋅xi+b)]++λ∥w∥2线性支持向量机原始最优化问题:
min
w
,
b
,
ξ
1
2
∥
w
∥
2
+
C
∑
i
=
1
N
ξ
i
s
.
t
.
y
i
(
w
⋅
x
i
+
b
)
≥
1
−
ξ
i
,
i
=
1
,
2
,
⋯
 
,
N
ξ
i
≥
0
,
i
=
1
,
2
,
⋯
 
,
N
\begin{array}{ll} \min_{w,b, \xi} & \frac12 {\Vert w \Vert}^2 + C \sum_{i=1}^N \xi_i\\[2ex] s.t. & y_i(w \cdot x_i + b) \geq 1- \xi_i, \quad i=1,2, \cdots , N\\[2ex] & \xi_i \geq 0, \quad i=1,2, \cdots , N \end{array}
minw,b,ξs.t.21∥w∥2+C∑i=1Nξiyi(w⋅xi+b)≥1−ξi,i=1,2,⋯,Nξi≥0,i=1,2,⋯,N等价于最优化问题
min
w
,
b
∑
i
=
1
N
[
1
−
y
i
(
w
⋅
x
i
+
b
)
]
+
+
λ
∥
w
∥
2
\min_{w,b} \sum_{i=1}^N \left [ 1-y_i(w \cdot x_i +b)\right ]_+ + \lambda {\Vert w \Vert}^2
w,bmini=1∑N[1−yi(w⋅xi+b)]++λ∥w∥2合页损失函数,横轴是函数间隔
y
(
w
⋅
x
+
b
)
y(w \cdot x+b)
y(w⋅x+b),纵轴是损失。由于函数形状像一个合页,故名合页损失函数。
非线性支持向量机与核函数
核技巧
对给定训练数据集
T
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
⋯
 
,
(
x
N
,
y
N
)
}
T=\{(x_1,y_1),(x_2,y_2), \cdots , (x_N,y_N)\}
T={(x1,y1),(x2,y2),⋯,(xN,yN)},其中,实例
x
i
x_i
xi属于输入空间,
x
i
∈
X
=
R
n
x_i \in X=R^n
xi∈X=Rn,对应的标记有两类
y
i
∈
Y
=
{
+
1
,
−
1
}
y_i \in Y = \{+1,-1\}
yi∈Y={+1,−1},
i
=
1
,
2
,
⋯
 
,
N
i=1,2, \cdots , N
i=1,2,⋯,N。如果能用
R
n
R^n
Rn中的一个超曲面将正负例正确分开,则称这个问题为非线性可分问题。
非线性问题不好解,所以希望能用线性分类问题的方法解决这个问题。采取的方法是进行一个非线性变换,将非线性问题转换为线性问题来求解。
核函数:设
X
X
X是输入空间(欧式空间
R
n
R^n
Rn的子集或离散集合),又设
H
H
H为特征空间(希尔伯特空间),如果存在一个从
X
X
X到
H
H
H的映射
ϕ
(
x
)
:
X
→
H
\phi \left (x \right):X \to H
ϕ(x):X→H使得对所以
x
,
z
∈
X
x,z \in X
x,z∈X,函数
K
(
x
,
z
)
K(x,z)
K(x,z)满足条件
K
(
x
,
z
)
=
ϕ
(
x
)
⋅
ϕ
(
z
)
K(x,z)=\phi(x) \cdot \phi(z)
K(x,z)=ϕ(x)⋅ϕ(z)则称
K
(
x
,
z
)
K(x,z)
K(x,z)为核函数,
ϕ
(
x
)
\phi(x)
ϕ(x)为映射函数,式中
ϕ
(
x
)
⋅
ϕ
(
z
)
\phi(x) \cdot \phi(z)
ϕ(x)⋅ϕ(z)是
ϕ
(
x
)
\phi(x)
ϕ(x)和
ϕ
(
z
)
\phi(z)
ϕ(z)的内积。
我们注意到线性支持向量机中,无论是对偶问题的目标函数还是决策函数都只涉及输入实例与实例之间的内积
x
i
⋅
x
j
x_i \cdot x_j
xi⋅xj。用核函数
K
(
x
i
,
x
j
)
=
ϕ
(
x
i
)
⋅
ϕ
(
x
j
)
K(x_i,x_j)=\phi(x_i) \cdot \phi(x_j)
K(xi,xj)=ϕ(xi)⋅ϕ(xj)代替,对偶问题的目标函数变为:
W
(
α
)
=
1
2
∑
i
=
1
N
∑
i
=
1
N
α
i
α
j
y
i
y
j
K
(
x
i
,
x
j
)
−
∑
i
=
1
N
α
i
W(\alpha)=\frac12\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(α)=21i=1∑Ni=1∑NαiαjyiyjK(xi,xj)−i=1∑Nαi分类决策函数变为:
f
(
x
)
=
s
i
g
n
(
∑
i
=
1
N
s
α
i
∗
y
i
ϕ
(
x
i
)
⋅
ϕ
(
x
)
+
b
∗
)
=
s
i
g
n
(
∑
i
=
1
N
s
α
i
∗
y
i
K
(
x
i
,
x
)
+
b
∗
)
f(x)=sign \left (\sum_{i=1}^{N_s}\alpha_i^*y_i\phi(x_i) \cdot \phi(x) + b^*\right)=sign \left(\sum_{i=1}^{N_s}\alpha_i^*y_iK(x_i,x)+b^*\right)
f(x)=sign(i=1∑Nsαi∗yiϕ(xi)⋅ϕ(x)+b∗)=sign(i=1∑Nsαi∗yiK(xi,x)+b∗)这等价于经过映射函数
ϕ
\phi
ϕ将原来的输入空间变换到一个新的特征空间,将内积
x
i
⋅
x
j
x_i \cdot x_j
xi⋅xj变换为
ϕ
(
x
i
)
⋅
ϕ
(
x
j
)
\phi(x_i) \cdot \phi(x_j)
ϕ(xi)⋅ϕ(xj),在新的特征空间里从训练样本中学习线性支持向量机。学习是隐式地在特征空间进行的,不需要定义特征空间和映射函数。在实际中,往往依赖领域知识直接选择核函数,核函数选择的有效性需要通过实验验证。
常用核函数:高斯核函数是比较常用的,其他还有多项式核函数、字符串核函数。
高斯核函数:
K
(
x
,
z
)
=
e
x
p
(
−
∥
x
−
z
∥
2
2
δ
2
)
K(x,z)=exp\left(-\frac {{\Vert x-z \Vert}^2} {2\delta^2} \right)
K(x,z)=exp(−2δ2∥x−z∥2)对应的支持向量机是高斯径向基函数分类器,在此情形下分类决策函数为:
f
(
x
)
=
s
i
g
n
(
∑
i
=
1
N
s
α
i
∗
y
i
e
x
p
(
−
∥
x
−
x
i
∥
2
2
δ
2
)
+
b
∗
)
f(x)=sign\left(\sum_{i=1}^{N_s}\alpha_i^*y_iexp\left(-\frac {{\Vert x-x_i \Vert}^2}{2\delta^2}\right)+b^*\right)
f(x)=sign(i=1∑Nsαi∗yiexp(−2δ2∥x−xi∥2)+b∗)
非线性支持向量分类机
非线性支持向量机学习算法
输入:训练数据集
T
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
⋯
 
,
(
x
N
,
y
N
)
}
T=\{(x_1,y_1),(x_2,y_2), \cdots ,(x_N,y_N)\}
T={(x1,y1),(x2,y2),⋯,(xN,yN)},其中
x
i
∈
X
=
R
n
x_i \in X =R^n
xi∈X=Rn,
y
i
∈
Y
=
{
+
1
,
−
1
}
y_i \in Y=\{+1,-1\}
yi∈Y={+1,−1},
i
=
1
,
2
,
⋯
 
,
N
i=1,2, \cdots , N
i=1,2,⋯,N。
输出:分类决策函数。
(1)选取适当的核函数
K
(
x
,
z
)
K(x,z)
K(x,z)和适当的参数
C
C
C,构造并求解最优化问题
min
α
1
2
∑
i
=
1
N
∑
j
=
1
N
α
i
α
j
y
i
y
j
K
(
x
i
,
x
j
)
−
∑
i
=
1
N
α
i
s
.
t
.
∑
i
=
1
N
α
i
y
i
=
0
0
≤
α
i
≤
C
,
i
=
1
,
2
,
⋯
 
,
N
\begin{array}{ll} \min_\alpha & \frac12 \sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_iy_jK(x_i,x_j)-\sum_{i=1}^N\alpha_i\\[2ex] s.t. & \sum_{i=1}^N\alpha_iy_i=0\\[2ex] & 0 \leq \alpha_i \leq C, \quad i=1,2, \cdots , N \end{array}
minαs.t.21∑i=1N∑j=1NαiαjyiyjK(xi,xj)−∑i=1Nαi∑i=1Nαiyi=00≤αi≤C,i=1,2,⋯,N求最优解
α
∗
=
(
α
1
∗
,
α
1
∗
,
⋯
 
,
α
N
∗
)
\alpha^*=(\alpha_1^*, \alpha_1^*, \cdots , \alpha_N^*)
α∗=(α1∗,α1∗,⋯,αN∗)。
(2)选择
α
∗
\alpha^*
α∗的一个正分量
0
<
α
j
∗
<
C
0 \lt \alpha_j^* \lt C
0<αj∗<C,计算
b
∗
=
y
i
−
∑
i
=
1
N
α
i
∗
y
i
K
(
x
i
⋅
x
j
)
b^*=y_i-\sum_{i=1}^N\alpha_i^*y_iK(x_i \cdot x_j)
b∗=yi−i=1∑Nαi∗yiK(xi⋅xj)(3)构造决策函数:
f
(
x
)
=
s
i
g
n
(
∑
i
=
1
N
α
i
∗
y
i
K
(
x
⋅
x
i
)
+
b
∗
)
f(x)=sign \left(\sum_{i=1}^N\alpha_i^*y_iK(x \cdot x_i)+b^*\right)
f(x)=sign(i=1∑Nαi∗yiK(x⋅xi)+b∗)
序列最小最优化算法
SMO(sequential minimal optimization)算法是一种启发式算法,其基本思路4是:如果所有变量的解都满足此最优化问题的KKT条件,
α
i
=
0
  
⟺
  
y
i
g
(
x
i
)
⩾
1
0
<
α
i
<
C
  
⟺
  
y
i
g
(
x
i
)
=
1
α
i
=
C
  
⟺
  
y
i
g
(
x
i
)
⩽
1
\begin{array}{ll} \alpha_i=0 \iff y_ig(x_i) \geqslant 1 \\[2ex] 0 \lt \alpha_i \lt C \iff y_ig(x_i) =1\\[2ex] \alpha_i=C \iff y_ig(x_i) \leqslant 1 \end{array}
αi=0⟺yig(xi)⩾10<αi<C⟺yig(xi)=1αi=C⟺yig(xi)⩽1其中,
g
(
x
i
)
=
∑
j
=
1
N
α
i
y
i
K
(
x
i
,
x
j
)
+
b
g(x_i)=\sum_{j=1}^N\alpha_iy_iK(x_i,x_j)+b
g(xi)=∑j=1NαiyiK(xi,xj)+b,那么这个最优化问题的解就得到。选择两个变量,固定其他变量,针对这两个变量构建一个二次规划问题。这个二次规划问题关于这两个变量的解应该更接近原始二次规划问题的解,且可以通过解析方法求解,大大提高整个算法的计算速度。
子问题由两个变量,一个是违反KKT条件最严重的那一个,另一个由约束条件自动确定。
Plat SMO算法,有两层循环,外层循环用来选择第一个
α
i
\alpha_i
αi值,使用两种方式交替进行:第一种,遍历整个数据集,另一种在
0
<
α
i
<
C
0 \lt \alpha_i \lt C
0<αi<C中扫描。以此来查找第一个违反KKT条件最严重的
α
i
\alpha_i
αi。
判断是否违反:
if ((oS.labelMat[i] * Ei < -oS.tol) and (oS.alphas[i] < oS.C)) or\
((oS.labelMat[i] * Ei > oS.tol) and (oS.alphas[i] < 0)):
内层循环,用来选择 α j \alpha_j αj,选择的目标是使 ∣ E i − E j ∣ \lvert E_i-E_j \rvert ∣Ei−Ej∣最大