Scikit-Learn 支持向量机分类
- 1、支持向量机(SVM)
- 1.1、SVM概述
- 1.2、SVM原理
- 1.3、SVM的损失函数
1、支持向量机(SVM)
1.1、SVM概述
在机器学习中,支持向量机(Support Vector Machine,SVM)算法既可以用于回归问题(SVR),也可以用于分类问题(SVC)
支持向量机是一种经典的监督学习算法,通常用于分类问题。SVM在机器学习知识结构中的位置如下:
SVM的核心思想是将分类问题转化为寻找分类平面的问题,并通过最大化分类边界点(支持向量)到分类平面的距离(间隔)来实现分类
如图所示,左图展示了三种可能的线性分类器的决策边界,虚线所代表的模型表现非常糟糕,甚至都无法正确实现分类;其余两个模型在训练集上表现堪称完美,但是它们的决策边界与实例过于接近,导致在面对新样本时,表现可能不会太好
右图中的实线代表SVM分类器的决策边界,两虚线表示最大间隔超平面,虚线之间的距离(两个异类支持向量到超平面的距离之和)称为超平面最大间隔,简称间隔;SVM的决策边界不仅分离了两个类别,而且尽可能的远离了最近的训练实例,距离决策边界最近的实例称为支持向量
1.2、SVM原理
SVM的最优化问题就是要找到各类样本点到超平面的距离最远,也就是找到最大间隔超平面。任意超平面的方程为
ω
T
x
+
b
=
0
\omega^Tx+b=0
ωTx+b=0
其中 ω \omega ω为超平面的法向量,决定了超平面的方向; b b b为位移项,决定了超平面到原点间的距离
二维空间点
(
x
,
y
)
(x,y)
(x,y)到直线
A
x
+
B
y
+
C
=
0
Ax+By+C=0
Ax+By+C=0的距离公式为
d
=
∣
A
x
+
B
y
+
C
∣
A
2
+
B
2
d=\frac{|Ax+By+C|}{\sqrt{A^2+B^2}}
d=A2+B2∣Ax+By+C∣
扩展到N维空间中,点
(
x
1
,
x
2
,
.
.
.
x
n
)
(x_1,x_2,...x_n)
(x1,x2,...xn)到直线
ω
T
x
+
b
=
0
\omega^Tx+b=0
ωTx+b=0的距离为
d
=
∣
ω
T
x
+
b
∣
∣
∣
ω
∣
∣
d=\frac{|\omega^Tx+b|}{||\omega||}
d=∣∣ω∣∣∣ωTx+b∣
其中, ∣ ∣ ω ∣ ∣ ||\omega|| ∣∣ω∣∣= ω 1 2 + ω 2 2 + . . . + ω n 2 \sqrt{\omega_1^2+\omega_2^2+...+\omega_n^2} ω12+ω22+...+ωn2
SVM假设样本是线性可分的,则任意样本点到超平面的距离可写为
d
=
∣
ω
T
x
+
b
∣
∣
∣
ω
∣
∣
d=\frac{|\omega^Tx+b|}{||\omega||}
d=∣∣ω∣∣∣ωTx+b∣
为方便描述和计算,设
y
i
∈
−
1
,
1
y_i\in{-1,1}
yi∈−1,1,其中1表示正例,-1表示负例,则有
{
ω
T
x
i
+
b
≥
+
1
y
i
=
+
1
ω
T
x
i
+
b
≤
−
1
y
i
=
−
1
\begin{cases} \omega^Tx_i + b ≥ +1 \, \, & y_i=+1 \\ \omega^T x_i+b ≤ -1 \, \, & y_i=-1 \end{cases}
{ωTxi+b≥+1ωTxi+b≤−1yi=+1yi=−1
此时,两个异类支持向量到超平面的距离之和为
γ
i
=
y
i
(
ω
T
∣
∣
ω
∣
∣
⋅
x
i
+
b
∣
∣
ω
∣
∣
)
=
2
∣
∣
ω
∣
∣
\gamma_i=y_i\left(\frac{\omega^T}{||\omega||}\cdot x_i + \frac{b}{||\omega||} \right) = \frac{2}{||\omega||}
γi=yi(∣∣ω∣∣ωT⋅xi+∣∣ω∣∣b)=∣∣ω∣∣2
其中, γ \gamma γ称为间隔。最大间隔不仅与 ω \omega ω有关,偏置 b b b也会隐性影响超平面的位置,进而对间隔产生影响
现在,我们只需要使间隔
γ
\gamma
γ最大,即
arg
max
ω
,
b
2
∣
∣
ω
∣
∣
\arg \mathop{\max}\limits_{\omega,b} \frac{2}{||\omega||}
argω,bmax∣∣ω∣∣2
最大化间隔
γ
\gamma
γ,显然只需要最小化
∣
∣
ω
∣
∣
||\omega||
∣∣ω∣∣,于是,上式可重写为
arg
min
ω
,
b
1
2
∣
∣
ω
∣
∣
2
\arg \mathop{\min}\limits_{\omega,b} \frac{1}{2}||\omega||^2
argω,bmin21∣∣ω∣∣2
这里的平方和之前一样,一是为了方便计算,二是可以将目标函数转化为凸函数的凸优化问题。称该式为SVM的基本型
1.3、SVM的损失函数
1.3.1、软间隔与硬间隔
如果我们严格让所有实例都不在最大间隔之间,并且位于正确的一边,这就是硬间隔分类。但是硬间隔分类有两个问题:首先,它只在数据是线性可分时才有效;其次,它对异常值较敏感
要避免这些问题,可以使用更灵活的模型。目标是尽可能在保持最大间隔的同时允许间隔违例(在最大间隔之间,甚至位于错误的一边),在最大间隔与违例之间找到良好的平衡,这就是软间隔分类
软间隔的目标函数为
J
=
1
2
∣
∣
ω
∣
∣
2
+
C
∑
i
=
1
n
ε
i
J=\frac{1}{2}||\omega||^2 + C\sum_{i=1}^{n}\varepsilon_i
J=21∣∣ω∣∣2+Ci=1∑nεi
其中,超参数
C
C
C为惩罚系数,
ε
\varepsilon
ε为松弛因子。
C
C
C越小,惩罚越小(间隔越宽,违例越多)
1.3.2、核函数
未完待续…