博客园相关内容值得一看。 S V M SVM SVM模型想要找到一个最鲁棒(即某些点更难划分之后结果仍然不变)的超平面来划分两类样本,当训练样本线性可分时,通过硬间隔最大化找到线性可分支持向量机;当训练样本近似线性可分时,通过软间隔最大化可以找到线性支持向量机;当训练样本线性不可分时,通过引入核技巧及软间隔最大化可以找到非线性支持向量机,即在高维空间中找线性支持向量机。假设标签是 + 1 / − 1 +1/-1 +1/−1,超平面是 w T x + b = 0 w^Tx+b=0 wTx+b=0,给定数据 x x x,决策函数是 s i g n ( w T x + b ) sign(w^Tx+b) sign(wTx+b),那么 y i ( w T x i + b ) > 0 y_i(w^Tx_i+b)>0 yi(wTxi+b)>0表示分类正确, x i x_i xi到平面的距离是 ∣ w T x + b ∣ ∣ ∣ w ∣ ∣ \frac{|w^Tx+b|}{||w||} ∣∣w∣∣∣wTx+b∣,当 ∣ ∣ w ∣ ∣ ||w|| ∣∣w∣∣确定时, y i ( w T x i + b ) y_i(w^Tx_i+b) yi(wTxi+b)还表示了 x i x_i xi到超平面的相对距离,这个值越大表示 x i x_i xi距离最优超平面 w T x + b = 0 w^Tx+b=0 wTx+b=0的距离越远,分类更确信,定义样本 x i x_i xi的函数间隔是 γ i ^ = y i ( w T x i + b ) \hat{\gamma_i}=y_i(w^Tx_i+b) γi^=yi(wTxi+b),数据集的函数间隔是 γ ^ = m i n i γ i ^ \hat{\gamma}=min_i\hat{\gamma_i} γ^=miniγi^,样本 x i x_i xi的几何间隔是 γ i = y i ( w T x i + b ) ∣ ∣ w ∣ ∣ \gamma_i=\frac{y_i(w^Tx_i+b)}{||w||} γi=∣∣w∣∣yi(wTxi+b),数据集的几何间隔是 γ = m i n i γ i {\gamma}=min_i{\gamma_i} γ=miniγi,它们的关系是 γ = γ ^ ∣ ∣ w ∣ ∣ \gamma=\frac{\hat{\gamma}}{||w||} γ=∣∣w∣∣γ^,当 ∣ ∣ w ∣ ∣ = 1 ||w||=1 ∣∣w∣∣=1时两者相等。
点 ( x , y ) (x,y) (x,y)到线 a x + b y + c = 0 ax+by+c=0 ax+by+c=0的距离是 ∣ a x + b y + c ∣ a 2 + b 2 \frac{|ax+by+c|}{\sqrt{a^2+b^2}} a2+b2∣ax+by+c∣,即 x x x到 w T x + b = 0 w^Tx+b=0 wTx+b=0的距离是 ∣ w T x + b ∣ ∣ ∣ w ∣ ∣ \frac{|w^Tx+b|}{||w||} ∣∣w∣∣∣wTx+b∣,推导过程:
- 直线上的向量以及与之共线的向量叫做直线的方向向量,任取直线上两点,求它们两点组成的向量就是方向向量。这里取 ( 0 , − c b ) (0,-\frac{c}{b}) (0,−bc)和 ( − c a , 0 ) (-\frac{c}{a},0) (−ac,0),它们相减就是方向向量 ( − c a , c b ) (-\frac{c}{a},\frac{c}{b}) (−ac,bc),同乘 a b c \frac{ab}{c} cab不改变向量的方向,得到 ( − b , a ) (-b,a) (−b,a)
- 直线的法向量是与直线方向向量正交的向量,容易得到是 ( a , b ) (a,b) (a,b),单位法向量即 1 a 2 + b 2 ( a , b ) \frac{1}{\sqrt{a^2+b^2}}(a,b) a2+b21(a,b)
- 向量 a a a在向量 b b b上的投影是 ∣ ∣ a ∣ ∣ c o s θ ||a||cos\theta ∣∣a∣∣cosθ,即 a T b ∣ ∣ b ∣ ∣ \frac{a^Tb}{||b||} ∣∣b∣∣aTb
- 在直线上任取一点,求点 ( x , y ) (x,y) (x,y)与其组成的向量在单位法向量上的投影即是点到直线的距离。这里取 ( 0 , − c b ) (0,-\frac{c}{b}) (0,−bc), ( x , y + c b ) (x,y+\frac{c}{b}) (x,y+bc)在单位法向量 1 a 2 + b 2 ( a , b ) \frac{1}{\sqrt{a^2+b^2}}(a,b) a2+b21(a,b)上的投影是 a T b ∣ ∣ b ∣ ∣ = 1 a 2 + b 2 ( a x + b y + c ) 1 = ∣ a x + b y + c ∣ a 2 + b 2 \frac{a^Tb}{||b||}=\frac{1}{\sqrt{a^2+b^2}}\frac{(ax+by+c)}{1}=\frac{|ax+by+c|}{\sqrt{a^2+b^2}} ∣∣b∣∣aTb=a2+b211(ax+by+c)=a2+b2∣ax+by+c∣
- 上面的推导过程可以推广到 n n n维空间中,即 x x x到 w T x + b = 0 w^Tx+b=0 wTx+b=0的距离是 ∣ w T x + b ∣ ∣ ∣ w ∣ ∣ \frac{|w^Tx+b|}{||w||} ∣∣w∣∣∣wTx+b∣
硬间隔最大化想要找到几何间隔最大化的超平面:
m
a
x
w
,
b
γ
s
.
t
.
y
i
(
w
T
x
i
+
b
)
∣
∣
w
∣
∣
≥
γ
,
i
=
1
,
2
,
…
,
N
max_{w,b}\ \gamma\\ s.t.\ \frac{y_i(w^Tx_i+b)}{||w||}\ge\gamma,i=1,2,\dots,N
maxw,b γs.t. ∣∣w∣∣yi(wTxi+b)≥γ,i=1,2,…,N
考虑几何间隔和函数间隔之间的关系,这个问题可以转化为:
m
a
x
w
,
b
γ
^
∣
∣
w
∣
∣
s
.
t
.
y
i
(
w
T
x
i
+
b
)
≥
γ
^
,
i
=
1
,
2
,
…
,
N
max_{w,b}\ \frac{\hat{\gamma}}{||w||}\\s.t.\ y_i(w^Tx_i+b)\ge\hat{\gamma},i=1,2,\dots,N
maxw,b ∣∣w∣∣γ^s.t. yi(wTxi+b)≥γ^,i=1,2,…,N
函数间隔
γ
^
\hat{\gamma}
γ^的取值不影响最优化问题的解,这里固定为
1
1
1,最优化
1
∣
∣
w
∣
∣
\frac{1}{||w||}
∣∣w∣∣1和最优化
1
2
∣
∣
w
∣
∣
2
\frac{1}{2}||w||^2
21∣∣w∣∣2等价,于是得到线性可分支持向量机基本型,这是一个凸二次规划问题:
m a x w , b 1 2 ∣ ∣ w ∣ ∣ 2 s . t . y i ( w T x i + b ) ≥ 1 , i = 1 , 2 , … , N max_{w,b}\ \frac{1}{2}||w||^2\\s.t.\ y_i(w^Tx_i+b)\ge1,i=1,2,\dots,N maxw,b 21∣∣w∣∣2s.t. yi(wTxi+b)≥1,i=1,2,…,N
《统计学习方法》中提到函数间隔 γ ^ \hat{\gamma} γ^的取值不影响最优化问题的解,这里有点模糊
支持向量是训练集中与超平面最近的样本点,它使得约束条件的等号成立。正例支持向量使得
w
T
x
i
+
b
=
+
1
w^Tx_i+b=+1
wTxi+b=+1,反例支持向量使得
w
T
x
i
+
b
=
−
1
w^Tx_i+b=-1
wTxi+b=−1,这两个点之间的距离
2
∣
∣
w
∣
∣
\frac{2}{||w||}
∣∣w∣∣2称为间隔,最优超平面的解只与这些支持向量相关,去掉其他点解不会发生变化,这也可以从西瓜书124页
K
K
T
KKT
KKT条件的解释中得到(
α
i
>
0
\alpha_i>0
αi>0的那些样本是支持向量),引入拉格朗日乘子之后,原问题转化对偶问题:
m
a
x
α
∑
i
=
1
N
α
i
−
1
2
∑
i
=
1
N
∑
j
=
1
N
α
i
α
j
y
i
y
j
x
i
T
x
j
s
.
t
.
∑
i
=
1
N
α
i
y
i
=
0
α
i
≥
0
,
i
=
1
,
2
,
…
,
N
max_\alpha\ \sum_{i=1}^N\alpha_i-\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_iy_jx^T_ix_j\\ s.t.\ \sum_{i=1}^N\alpha_iy_i=0\\ \alpha_i\ge0,i=1,2,\dots,N
maxα i=1∑Nαi−21i=1∑Nj=1∑NαiαjyiyjxiTxjs.t. i=1∑Nαiyi=0αi≥0,i=1,2,…,N
通用的二次规划算法求解这个最优化问题时,开销与训练样本数成正比,为了避开这个问题,提出使用 S M O SMO SMO算法求解最优 a l p h a alpha alpha,再用 w = ∑ α i y i x i w=\sum \alpha_iy_ix_i w=∑αiyixi和 b = 1 ∣ S ∣ ∑ s ∈ S ( y s − ∑ i ∈ S α i y i x i T x s ) b=\frac{1}{|S|}\sum_{s\in S}(y_s-\sum_{i\in S}\alpha_iy_ix^T_ix_s) b=∣S∣1∑s∈S(ys−∑i∈SαiyixiTxs)( S = { i ∣ α i > 0 , i = 1 , 2 , … , N } S=\{i|\alpha_i>0,i=1,2,\dots,N\} S={i∣αi>0,i=1,2,…,N},即支持向量的下标集合)得到分类模型 s i g n ( w T x + b ) sign(w^Tx+b) sign(wTx+b)
当样本中存在一些特异点,去掉这些特异点后剩下的样本大部分是线性可分的,这样的问题是近似可分的问题,为了解决这些问题对每个样本点
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi)引入松弛变量
ξ
i
\xi_i
ξi,允许样本点满足更松弛的条件
y
i
(
w
T
x
i
+
b
)
≥
1
−
ξ
i
y_i(w^Tx_i+b)\ge1-\xi_i
yi(wTxi+b)≥1−ξi,但同时在优化目标上增加惩罚
ξ
i
\xi_i
ξi,并有参数
C
C
C调节,线性不可分的线性支持向量机学习问题就转化成了下面的原始问题:
m
a
x
w
,
b
1
2
∣
∣
w
∣
∣
2
+
C
∑
i
=
1
N
ξ
i
s
.
t
.
y
i
(
w
T
x
i
+
b
)
≥
1
−
ξ
i
,
i
=
1
,
2
,
…
,
N
ξ
i
≥
0
,
i
=
1
,
2
,
…
,
N
max_{w,b}\ \frac{1}{2}||w||^2+C\sum_{i=1}^{N}\xi_i \\s.t.\ y_i(w^Tx_i+b)\ge1-\xi_i,i=1,2,\dots,N\\ \xi_i\ge0,i=1,2,\dots,N
maxw,b 21∣∣w∣∣2+Ci=1∑Nξis.t. yi(wTxi+b)≥1−ξi,i=1,2,…,Nξi≥0,i=1,2,…,N
同样引入拉格朗日乘子后转化为对偶问题:
m
a
x
α
∑
i
=
1
N
α
i
−
1
2
∑
i
=
1
N
∑
j
=
1
N
α
i
α
j
y
i
y
j
x
i
T
x
j
s
.
t
.
∑
i
=
1
N
α
i
y
i
=
0
0
≤
α
i
≤
C
,
i
=
1
,
2
,
…
,
N
max_\alpha\ \sum_{i=1}^N\alpha_i-\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_iy_jx^T_ix_j\\ s.t.\ \sum_{i=1}^N\alpha_iy_i=0\\ 0\le\alpha_i\le C,i=1,2,\dots,N
maxα i=1∑Nαi−21i=1∑Nj=1∑NαiαjyiyjxiTxjs.t. i=1∑Nαiyi=00≤αi≤C,i=1,2,…,N
支持向量的分析也可以看这里,线性支持向量机的问题还有另一种解释是最小化目标函数:
∑
i
=
1
N
[
1
−
y
i
(
w
T
x
i
+
b
)
]
+
+
λ
∣
∣
w
∣
∣
2
[
z
]
+
=
m
a
x
(
z
,
0
)
\sum_{i=1}^N[1-y_i(w^Tx_i+b)]_++\lambda ||w||^2\\ [z]_+=max(z,0)
i=1∑N[1−yi(wTxi+b)]++λ∣∣w∣∣2[z]+=max(z,0)
第一项是合页损失函数,是经验损失,第二项是正则化项。合页损失要求函数间隔大于
1
1
1时损失才为
0
0
0,否则损失是
1
−
y
i
(
w
T
x
i
+
b
)
1-y_i(w^Tx_i+b)
1−yi(wTxi+b),要求更高。
S
M
O
SMO
SMO算法每次选择两个
α
i
,
α
j
\alpha_i,\alpha_j
αi,αj来做优化,其他
N
−
2
N-2
N−2个
α
\alpha
α固定(只选择一个
α
i
\alpha_i
αi,固定其他
N
−
1
N-1
N−1个不可以,因为存在约束条件
∑
i
=
1
N
α
i
y
i
=
0
\sum_{i=1}^N\alpha_iy_i=0
∑i=1Nαiyi=0,其他
N
−
1
N-1
N−1个
α
\alpha
α可以导出剩下的一个),整体算法包括选择一个自由变量,再通过约束条件确定另一个,然后通过解析方法求解两个变量的二次规划问题,具体过程可以看这里,《机器学习实战》中简化版没有选择《统计机器学习》中提到的使
∣
E
1
−
E
2
∣
|E_1-E_2|
∣E1−E2∣最大的
α
2
\alpha_2
α2,在完整版中实现了《统计机器学习》提到的第二个变量的选择,以 optStruct 缓存了所有的
E
i
E_i
Ei值
当样本在某个空间中可用超曲面正确区分时,可以通过核技巧将原问题中的输入空间上的超曲面转换成特征空间中的超平面问题,使得分类器是的模型变为
f
(
x
)
=
s
i
g
n
(
w
T
ϕ
(
x
)
+
b
)
f(x)=sign(w^T\phi(x)+b)
f(x)=sign(wTϕ(x)+b),由于在求解对偶问题时需要计算
ϕ
T
(
x
)
ϕ
(
z
)
\phi^T(x)\phi(z)
ϕT(x)ϕ(z),通常很困难,因此为了避开这个障碍,使用核技巧,定义核函数
K
(
x
,
z
)
=
ϕ
T
(
x
)
ϕ
(
z
)
K(x,z)=\phi^T(x)\phi(z)
K(x,z)=ϕT(x)ϕ(z),其中
ϕ
(
x
)
\phi(x)
ϕ(x)就是映射函数,将输入空间映射到特征空间。引入适当核函数就可以学习非线性支持向量机,核函数的选择需要慎重考虑:
m
a
x
α
∑
i
=
1
N
α
i
−
1
2
∑
i
=
1
N
∑
j
=
1
N
α
i
α
j
y
i
y
j
K
(
x
i
,
x
j
)
s
.
t
.
∑
i
=
1
N
α
i
y
i
=
0
0
≤
α
i
≤
C
,
i
=
1
,
2
,
…
,
N
f
(
x
)
=
s
i
g
n
(
∑
i
=
1
N
α
i
y
i
K
(
x
,
x
i
)
+
b
)
max_\alpha\ \sum_{i=1}^N\alpha_i-\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_iy_jK(x_i,x_j)\\s.t.\ \sum_{i=1}^N\alpha_iy_i=0\\0\le\alpha_i\le C,i=1,2,\dots,N\\ f(x)=sign(\sum_{i=1}^N\alpha_iy_iK(x,x_i)+b)
maxα i=1∑Nαi−21i=1∑Nj=1∑NαiαjyiyjK(xi,xj)s.t. i=1∑Nαiyi=00≤αi≤C,i=1,2,…,Nf(x)=sign(i=1∑NαiyiK(x,xi)+b)
输入空间是实际的输入张成的空间,特征空间是模型实际学习所用的数据张成的空间
西瓜书中提到"有了 K ( x , z ) K(x,z) K(x,z)这样的函数,就不必直接取计算高维甚至无穷维特征空间的内积"不太理解,核函数本身的定义不是也是内积吗
支持向量回归可以看这