1.SVM基本介绍
1.1 SVM算法定义
SVM全称是supported vector machine(支持向量机),即寻找到一个超平面使样本分成两类,并且间隔最大。
SVM能够执行线性和非线性分类,回归,甚至是异常值监测任务。特别适用于中小型复杂数据集的分类。
1.2 SVM和逻辑回归的区别
- 逻辑回归和SVM都是寻找一条分类直线,目标是把这两个类别分开
- 逻辑回归的最终判断标准是:准确率,而SVM最终的判断结果是:准确率+最大间隔
- 逻辑回归的分类直线可能有多条,而SVM的分类直线只有一条。
单纯考虑准确率和考虑最大间隔哪个泛化性能更好一点:
- 准确率只考虑了在训练集上的预测能力
- 准确率+最大间隔即考虑了预测能力,又考虑了模型对未知样本的泛化能力。
1.3 软间隔和硬间隔
硬间隔:指让所有样本都不在最大间隔之间,并且位于分类正确的一边。如果出现异常值或者样本不能线性分割,此时硬间隔无法实现。
软间隔:指容忍一部分样本在最大间隔之内,甚至在错误的一边。相对来说,软间隔可以应用在一些线性不可分的场景中。因此,软间隔可能在训练集表现不是很好,但是在测试集上的泛化性能可能要比硬间隔好。
1.4 惩罚参数C
在硬间隔的情况下,我们只考虑如何使间隔最大。在软间隔的情况下,我们既要考虑间隔最大化,又要考虑间隔违例样本带来的损失。
一般间隔违例样本带来的损失为:该点到分类直线之间的距离,C值用于惩罚间隔违例样本带来的损失。
C值越大,说明间隔违例样本带来的损失越大,就要减少这些样本带来的损失,所以间隔就要越小。
C值越小,间隔违例样本带来的损失就越小,可以适当增大间隔,以提高模型的泛化性能。
C值可以用来平衡间隔违例样本损失、最大间隔。当对违反限制间隔的样本点的容忍度很低时,可增大C值,反之就减小C值。
2.SVM算法推导的目标函数
SVM求解目标:将所有样本分类正确的基础上,找出最大间隔。
1.最大间隔距离表示公式:
2
∥
w
∥
\frac{2}{\|\boldsymbol{w}\|}
∥w∥2
直线方程为:y = w1x1 + w2x2 + b = 0,平面上任意一点(xi,xj)到该直线的距离计算公式为:
d = ∣ w 1 x i + w 2 x j + b ∣ w 1 2 + w 2 2 d=\frac{\left|w_{1} x_{i}+w_{2} x_{j}+b\right|}{\sqrt{w_{1}^{2}+w_{2}^{2}}} d=w12+w22∣w1xi+w2xj+b∣
分母可以用范数的形式表示:||w||
2.训练样本能够正确分类:
{
w
T
x
i
+
b
⩾
+
1
,
y
i
=
+
1
w
T
x
i
+
b
⩽
−
1
,
y
i
=
−
1
\left\{\begin{array}{ll} \boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}_{i}+b \geqslant+1, & y_{i}=+1 \\ \boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}_{i}+b \leqslant-1, & y_{i}=-1 \end{array}\right.
{wTxi+b⩾+1,wTxi+b⩽−1,yi=+1yi=−1
我们希望所有样本分类正确的情况下,实现最大间隔。因此,目标函数可以转换为:
max
w
,
b
=
2
∥
w
∥
s.t.
y
i
(
w
T
x
i
+
b
)
≥
1
,
i
=
1
,
2
,
⋯
,
m
\begin{array}{l} \max _{w, b}=\frac{2}{\|w\|} \\ \\ \text { s.t. } y_{i}\left(w^{T} x_{i}+b\right) \geq 1, i=1,2, \cdots, m \end{array}
maxw,b=∥w∥2 s.t. yi(wTxi+b)≥1,i=1,2,⋯,m
将最大化问题转化为最小化问题:
min
w
,
b
=
1
2
∥
w
∥
2
s.t.
y
i
(
w
T
x
i
+
b
)
≥
1
,
i
=
1
,
2
,
⋯
,
m
\begin{array}{l} \min _{w, b}=\frac{1}{2}\|w\|^2 \\ \\ \text { s.t. } y_{i}\left(w^{T} x_{i}+b\right) \geq 1, i=1,2, \cdots, m \end{array}
minw,b=21∥w∥2 s.t. yi(wTxi+b)≥1,i=1,2,⋯,m
- 最大化转换为最小化,加上平方是为了去除二范数的根号,不影响目标优化。1/2是为了求导时候,去掉系数。通过问题转换,让问题向最简单的方向发展。
3.目标函数推导过程
3.1 约束条件优化问题转换
目标函数是一个带有约束条件的优化问题,不容易求解,所以使用拉格朗日乘子法将其转换为多元极值问题,转换构成如下:
h
(
x
)
=
f
(
x
)
+
α
g
(
x
)
h(x)= f(x)+\alpha g(x)
h(x)=f(x)+αg(x)
f(x)是原问题,g(x)是原问题的约束条件。因此,约束条件函数可以转换为:
y
i
(
w
T
x
i
+
b
)
≥
1
,
i
=
1
,
2
,
⋯
,
m
∑
i
=
1
n
(
1
−
y
i
(
w
T
⋅
ϕ
(
x
i
)
+
b
)
)
≤
0
y_i(w^Tx_i+b)\geq 1,i=1,2,\cdots,m \\\sum_{i=1}^{n}(1-y_i(w^T\cdot \phi (x_i)+b)) \leq 0
yi(wTxi+b)≥1,i=1,2,⋯,mi=1∑n(1−yi(wT⋅ϕ(xi)+b))≤0
目标函数可以转换为:
L
(
w
,
b
,
α
)
=
1
2
∥
w
∥
2
−
∑
i
=
1
n
α
i
(
y
i
(
w
T
⋅
ϕ
(
x
i
)
+
b
)
−
1
)
L(w,b,\alpha)=\frac{1}{2}\|w\|^2-\sum_{i=1}^{n}\alpha_i(y_i(w^T\cdot \phi (x_i)+b)-1)
L(w,b,α)=21∥w∥2−i=1∑nαi(yi(wT⋅ϕ(xi)+b)−1)
此时问题转化为满足所有样本都能正确分类的情况下,求解极小极大值问题:
min
w
,
b
max
α
L
(
w
,
b
,
α
)
\min_{w,b}\max_{\alpha}L(w,b,\alpha)
w,bminαmaxL(w,b,α)
- 整个式子求极小值,后边式子求极大值
3.2 对偶问题转换
1.对偶问题转换
对w求偏导,并令其等于0:
L
(
w
,
b
,
α
)
=
1
2
∥
w
∥
2
−
∑
i
=
1
n
α
i
(
y
i
(
w
T
⋅
ϕ
(
x
i
)
+
b
)
−
1
)
L
(
w
,
b
,
α
)
=
1
2
∣
∣
w
∣
∣
2
−
∑
i
=
1
n
(
α
i
y
i
w
T
φ
(
x
i
)
+
α
i
y
i
b
−
α
i
)
=
0
∂
L
∂
w
=
w
−
∑
i
=
1
n
α
i
y
i
φ
(
x
i
)
=
0
L(w,b,\alpha)=\frac{1}{2}\|w\|^2-\sum_{i=1}^{n}\alpha_i(y_i(w^T\cdot \phi (x_i)+b)-1) \\L(w,b,\alpha)=\frac{1}{2}|| w||^{2}-\sum_{i=1}^{n}( \alpha_{i} y_{i} w^{T} \varphi\left(x_{i}\right)+\alpha_{i} y_{i} b-\alpha_{i})=0 \\\frac{\partial L}{\partial w}=w-\sum_{i=1}^n\alpha_iy_i\varphi(x_i)=0
L(w,b,α)=21∥w∥2−i=1∑nαi(yi(wT⋅ϕ(xi)+b)−1)L(w,b,α)=21∣∣w∣∣2−i=1∑n(αiyiwTφ(xi)+αiyib−αi)=0∂w∂L=w−i=1∑nαiyiφ(xi)=0
得到:
w
=
∑
i
=
1
n
α
i
y
i
φ
(
x
i
)
w= \sum_{i=1}^n\alpha_iy_i\varphi(x_i)
w=i=1∑nαiyiφ(xi)
对b求偏导,并令其等于0:
L
(
w
,
b
,
α
)
=
1
2
∣
∣
w
∣
∣
2
−
∑
i
=
1
n
(
α
i
y
i
w
T
φ
(
x
i
)
+
α
i
y
i
b
−
α
i
)
=
0
∂
L
∂
b
=
∑
i
=
1
n
α
i
y
i
=
0
L(w,b,\alpha)=\frac{1}{2}|| w||^{2}-\sum_{i=1}^{n} (\alpha_{i} y_{i} w^{T} \varphi\left(x_{i}\right)+\alpha_{i} y_{i} b-\alpha_{i})=0 \\\frac{\partial L}{\partial b}=\sum_{i=1}^n\alpha_iy_i=0
L(w,b,α)=21∣∣w∣∣2−i=1∑n(αiyiwTφ(xi)+αiyib−αi)=0∂b∂L=i=1∑nαiyi=0
将对w、b求偏导的结果代入原拉格朗日公式中:
L
(
w
,
b
,
α
)
=
1
2
∥
w
∥
2
−
∑
i
=
1
n
α
i
(
y
i
(
w
T
⋅
ϕ
(
x
i
)
+
b
)
−
1
)
L(w,b,\alpha)=\frac{1}{2}\|w\|^2-\sum_{i=1}^{n}\alpha_i(y_i(w^T\cdot \phi (x_i)+b)-1)
L(w,b,α)=21∥w∥2−i=1∑nαi(yi(wT⋅ϕ(xi)+b)−1)
去括号得:
L
(
w
,
b
,
α
)
=
1
2
w
T
w
−
∑
i
=
1
n
α
i
y
i
w
T
ϕ
(
x
i
)
−
b
⋅
∑
i
=
1
n
α
i
y
i
+
∑
i
=
1
n
α
i
L(w,b,\alpha)=\frac{1}{2}w^Tw-\sum_{i=1}^n\alpha_iy_iw^T\phi(x_i)-b\cdot\sum_{i=1}^n\alpha_iy_i+\sum_{i=1}^n\alpha_i
L(w,b,α)=21wTw−i=1∑nαiyiwTϕ(xi)−b⋅i=1∑nαiyi+i=1∑nαi
代入w、b得:
L
(
w
,
b
,
α
)
=
1
2
w
T
∑
i
=
1
n
α
i
y
i
φ
(
x
i
)
−
w
T
∑
i
=
1
n
α
i
y
i
φ
(
x
i
)
+
∑
i
=
1
n
α
i
L(w,b,\alpha)=\frac{1}{2}w^T\sum_{i=1}^n\alpha_iy_i\varphi(x_i)-w^T\sum_{i=1}^n\alpha_iy_i\varphi(x_i)+\sum_{i=1}^n\alpha_i
L(w,b,α)=21wTi=1∑nαiyiφ(xi)−wTi=1∑nαiyiφ(xi)+i=1∑nαi
化简得:
L
(
w
,
b
,
α
)
=
∑
i
=
1
n
α
i
−
1
2
(
∑
i
=
1
n
α
i
y
i
φ
(
x
i
)
)
T
⋅
∑
i
=
1
n
α
i
y
i
φ
(
x
i
)
L(w,b,\alpha)=\sum_{i=1}^n\alpha_i-\frac{1}{2}(\sum_{i=1}^n\alpha_iy_i\varphi(x_i))^T\cdot\sum_{i=1}^n\alpha_iy_i\varphi(x_i)
L(w,b,α)=i=1∑nαi−21(i=1∑nαiyiφ(xi))T⋅i=1∑nαiyiφ(xi)
最终得:
L
(
w
,
b
,
α
)
=
∑
i
=
1
n
α
i
−
1
2
∑
i
=
1
n
∑
j
=
1
n
α
i
α
j
y
i
y
j
ϕ
T
(
x
i
)
ϕ
(
x
j
)
L(w,b,\alpha)=\sum_{i=1}^n\alpha_i-\frac{1}{2}\sum_{i=1}^n\sum_{j=1}^n\alpha_i\alpha_jy_iy_j\phi^T(x_i)\phi(x_j)
L(w,b,α)=i=1∑nαi−21i=1∑nj=1∑nαiαjyiyjϕT(xi)ϕ(xj)
此时,求解当 α 是什么值时,L会变得很大,当求出 α 值,再求解 w, b 值。此时,就变成了极大极小值问题。
3.3 确定超平面
1、求解当α为什么值时,公式的值最大:
α
∗
=
arg
max
α
(
∑
i
=
1
n
α
i
−
1
2
∑
i
=
1
n
∑
j
=
1
n
α
i
α
j
y
i
y
j
ϕ
T
(
x
i
)
ϕ
(
x
j
)
)
s
.
t
.
∑
i
=
1
n
α
i
y
i
=
0
α
i
≥
0
,
i
=
1
,
2
,
3
⋯
,
n
\alpha^*=\underset{\alpha}{\arg\max}(\sum_{i=1}^n\alpha_i-\frac{1}{2}\sum_{i=1}^n\sum_{j=1}^n\alpha_i\alpha_jy_iy_j\phi^T(x_i)\phi(x_j)) \\\ s.t. \sum_{i=1}^n\alpha_iy_i=0 \\ \alpha_i \geq0,i=1,2,3\cdots,n
α∗=αargmax(i=1∑nαi−21i=1∑nj=1∑nαiαjyiyjϕT(xi)ϕ(xj)) s.t.i=1∑nαiyi=0αi≥0,i=1,2,3⋯,n
2、将上面的问题转换为极小值问题:
m
i
n
α
1
2
∑
i
=
1
n
∑
j
=
1
n
α
i
α
j
y
i
y
j
ϕ
T
(
x
i
)
ϕ
(
x
j
)
−
∑
i
=
1
n
α
i
\underset{\alpha}{min} \ \ \ \frac{1}{2}\sum_{i=1}^n\sum_{j=1}^n\alpha_i\alpha_jy_iy_j\phi^T(x_i)\phi(x_j)-\sum_{i=1}^n\alpha_i
αmin 21i=1∑nj=1∑nαiαjyiyjϕT(xi)ϕ(xj)−i=1∑nαi
且满足以下条件:
∑
i
=
1
n
α
i
y
i
=
0
α
i
≥
0
,
i
=
1
,
2
,
3
⋯
,
n
\sum_{i=1}^n\alpha_iy_i=0\\ \alpha_i \geq0,i=1,2,3\cdots,n
i=1∑nαiyi=0αi≥0,i=1,2,3⋯,n
将训练样本代入上面公式,求解出α值。然后,将α值代入公式计算w、b的值
w
∗
=
∑
i
=
1
n
α
i
∗
y
i
φ
(
x
i
)
b
∗
=
y
i
−
∑
i
=
1
n
α
∗
y
i
(
ϕ
(
x
i
)
⋅
ϕ
(
x
j
)
)
w^*= \sum_{i=1}^n\alpha_i^*y_i\varphi(x_i) \\ b^*=y_i-\sum_{i=1}^n\alpha^*y_i(\phi(x_i)\cdot\phi(x_j))
w∗=i=1∑nαi∗yiφ(xi)b∗=yi−i=1∑nα∗yi(ϕ(xi)⋅ϕ(xj))
最后求的分离超平面为:
w
∗
ϕ
(
x
)
+
b
∗
=
0
w^*\phi(x)+b^*=0
w∗ϕ(x)+b∗=0
求的分类决策函数:
f
(
x
)
=
sign
(
w
∗
ϕ
(
x
)
+
b
∗
)
f(x)=\operatorname{sign}(w^*\phi(x)+b^*)
f(x)=sign(w∗ϕ(x)+b∗)
4.案例代入
正例点x1=(3,3),x2=(4,3),负例点x3=(1,1),求线性可分支持向量机。
m
i
n
α
1
2
∑
i
=
1
n
∑
j
=
1
n
α
i
α
j
y
i
y
j
ϕ
T
(
x
i
)
ϕ
(
x
j
)
−
∑
i
=
1
n
α
i
s
.
t
.
∑
i
=
1
n
α
i
y
i
=
0
α
i
≥
0
,
i
=
1
,
2
,
3
⋯
,
n
\underset{\alpha}{min} \ \ \ \frac{1}{2}\sum_{i=1}^n\sum_{j=1}^n\alpha_i\alpha_jy_iy_j\phi^T(x_i)\phi(x_j)-\sum_{i=1}^n\alpha_i \\ s.t. \sum_{i=1}^n\alpha_iy_i=0 \\ \alpha_i \geq0,i=1,2,3\cdots,n
αmin 21i=1∑nj=1∑nαiαjyiyjϕT(xi)ϕ(xj)−i=1∑nαis.t.i=1∑nαiyi=0αi≥0,i=1,2,3⋯,n
将3个样本代入上述公式,得到一个关于α的函数:
1
2
(
18
α
1
2
+
25
α
2
2
+
2
α
3
2
+
42
α
1
α
2
−
12
α
1
α
3
−
14
α
2
α
3
)
−
α
1
−
α
2
−
α
3
⋯
⋯
(
4.1
)
\frac{1}{2}(18\alpha_1^2+25\alpha_2^2+2\alpha_3^2+42\alpha_1\alpha_2-12\alpha_1\alpha_3-14\alpha_2\alpha_3)-\alpha_1-\alpha_2-\alpha_3 \cdots\cdots(4.1)
21(18α12+25α22+2α32+42α1α2−12α1α3−14α2α3)−α1−α2−α3⋯⋯(4.1)
由于:
∑
i
=
1
n
α
i
y
i
=
0
=
>
α
1
y
1
+
α
2
y
2
+
α
3
y
3
=
0
⋯
⋯
⋯
⋯
⋯
(
4.2
)
\sum_{i=1}^n\alpha_iy_i=0=>\alpha_1y_1+\alpha_2y_2+\alpha_3y_3=0 \cdots\cdots \cdots\cdots \cdots(4.2)
i=1∑nαiyi=0=>α1y1+α2y2+α3y3=0⋯⋯⋯⋯⋯(4.2)
可得:
α
1
+
α
2
−
α
3
=
0
⋯
⋯
⋯
⋯
⋯
⋯
(
4.3
)
α
1
+
α
2
=
α
3
⋯
⋯
⋯
⋯
⋯
⋯
⋯
⋅
(
4.4
)
\alpha_1+\alpha_2-\alpha_3=0 \cdots\cdots \cdots\cdots \cdots\cdots(4.3) \\\alpha_1+\alpha_2=\alpha_3\cdots\cdots \cdots\cdots \cdots\cdots\cdots\cdot(4.4)
α1+α2−α3=0⋯⋯⋯⋯⋯⋯(4.3)α1+α2=α3⋯⋯⋯⋯⋯⋯⋯⋅(4.4)
将(4.4)式子代入(4.1)式子中可得:
4
α
1
2
+
13
2
α
2
2
+
10
α
1
α
2
−
2
α
1
−
2
α
2
⋯
⋯
⋯
⋯
⋯
⋯
(
4.5
)
4 \alpha_{1}^{2}+\frac{13}{2} \alpha_{2}^{2}+10 \alpha_{1} \alpha_{2}-2 \alpha_{1}-2 \alpha_{2}\cdots\cdots \cdots\cdots \cdots\cdots(4.5)
4α12+213α22+10α1α2−2α1−2α2⋯⋯⋯⋯⋯⋯(4.5)
对 α1、α2 求偏导,并令其等于 0,可得:
{
∂
s
(
α
1
,
α
2
)
∂
α
1
=
8
α
1
+
10
α
2
−
2
=
0
∂
s
(
α
1
,
α
2
)
∂
α
2
=
13
α
2
+
10
α
1
−
2
=
0
⇒
{
α
1
=
1.5
α
2
=
−
1
\left\{\begin{array} { l } { \frac { \partial s ( \alpha 1, \alpha 2 ) } { \partial \alpha 1 } = 8 \alpha 1 + 1 0 \alpha _ { 2 } - 2 = 0 } \\ { \frac { \partial s ( \alpha 1 , \alpha 2 ) } { \partial \alpha 2 } = 1 3 \alpha 2 + 1 0 \alpha 1 - 2 = 0 } \end{array} \Rightarrow \left\{\begin{array}{l} \alpha 1=1.5 \\ \alpha 2=-1 \end{array}\right.\right.
{∂α1∂s(α1,α2)=8α1+10α2−2=0∂α2∂s(α1,α2)=13α2+10α1−2=0⇒{α1=1.5α2=−1
由于限制条件中 α 值必须大于 0,故而上面求出的结果不是最终结果。
- 当α1=0时,对α2求偏导得 2/13,α3=2/13
- 当α2=0时,对α1求偏导得 1/4,α3=1/4
现有两组结果,我们需要找出哪组结果使得结果最小,将每组结果代入(4.5)式子中,得:
- 第一组结果是:-0.1538
- 第二组结果是:-0.25
因此,第二组结果最小,所以α1=1/4,α2=0,α3=1/4
接下来,根据 α 和样本计算 w 的值:
-
正例 1: x1=(3,3),α1 = 1/4
-
正例 1:x2=(4,3),α2 = 0
-
负例 -1: x3=(1,1),α3 = 1/4
w
=
∑
i
=
1
n
α
i
y
i
Φ
(
x
n
)
w=\sum_{i=1}^{n} \alpha_{i} y_{i} \Phi\left(x_{n}\right)
w=i=1∑nαiyiΦ(xn)
代入得:
w
=
1
4
∗
1
∗
(
3
,
3
)
+
1
4
∗
(
−
1
)
∗
(
1
,
1
)
=
(
1
2
,
1
2
)
w=\frac{1}{4} * 1 *(3,3)+\frac{1}{4} *(-1) *(1,1)=\left(\frac{1}{2}, \frac{1}{2}\right)
w=41∗1∗(3,3)+41∗(−1)∗(1,1)=(21,21)
由 f(x) = 0.5x1 + 0.5x2 + b,并将任意样本代入,可得 b 为:
- 0.5*3 + 0.5*3 + b =1,得:b = -2
- 0.5*1 + 0.5*1 + b =-1,得:b = -2
最终确定分类超平面为:
f
(
x
)
=
sign
(
0.5
x
1
+
0.5
x
2
−
2
)
f(x)=\operatorname{sign}\left(0.5 x_{1}+0.5 x_{2}-2\right)
f(x)=sign(0.5x1+0.5x2−2)