支持向量机01-初步了解
1. 什么是支持向量机(Support Vector Machine,SVM)
分类作为数据挖掘领域中一项非常重要的任务,它的目的是学会一个分类函数或分类模型(或者叫做分类器),该模型能把数据库中的数据项映射到给定类别中的某一个,从而可以用于预测未知类别。
支持向量机,顾名思义,分为两个部分了解:一,什么是支持向量(简单来说,就是支持或支撑平面上把两类类别划分开来的超平面的向量点);二,什么是“机(machine,机器)”,即是一个算法。在机器学习领域,常把一些算法看做是一个机器,如分类机(也叫做分类器)。而支持向量机本身便是一种监督式学习的方法,它广泛的应用于统计分类以及回归分析中。
超平面不一定是一个面,它是所处向量空间的一个子空间,如立体空间中一个面,二维平面上一条线。它的作用在于将空间中的数据一分为二,达到分类的目的。表达式为:
g ( x ) = w T x + w 0 = 0 g(x)=w^T x+w_0=0 g(x)=wTx+w0=0
w = ( w 1 , w 2 , . . . , w l ) T w=(w_1,w_2,...,w_l)^T w=(w1,w2,...,wl)T, 权向量(超平面法向量)
x = ( x 1 , x 2 , . . . , x l ) T x=(x_1,x_2,...,x_l)^T x=(x1,x2,...,xl)T, 实例(样本向量)
w 0 w_0 w0, 偏移量
在实际中, w w w确定,因此这个方程代表所有满足的向量 x x x(点)的集合, w T x w^Tx wTx可视为 x x x向 w w w的投影乘以 w w w的模长。
监督式学习(Supervised learning)是一个机器学习中的方法,可以由训练资料中学到或建立一个模式(函数 / learning model),并依此模式推测新的实例。训练资料是由输入物件(通常是向量)和预期输出所组成。函数的输出可以是一个连续的值(称为回归),或是预测一个分类标签(称作分类)。
支持向量机是90 年代中期发展起来的基于统计学习理论的一种机器学习方法,通过寻求结构化风险最小来提高学习机泛化能力,实现经验风险和置信范围的最小化,从而达到在统计样本量较少的情况下,亦能获得良好统计规律的目的。
2. 线性分类
讲SVM 之前,必须先弄清楚一个概念:线性分类器(也可以叫做感知机)。
2.1 分类标准
简单起见,考虑的是一个两类的分类问题(多分类问题类似,只是延拓一下),数据点用
x
x
x 来表示,这是一个
n
n
n 维向量,
w
T
w^T
wT 上标中的
T
T
T代表转置,而类别用
y
y
y 来表示,可以取
1
1
1 或者
−
1
-1
−1,分别代表两个不同的类。一个线性分类器就是要在
n
n
n 维的数据空间中找到一个超平面,其方程可以表示为:
w
T
x
+
b
=
0
w^Tx+b= 0
wTx+b=0
为何用
y
y
y 取
1
1
1 或者
−
1
-1
−1来表示两个不同的类别呢?其实,这个
1
1
1或
−
1
-1
−1的分类标准起源于
L
o
g
i
s
t
i
c
Logistic
Logistic 回归,为了完整和过渡的自然性,咱们就再来看看这个逻辑回归(
L
o
g
i
s
t
i
c
R
e
g
r
e
s
s
i
o
n
Logistic Regression
LogisticRegression )。
2.2 逻辑回归( L o g i s t i c R e g r e s s i o n Logistic Regression LogisticRegression )
逻辑回归虽然名字里带“回归”,但它实际上是一种分类方法,主要用于两分类问题(即输出只有两种,分别代表两个类别)。其目的是从特征学校出一个
0
/
1
0/1
0/1 分类模型,而这个模型是将特性的线性组合作为自变量,由于自变量的取值是负无穷到正无穷,所以利用了Logistic函数(或称为Sigmoid函数)将自变量映射到
(
0
,
1
)
(0,1)
(0,1) 上,映射后的值被认为是属于
y
=
1
y=1
y=1 的概率。Sigmoid函数的形式为:
g
(
z
)
=
1
1
+
e
−
z
g(z)= \frac{1}{1+e^{-z}}
g(z)=1+e−z1
Sigmoid 函数有个很漂亮的“S”形,如下图所示(引自维基百科):
对于线性边界的情况,边界形式如下:
θ
0
+
θ
1
x
1
+
,
.
.
.
,
+
θ
n
x
n
=
∑
i
=
1
n
θ
i
x
i
=
θ
T
x
\theta_0+\theta_1x_1+,...,+\theta_nx_n=\sum_{i=1}^n \theta_ix_i=\theta^Tx
θ0+θ1x1+,...,+θnxn=i=1∑nθixi=θTx
构造预测函数为:
h
θ
(
x
)
=
g
(
θ
T
x
)
=
1
1
+
e
−
θ
T
x
h_\theta(x)=g(\theta^Tx)= \frac{1}{1+e^{-\theta^Tx}}
hθ(x)=g(θTx)=1+e−θTx1
函数
h
θ
(
x
)
h_\theta(x)
hθ(x)的值有特殊的含义,它表示结果取
1
1
1 的概率。当我们要判别一个新来的特征属于哪个类时,只需要求
h
θ
(
x
)
h_\theta(x)
hθ(x),若大于
0.5
0.5
0.5 就是
y
=
1
y=1
y=1 的类,反之就属于
y
=
0
y=0
y=0 的类。因此对于输入
x
x
x 分类结果为类别
1
1
1 和类别
0
0
0 的概率分别为:
P
(
y
=
1
∣
x
;
θ
)
=
h
θ
(
x
)
P
(
y
=
0
∣
x
;
θ
)
=
1
−
h
θ
(
x
)
P(y=1|x;\theta)=h_\theta(x) \\ P(y=0|x;\theta)=1-h_\theta(x)
P(y=1∣x;θ)=hθ(x)P(y=0∣x;θ)=1−hθ(x)
对于支持向量机:
使用标签
y
=
−
1
,
y
=
1
y=-1,y=1
y=−1,y=1 替换逻辑回归中使用的
y
=
0
,
y
=
1
y=0,y=1
y=0,y=1,且将
θ
0
\theta_0
θ0 替换为
b
b
b,后面的
θ
1
x
1
+
,
.
.
.
,
+
θ
n
x
n
\theta_1x_1+,...,+\theta_nx_n
θ1x1+,...,+θnxn 替换为
w
1
x
1
+
,
.
.
.
,
+
w
n
x
n
w_1x_1+,...,+w_nx_n
w1x1+,...,+wnxn (即
w
T
x
w^Tx
wTx),则
θ
T
x
=
w
T
x
+
b
\theta^Tx=w^Tx+b
θTx=wTx+b,进一步
h
θ
(
x
)
=
g
(
θ
T
x
)
=
g
(
w
T
x
+
b
)
h_\theta(x)=g(\theta^Tx)=g(w^Tx+b)
hθ(x)=g(θTx)=g(wTx+b)。也就是说除了标签
y
=
0
y=0
y=0 变为了
y
=
−
1
y=-1
y=−1,与逻辑回归的形式化表示没有区别。
h
w
,
b
(
x
)
=
g
(
w
T
x
+
b
)
h_{w,b}(x)=g(w^Tx+b)
hw,b(x)=g(wTx+b)
上文
h
θ
(
x
)
h_\theta(x)
hθ(x)只和
θ
T
x
\theta^Tx
θTx的正负有关,而不关心
g
(
z
)
g(z)
g(z) ,因此将
g
(
z
)
g(z)
g(z)做一个简化,将其简单映射到
y
=
−
1
,
y
=
1
y=-1,y=1
y=−1,y=1上,映射关系如下:
g
(
x
)
=
{
1
z
≥
0
−
1
z
<
0
g(x)= \begin{cases} 1& z\geq0 \\ -1& z\lt0 \end{cases}
g(x)={1−1z≥0z<0
2.3 线性分类的一个实例
下面举个简单的例子,一个二维平面(一个超平面,在二维空间中就是一条直线),如下图所示,平面上有两种不同的点,分别用两种不同的颜色表示,一种为粉色的点,另一种则为蓝色的点,红色的线表示一个可行的超平面。
图中这条红色的线把粉色的点和蓝色的点分开了。这红色的线就是我们上面所说的超平面,也就是说,这个所谓的超平面的确把这两种不同颜色的数据点分隔开来,在超平面一边的数据点所对应的
y
y
y 全是
–
1
–1
–1,而在另一边全是
1
1
1。接着,我们令分类函数
f
(
x
)
=
w
T
x
+
b
f(x)=w^Tx+b
f(x)=wTx+b。
显然,如果 f ( x ) = 0 f(x) = 0 f(x)=0,那么 x x x 是位于超平面上的点。我们不妨要求所有满足 f ( x ) < 0 f(x) < 0 f(x)<0 的点,其对应的 y y y 等于 – 1 –1 –1,而 f ( x ) > 0 f(x) > 0 f(x)>0 则对应 y = 1 y = 1 y=1 的数据点。
当然,有些时候,或者说大部分时候数据并不是线性可分的,这个时候满足这样条件的超平面就根本不存在。这里先从最简单的情形开始推导,就假设数据都是线性可分的,亦即这样的超平面是存在的。更进一步,我们在进行分类的时候,将数据点 x x x 代入 f ( x ) f(x) f(x) 中,如果得到的结果小于 0 0 0,则赋予其类别 – 1 –1 –1,如果大于 0 0 0, 则赋予类别 1 1 1。如果 f ( x ) = 0 f(x) = 0 f(x)=0,则很难办了,分到哪一类都不是。
(1) 咱们就要确定上述分类函数 f ( x ) = w ⋅ x + b f(x) = w · x+b f(x)=w⋅x+b( w ⋅ x w · x w⋅x 表示 w w w 与 x x x 的内积)中的两个参数 w w w 和 b b b,通俗理解的话 w w w是法向量, b b b 是截距(再次说明:定义特征到结果的输出函数 u = w ⃗ ⋅ x ⃗ − b u =\vec w ·\vec x− b u=w⋅x−b,与我们最开始定义的 f ( x ) = w T x + b f(x) = w^Tx + b f(x)=wTx+b 实质是一样的)。
(2) 那如何确定 w w w 和 b b b 呢?答案是寻找两条边界端或极端划分直线中间的最大间隔(之所以要寻最大间隔是为了能更好的划分不同类的点,下文你将看到:为寻最大间隔,导出 1 2 ∥ w ∥ 2 \frac{1}{2}{\Vert w \Vert}^2 21∥w∥2,继而引入拉格朗日函数和对偶变量,化为对单一因数对偶变量 的求解,当然,这是后话),从而确定最终的最大间隔分类超平面和分类函数。
(3) 进而把寻求分类函数 f ( x ) = w ⋅ x + b f(x) = w · x + b f(x)=w⋅x+b 的问题转化为对 w 、 b w、b w、b 的最优化问题,最终化为对偶因子的求解。
总结成一句话即是:从最大间隔出发(目的是为了确定法向量 w w w),转化为求对变量 w w w 和 b b b 的凸二次规划问题。
3. 函数间隔与几何间隔
一般而言,一个点距离超平面的远近可以表示为分类预测的确信或准确程度。在超平面 w ⋅ x + b w · x + b w⋅x+b 确定的情况下, ∣ w ⋅ x + b ∣ \vert w · x + b\vert ∣w⋅x+b∣能够相对的表示点 x x x 到距离超平面的远近,而 w ⋅ x + b w · x + b w⋅x+b 的符号与类标记 y y y 的符号是否一致表示分类是否正确,所以,可以用量 y ⋅ ( w ⋅ x + b ) y · (w · x + b) y⋅(w⋅x+b) 的正负性来判定或表示分类的正确性和确信度。
于此,我们便引出了定义样本到分类间隔距离的函数间隔的概念。
3.1 函数间隔
给定一个训练样本
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi),
x
x
x是特征,
y
y
y是结果标签,
i
i
i表示第
i
i
i个样本,则定义函数间隔如下:
γ
^
i
=
y
i
(
w
T
x
i
+
b
)
\hat\gamma_i=y_i(w^Tx_i+b)
γ^i=yi(wTxi+b)
可想而知,当
y
i
=
1
y_i=1
yi=1时,在我们的
g
(
z
)
g(z)
g(z)定义中,
w
T
x
i
+
b
≥
0
w^Tx_i+b\geq0
wTxi+b≥0,
γ
^
i
\hat\gamma_i
γ^i的值实际上就是
∣
w
T
x
i
+
b
∣
\vert w^Tx_i+b\vert
∣wTxi+b∣。反之亦然。为了使函数间隔最大(更大的信心确定该例是正例还是负例),当
y
i
=
1
y_i=1
yi=1时,
w
T
x
i
+
b
w^Tx_i+b
wTxi+b应该是个大整数,反之是个大负数。因此函数间隔代表了我们认为特征是正例还是负例的确信度。
接着,我们定义超平面
(
w
,
b
)
(w,b)
(w,b)关于训练数据集
T
T
T的函数间隔为超平面
(
w
,
b
)
(w,b)
(w,b)关于
T
T
T中所有样本点
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi)的函数间隔最小值,即定义全局样本上的函数间隔为:
γ
^
=
min
i
=
1......
m
γ
^
i
\hat\gamma=\min_{i=1......m}\hat\gamma_i
γ^=i=1......mminγ^i
就是在训练样本上分类正例和负例确信度最小的那个函数间隔。
然而,上述定义的函数间隔虽然可以表示分类预测的正确性和确信度,但在选择分类超平面时,只有函数间隔还远远不够,因为如果成比例的改变 w w w 和 b b b,如将他们改变为 2 w 2w 2w 和 2 b 2b 2b,虽然此时超平面没有改变,但函数间隔的值却变成了原来的 4 4 4 倍。其实,我们可以对法向量 w w w 加些约束条件,使其表面上看起来规范化。如此,将引出真正定义点到超平面的距离——几何间隔的概念。
3.2 几何间隔
如图所示,假设有了
B
B
B点所在的
w
T
x
+
b
=
0
w^Tx+b=0
wTx+b=0分割面。
图中任何其他一点,比如
A
A
A到该面的距离以
γ
i
\gamma_i
γi表示,假设
B
B
B就是
A
A
A在分割面上的投影。已知向量
B
A
BA
BA的方向是
w
w
w(分割面的梯度),单位相邻是
w
∥
w
∥
\frac{w}{\Vert w \Vert}
∥w∥w。
A
A
A点是
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi),所以
B
B
B点是
x
=
x
i
−
γ
i
w
∥
w
∥
x=x_i-\gamma_i\frac{w}{\Vert w \Vert}
x=xi−γi∥w∥w,带入
w
T
x
+
b
=
0
w^Tx+b=0
wTx+b=0得:
w
T
(
x
i
−
γ
i
w
∥
w
∥
)
+
b
=
0
w^T(x_i-\gamma_i\frac{w}{\Vert w \Vert})+b=0
wT(xi−γi∥w∥w)+b=0
进一步得到
γ
i
=
w
T
x
i
+
b
∥
w
∥
=
(
w
∥
w
∥
)
T
x
i
+
b
∥
w
∥
\gamma_i=\frac{w^Tx_i+b}{\Vert w \Vert}=\left(\frac{w}{\Vert w \Vert}\right)^Tx_i+\frac{b}{\Vert w \Vert}
γi=∥w∥wTxi+b=(∥w∥w)Txi+∥w∥b
γ
i
\gamma_i
γi实际上就是点到平面的距离。
通常,对于训练集
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi),定几何间隔为:
γ
i
=
y
i
(
(
w
∥
w
∥
)
T
x
i
+
b
∥
w
∥
)
\gamma_i=y_i\left(\left(\frac{w}{\Vert w \Vert}\right)^Tx_i+\frac{b}{\Vert w \Vert}\right)
γi=yi((∥w∥w)Txi+∥w∥b)
当
∥
w
∥
=
1
\Vert w \Vert=1
∥w∥=1时,就是函数间隔。
同样,定义全局样本上的几何间隔为:
γ
=
min
i
=
1......
m
γ
i
.
\gamma=\min_{i=1......m}\gamma_i.
γ=i=1......mminγi.
支持向量机(SVM)的初步了解到此为止。