Step 1: 求解支持平面的最大距离
只考虑线性可分的情况,分割超平面
一边的数据点所对应的y全是-1 ,另一边所对应的y全是1:
这个超平面可以用分类函数
f
(
x
)
=
w
T
x
+
b
f(x)=w^Tx+b
f(x)=wTx+b表示,当f(x) 等于0的时候,x便是位于超平面上的点,而f(x)大于0的点对应 y=1 的数据点,f(x)小于0的点对应y=-1的点,如下图所示(虚线间隔边界上的点就是支持向量
):
在超平面f(x)确定的情况下,|w*x+b|能够表示点x到距离超平面的远近,而通过观察w*x+b的符号与类标记y的符号是否一致可判断分类是否正确
,所以,可以用(y*(w*x+b))的正负性来
判定或表示分类的正确性。于此,我们便引出了函数间隔的概念。
函数间隔(functional margin)
:
γ
^
=
y
f
(
x
)
=
y
(
w
T
x
+
b
)
\hat \gamma=yf(x)=y(w^Tx+b)
γ^=yf(x)=y(wTx+b)
但这样定义的函数间隔有问题,即如果成比例的改变w和b(如将它们改成2w和2b),则函数间隔的值f(x)却变成了原来的2倍(虽然此时超平面没有改变),所以只有函数间隔还远远不够。由此引出了几何间隔的概念。
几何间隔(geometrical margin)
:
γ
^
=
y
f
(
x
)
∣
∣
w
∣
∣
=
y
w
T
x
+
b
∣
∣
w
∣
∣
\hat \gamma=y\frac{f(x)}{||w||}=y\frac{w^Tx+b}{||w||}
γ^=y∣∣w∣∣f(x)=y∣∣w∣∣wTx+b
几何间隔就是函数间隔除以||w||,而且函数间隔y*(wx+b) = y*f(x)实际上就是|f(x)|,只是人为定义的一个间隔度量,而几何间隔|f(x)|/||w||才是直观上的点到超平面的距离。
在这里,数据集所有样本点(xi,yi)到超平面的几何间隔最小值则是超平面关于训练数据集的几何间隔
:
γ
^
=
m
i
n
γ
i
,
(
i
=
1
,
2
,
.
.
.
n
)
\hat \gamma=min \ \gamma_i, (i=1,2,...n)
γ^=min γi,(i=1,2,...n),我们要做的就是找到两个超平面,使得这两个超平面之间的距离最大。
假设目前还未引入“Kernel”,只考虑线性可分的情况。存在两个支持平面
γ
1
\gamma_1
γ1和
γ
2
\gamma_2
γ2:
{
γ
1
:
w
T
x
+
b
=
1
γ
2
:
w
T
x
+
b
=
−
1
\begin{cases} \gamma_1 : w^Tx+b=1\\ \gamma_2 : w^Tx+b=-1 \end{cases}
{γ1:wTx+b=1γ2:wTx+b=−1
那么就是要求解支持平面的最大距离
为:
m a x ( d = 2 ∣ ∣ w ∣ ∣ ) max(d=\frac{2}{||w||}) max(d=∣∣w∣∣2),并且受限于: { γ 1 : w T x ( i ) + b ≥ 1 , i f y ( i ) = 1 γ 2 : w T x ( i ) + b ≤ − 1 , i f y ( i ) = − 1 \begin{cases}\gamma_1 : w^Tx^{(i)}+b \geq 1, & if \ y^{(i)}=1\\ \gamma_2 : w^Tx^{(i)}+b \leq -1, & if \ y^{(i)}=-1\end{cases} {γ1:wTx(i)+b≥1,γ2:wTx(i)+b≤−1,if y(i)=1if y(i)=−1
注意这里的1和-1其实是为了化简而这样和分类类别对应取值的,不影响最终的结果。
Step 2: 将Step 1中求解支持平面最大距离的问题转化为凸优化问题
非凸函数,我们无法获得全局最优解的,只能获得局部最优解。
于是上面的求解问题转化为:
m i n w , b ( ∣ ∣ w ∣ ∣ 2 2 ) \mathop{min}\limits_{w,b} (\frac{||w||^2}{2}) w,bmin(2∣∣w∣∣2),并且受限于 y ( i ) ( w T x ( i ) + b ) ≥ 1 , i = 1 , 2 , . . . n y^{(i)}(w^Tx^{(i)}+b) \geq 1,i=1,2,...n y(i)(wTx(i)+b)≥1,i=1,2,...n
Step 3: 转化为拉格朗日函数
求Step 2中的凸优化问题时,可以利用拉格朗日(Lagrange)乘子法将有约束优化问题转换为无约束优化问题
。转换为如下式子(必须满足KKT条件
):
L ( w , b , α ) = 1 2 ∣ ∣ w ∣ ∣ 2 + ∑ i = 1 n α i ( 1 − y ( i ) ( w T x ( i ) + b ) ) , α i > 0 ( 3.1 ) L(w,b,\alpha)=\frac{1}{2}||w||^2+\sum_{i=1}^n \alpha_i(1-y^{(i)}(w^Tx^{(i)}+b)), \ \alpha_i>0 \ (3.1) L(w,b,α)=21∣∣w∣∣2+i=1∑nαi(1−y(i)(wTx(i)+b)), αi>0 (3.1)
说一下KKT条件:
设目标函数f(x),不等式约束为g(x),有的教程还会添加上等式约束条件h(x)。此时的约束优化问题描述如下:
则我们定义不等式约束下的拉格朗日函数L,则L表达式为:
求解上面的问题,我们同样可以使用等式约束条件的求解思路,对所有的参数进行求导,但是对于求解出的最优解,必须满足KKT条件(Karush-Kuhn-Tucker ):
(1) L(x, λ \lambda λ, v v v)对x求导为零;
(2)h(x) =0;
(3) λ \lambda λ*f(x) = 0;
求取这些等式之后就能得到候选最优值。其中第三个式子非常有趣,因为f(x)<=0,如果要满足这个等式,必须 λ = 0 \lambda=0 λ=0或者f(x)=0。KKT介绍完毕。
继续说我们之前要求的是 m i n w , b ( 1 2 ∣ ∣ w ∣ ∣ 2 ) \mathop{min}\limits_{w,b}(\frac{1}{2}||w||^2) w,bmin(21∣∣w∣∣2),实际就是要求 m i n w , b ( m a x α L ( w , b , α ) ) \mathop{min}\limits_{w,b}(\mathop{max}\limits_{\alpha} \ L(w,b,\alpha)) w,bmin(αmax L(w,b,α)),为什么呢?
【重点
】首先考虑如下两种情况:
- 满足受限条件,也就是 1 − y ( i ) ( w T x ( i ) + b ) ≤ 0 1-y^{(i)}(w^Tx^{(i)}+b) \leq 0 1−y(i)(wTx(i)+b)≤0,此时 α i ( 1 − y ( i ) ( w T x ( i ) + b ) ) ≤ 0 \alpha_i(1-y^{(i)}(w^Tx^{(i)}+b)) \leq0 αi(1−y(i)(wTx(i)+b))≤0,于是 m a x L ( w , b , α ) = 1 2 ∣ ∣ w ∣ ∣ 2 max \ L(w,b,\alpha)=\frac{1}{2}||w||^2 max L(w,b,α)=21∣∣w∣∣2
- 不满足受限条件,也就是 1 − y ( i ) ( w T x ( i ) + b ) ≥ 0 1-y^{(i)}(w^Tx^{(i)}+b) \geq 0 1−y(i)(wTx(i)+b)≥0,此时 α i ( 1 − y ( i ) ( w T x ( i ) + b ) ) ≥ 0 \alpha_i(1-y^{(i)}(w^Tx^{(i)}+b)) \geq0 αi(1−y(i)(wTx(i)+b))≥0,于是 m a x L ( w , b , α ) = ∞ max \ L(w,b,\alpha)=\infty max L(w,b,α)=∞
也就是 m a x L ( w , b , α ) max \ L(w,b,\alpha) max L(w,b,α)只有 ∞ \infty ∞和 1 2 ∣ ∣ w ∣ ∣ 2 \frac{1}{2}||w||^2 21∣∣w∣∣2这两种情况,于是 m i n ( m a x L ( w , b , α ) ) = m i n ( ∞ , 1 2 ∣ ∣ w ∣ ∣ 2 ) = m i n ( 1 2 ∣ ∣ w ∣ ∣ 2 ) min(max \ L(w,b,\alpha))=min(\infty,\frac{1}{2}||w||^2)=min(\frac{1}{2}||w||^2) min(max L(w,b,α))=min(∞,21∣∣w∣∣2)=min(21∣∣w∣∣2)。
Step 4: 将Step 3中问题化为其对偶问题
m i n w , b ( m a x α L ( w , b , α ) ) = m a x α ( m i n w , b L ( w , b , α ) ) \mathop{min}\limits_{w,b}(\mathop{max}\limits_{\alpha} \ L(w,b,\alpha))=\mathop{max}\limits_{\alpha} (\mathop{min}\limits_{w,b} \ L(w,b,\alpha)) w,bmin(αmax L(w,b,α))=αmax(w,bmin L(w,b,α))
于是就是要求:
m a x α ( m i n w , b 1 2 ∣ ∣ w ∣ ∣ 2 + ∑ i = 1 n α i ( 1 − y ( i ) ( w T x ( i ) + b ) ) ) , s . t . α i > 0 ( 4.1 ) \mathop{max}\limits_{\alpha} (\mathop{min}\limits_{w,b} \ \frac{1}{2}||w||^2+\sum_{i=1}^n \alpha_i(1-y^{(i)}(w^Tx^{(i)}+b))),\ s.t.\ \alpha_i>0 \ (4.1) αmax(w,bmin 21∣∣w∣∣2+i=1∑nαi(1−y(i)(wTx(i)+b))), s.t. αi>0 (4.1)
(1)这里需要先求min,再求max,
对
w
,
b
w,b
w,b 分别求偏导可得:
{
∂
L
∂
w
=
0
⇒
w
=
∑
i
=
1
n
α
i
y
(
i
)
x
(
i
)
∂
L
∂
b
=
0
⇒
∑
i
=
1
n
α
i
y
(
i
)
=
0
\begin{cases} \frac{\partial L}{\partial w}=0 \Rightarrow w=\sum\limits_{i=1}^n \alpha_iy^{(i)}x^{(i)}\\ \frac{\partial L}{\partial b}=0 \Rightarrow \sum\limits_{i=1}^n \alpha_iy^{(i)}=0 \\ \end{cases}
⎩⎪⎨⎪⎧∂w∂L=0⇒w=i=1∑nαiy(i)x(i)∂b∂L=0⇒i=1∑nαiy(i)=0 (4.2)
这样就求到了
w
,
b
w,b
w,b的极值的情况。再带回公式(3.1),并公式(4.1),可以得到:
L
(
w
,
b
,
α
)
=
−
1
2
∑
i
=
1
n
∑
j
=
1
n
α
i
α
j
y
i
y
j
(
x
i
⋅
x
j
)
+
∑
i
=
1
n
α
i
L(w,b,\alpha)=-\frac{1}{2}\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
L(w,b,α)=−21i=1∑nj=1∑nαiαjyiyj(xi⋅xj)+i=1∑nαi
也就是 m i n w , b L ( w , b , α ) = − 1 2 ∑ i = 1 n ∑ j = 1 n α i α j y i y j ( x i ⋅ x j ) + ∑ i = 1 n α i \mathop{min}\limits_{w,b} \ L(w,b,\alpha)=-\frac{1}{2}\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 w,bmin L(w,b,α)=−21∑i=1n∑j=1nαiαjyiyj(xi⋅xj)+∑i=1nαi
(2)求
m
i
n
w
,
b
L
(
w
,
b
,
α
)
\mathop{min}\limits_{w,b} \ L(w,b,\alpha)
w,bmin L(w,b,α)关于
α
\alpha
α的极大值,就是我们要求的对偶问题:
m
a
x
α
−
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
α
i
≥
0
,
i
=
1
,
2
,
.
.
.
,
n
\begin{array}{ll} & \mathop{max}\limits_{\alpha} \ -\frac{1}{2}\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 \\ & s.t. \ \sum\limits_{i=1}^n \alpha_iy^{(i)}=0 \\ & \alpha_i\geq0, i=1,2,...,n\\ \end{array}
αmax −21∑i=1n∑j=1nαiαjyiyj(xi⋅xj)+∑i=1nαis.t. i=1∑nαiy(i)=0αi≥0,i=1,2,...,n
Step 5: 利用Sequential Minimal Optimization (SMO)算法求解 Step 4中的方程
上面这个不等式约束问题可以用二次规划的方法解决。也可以用
SMO算法进行求解。
SMO(Sequential Minimal Optimization),序列最小优化算法,其核心思想非常简单:每次只优化一个参数,其他参数先固定住,仅求当前这个优化参数的极值
。
假设求得了最优解 α ∗ \alpha^* α∗,再通过公式(4.2)求出 w ∗ w^* w∗,然后任意选择一个支持向量代入 y ( w T x + b ) = 1 y(w^Tx+b)=1 y(wTx+b)=1求出 b ∗ b^* b∗,或者使用全部支持向量求出b再累加再求平均。
于是可以得到SVM的分类决策函数:
f
(
x
)
=
s
i
g
n
(
w
T
+
b
)
=
{
−
1
i
f
(
w
T
+
b
)
<
0
0
i
f
(
w
T
+
b
)
=
0
1
i
f
(
w
T
+
b
)
>
0
f(x)=sign(w^T+b)= \begin{cases} & -1&if(w^T+b)<0\\ & 0 &if(w^T+b)=0\\ & 1 &if(w^T+b)>0\\ \end{cases}
f(x)=sign(wT+b)=⎩⎪⎨⎪⎧−101if(wT+b)<0if(wT+b)=0if(wT+b)>0
Step 6: 将松弛变量和惩罚函数引入Step 2中得到的凸优化问题
在实际应用中,完全线性可分的样本是很少的,为了使SVM仍能生效,引入了软间隔
,也就是允许部分样本点不满足约束条件:
1
−
y
(
i
)
(
w
T
x
(
i
)
+
b
)
≤
0
,
i
=
1
,
2
,
.
.
.
n
1-y^{(i)}(w^Tx^{(i)}+b) \leq 0,i=1,2,...n
1−y(i)(wTx(i)+b)≤0,i=1,2,...n。
为了度量这个间隔软到何种程度,我们为每个样本引入一个松弛变量
ξ
i
\xi_i
ξi
,令
x
i
i
≥
0
xi_i \geq 0
xii≥0,且
1
−
y
(
i
)
(
w
T
x
(
i
)
+
b
)
−
ξ
i
≤
0
1-y^{(i)}(w^Tx^{(i)}+b) - \xi_i \leq 0
1−y(i)(wTx(i)+b)−ξi≤0。增加软间隔后我们的优化目标变成了:
还是和之前的解决方法一样。转化后的对偶问题为:
m
a
x
α
−
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
C
≥
α
i
≥
0
,
i
=
1
,
2
,
.
.
.
,
n
\begin{array}{ll} & \mathop{max}\limits_{\alpha} \ -\frac{1}{2}\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 \\ & s.t. \ \sum\limits_{i=1}^n \alpha_iy^{(i)}=0 \\ & C\geq\alpha_i\geq0, i=1,2,...,n\\ \end{array}
αmax −21∑i=1n∑j=1nαiαjyiyj(xi⋅xj)+∑i=1nαis.t. i=1∑nαiy(i)=0C≥αi≥0,i=1,2,...,n
C为预设的一个常数,可以理解为错误样本的惩罚程度。
Step 7: 将“核函数(Kernel)”引入Step 6的方程中
有时候样本点是完全线性不可分的,可以将二维线性不可分样本映射到高维空间中,让样本点在高维空间线性可分。
我们用 x 表示原来的样本点,用
ϕ
(
x
)
\phi(x)
ϕ(x) 表示 x 映射
到特征新的特征空间后到新向量。那么分割超平面可以表示为:
f
(
x
)
=
w
T
ϕ
(
x
)
+
b
f(x)=w^T \phi(x)+b
f(x)=wTϕ(x)+b。
同理,优化问题变为:
m
a
x
α
−
1
2
∑
i
=
1
n
∑
j
=
1
n
α
i
α
j
y
i
y
j
(
ϕ
(
x
i
)
T
⋅
ϕ
(
x
j
)
)
+
∑
i
=
1
n
α
i
s
.
t
.
∑
i
=
1
n
α
i
y
(
i
)
=
0
C
≥
α
i
≥
0
,
i
=
1
,
2
,
.
.
.
,
n
\begin{array}{ll} & \mathop{max}\limits_{\alpha} \ -\frac{1}{2}\sum_{i=1}^n \sum_{j=1}^n \alpha_i \alpha_j y_i y_j ( \phi(x_i)^T \cdot \phi(x_j))+\sum_{i=1}^n \alpha_i \\ & s.t. \ \sum\limits_{i=1}^n \alpha_iy^{(i)}=0 \\ & C\geq\alpha_i\geq0, i=1,2,...,n\\ \end{array}
αmax −21∑i=1n∑j=1nαiαjyiyj(ϕ(xi)T⋅ϕ(xj))+∑i=1nαis.t. i=1∑nαiy(i)=0C≥αi≥0,i=1,2,...,n
基于Mercer定理,存在核函数
K
K
K,高维空间的内积可用核函数的结果来代替。也就是:
K
(
x
i
,
y
i
)
=
(
ϕ
(
x
i
)
)
T
ϕ
(
y
i
)
K(x_i , y_i)=(\phi(x_i))^T \phi(y_i)
K(xi,yi)=(ϕ(xi))Tϕ(yi)
即将低维空间的数据代入核函数 K 中计算的值,可以代替数据映射到高维空间后的内积。
于是引入核函数之后的对偶问题变为:
m
a
x
α
−
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
C
≥
α
i
≥
0
,
i
=
1
,
2
,
.
.
.
,
n
\begin{array}{ll} & \mathop{max}\limits_{\alpha} \ -\frac{1}{2}\sum_{i=1}^n \sum_{j=1}^n \alpha_i \alpha_j y_i y_j K( x_i, x_j)+\sum_{i=1}^n \alpha_i \\ & s.t. \ \sum\limits_{i=1}^n \alpha_iy^{(i)}=0 \\ & C\geq\alpha_i\geq0, i=1,2,...,n\\ \end{array}
αmax −21∑i=1n∑j=1nαiαjyiyjK(xi,xj)+∑i=1nαis.t. i=1∑nαiy(i)=0C≥αi≥0,i=1,2,...,n
常用的核函数:
参考:
【1】从零推导支持向量机(SVM)
【2】支持向量机 SVM(非常详细)