支持向量机
简要介绍
支持向量机(support vector machine),又称SVM,是一种常见的数据分类学习算法,目的是求得参数建立函数
f
(
X
)
=
W
T
X
+
b
f(X)=W^TX+b
f(X)=WTX+b,将样本代入,大于0的与小于0的为不同类别,求得参数有两种方法,其一,满足一个条件,即
f
(
X
)
=
0
f(X)=0
f(X)=0分开的两个类别间隔要最大化,所以SVM亦称为最大间隔算法,见图一,另外一种方法是类似对数几率回归一样,即使得损失函数最小化,损失函数比较特殊,此处建议观看吴恩达老师的课程支持向量机一章,下文对第一种方法推导。
具体原理
两个类别的最大间距为
2
∣
∣
w
∣
∣
{2}\over{||w||}
∣∣w∣∣2,最大化间距即最小化
∣
∣
w
∣
∣
||w||
∣∣w∣∣,即我们最终要求
求
参
数
w
,
b
使
得
1
2
∣
∣
w
∣
∣
2
最
小
约
束
条
件
:
y
i
(
w
T
x
i
+
b
)
≥
1
,
i
=
1
,
2
,
⋯
,
m
求参数w,b使得\\ \frac{1}{2}||w||^2最小\\ 约束条件:y_i(w^Tx_i+b)\ge 1,i=1,2,\cdots,m
求参数w,b使得21∣∣w∣∣2最小约束条件:yi(wTxi+b)≥1,i=1,2,⋯,m
约束条件即为要满足这条直线(或者平面或者更高维的东东)能够完全分开数据,这是SVM的硬间隔,当然也有软间隔,即不需要完全分开数据,能够承受一定的误差,则能够减少噪声样本的影响,我们还是回到硬间隔上。
上面的公式是不等约束条件的优化问题,用拉格朗日乘子法:
L
(
w
,
b
,
α
)
=
1
2
∣
∣
w
∣
∣
2
+
∑
i
=
1
m
α
i
(
1
−
(
y
i
(
w
T
x
i
+
b
)
)
)
.
∂
L
∂
w
=
0
→
w
=
∑
i
=
1
m
α
i
y
i
x
i
(
1
)
∂
L
∂
b
=
0
→
∑
i
=
1
m
α
i
y
i
=
0
(
2
)
L(w,b,\alpha)=\frac{1}{2}||w||^2+\sum_{i=1}^m\alpha_i(1-(y_i(w^Tx_i+b))).\\ \frac{\partial L}{\partial w}=0\space \space \rightarrow w=\sum_{i=1}^m\alpha_iy_ix_i\space\space\space\space(1)\\ \frac{\partial L}{\partial b}=0\space \space \rightarrow \sum_{i=1}^m\alpha_iy_i=0\space\space\space\space(2)
L(w,b,α)=21∣∣w∣∣2+i=1∑mαi(1−(yi(wTxi+b))).∂w∂L=0 →w=i=1∑mαiyixi (1)∂b∂L=0 →i=1∑mαiyi=0 (2)
将(1)式代入拉格朗日函数中,经过复杂的化简,过程见图
即最终得到
W
(
α
)
=
∑
i
=
1
N
α
i
−
1
2
(
∑
i
,
j
=
1
N
α
i
α
j
y
i
y
j
x
i
T
x
j
)
W(\alpha)=\sum_{i=1}^N\alpha_i-\frac{1}{2}(\sum_{i,j=1}^N\alpha_i\alpha_jy_iy_jx_i^Tx_j)
W(α)=i=1∑Nαi−21(i,j=1∑NαiαjyiyjxiTxj)
现在求参数
α
\alpha
α的值使得上述式子有最大值,从而可以求得
w
w
w和
b
b
b,不过上述式子还有约束条件
α
i
≥
0
y
i
(
w
T
x
i
+
b
)
≥
1
,
i
=
1
,
2
,
⋯
,
m
α
i
(
1
−
y
i
(
w
T
x
i
+
b
)
)
=
0
,
i
=
1
,
2
,
⋯
,
m
\alpha_i\ge0\\ y_i(w^Tx_i+b)\ge 1,i=1,2,\cdots,m\\ \alpha_i(1-y_i(w^Tx_i+b))=0,i=1,2,\cdots,m
αi≥0yi(wTxi+b)≥1,i=1,2,⋯,mαi(1−yi(wTxi+b))=0,i=1,2,⋯,m
关于为什么求
1
2
∣
∣
w
∣
∣
2
\frac{1}{2}||w||^2
21∣∣w∣∣2最小等价于求
W
(
α
)
W(\alpha)
W(α)最大,并且还有不同的约束条件,这就涉及到拉格朗日乘子法中不等式约束条件的做法了,即求对偶问题和KKT条件,这里不多述
然而这么多 α i \alpha_i αi,又怎么求呢?这里就用到SMO(序列最小化算法)
其核心思想是
- 选取两个合适的 α i , α j \alpha_i,\alpha_j αi,αj,将其他变量看作常数
- 这就变成了双变量的优化问题,约束条件为 α i y i + α j y j = C \alpha_iy_i+\alpha_jy_j=C αiyi+αjyj=C
- 重复步骤1直至达到终止循环条件
有两个问题:1,如何选取 α i , α j \alpha_i,\alpha_j αi,αj,2,循环终止条件是什么
-
α i \alpha_i αi应该要遍历所有的 α \alpha α都要取一遍, α j \alpha_j αj的选取与 α i \alpha_i αi有关,其标准为两个 α \alpha α所对应的预测误差值之差的绝对值最大
-
当所有 α \alpha α不能被更新,即收敛后则终止循环
最大
- 当所有 α \alpha α不能被更新,即收敛后则终止循环