一、SVM提出
这里有两个类别的数据, class1 与class2,要把这两类分开。我们可以找到很多条直线将它们分开,只要位于两类数据之间即可,然而, 我们的目的不只是为了区分现有的两类数据, 我们真正想要达到的目的是: 当模型在现有数据训练完成后, 将其应用到新的数据时,我们仍然可以很好的区分两类数据,达到预期的分类效果,即 泛化(generalization) 能力。
哪一条直线分类效果更好?
SVM尝试寻找一个最优的决策边界距离两个类别的最近的样本最远。
样本中距离超平面最近的一些点,这些点叫做支持向量。
二、SVM最优化问题
SVM 想要的就是找到各类样本点到超平面的距离最远,也就是找到最大间隔超平面。任意超平面可以用这个线性方程来描述: w T x + b = 0 w^Tx + b = 0 wTx+b=0
维空间点
(
x
,
y
)
(x,y)
(x,y) 到直线
A
x
+
B
y
+
C
=
0
Ax + By +C = 0
Ax+By+C=0 的距离公式是:
扩展到
n
n
n 维空间后,点
x
=
(
x
1
,
x
2
,
.
.
.
,
x
n
)
x =(x_1,x_2, ..., x_n)
x=(x1,x2,...,xn) 到直线
w
T
x
+
b
=
0
w^Tx + b = 0
wTx+b=0 的距离为:
根据支持向量的定义我们知道,支持向量到超平面的距离为
d
d
d,其他点到超平面的距离大于
d
d
d 。于是我们有这样的一个公式:
稍作转换:
∣
∣
w
∣
∣
d
||w|| d
∣∣w∣∣d 是正数,我们暂且令它为 1(之所以令它等于1,是为了方便推导和优化,且这样做对目标函数的优化没有影响),故:
将两个方程合并,我们可以简写为:
两个类别支持向量到超平面的距离之和为:
欲找到具有“最大间隔” 的划分超平面,也就是要找到能满足式上式中,约束的参数
w
w
w 和
b
b
b,使得距离最大,即:
做一个转换,得到的最优化问题是:
三、为什么要求对偶问题
- 方便核函数的引入。
- 原问题的求解复杂度与特征的维数相关,而转成对偶问题后只与问题的变量个数有关。由于SVM的变量个数为支持向量的个数,相较于特征位数较少,因此转对偶问题。
方法: 通过拉格朗日算子法,使带约束的优化目标转为不带约束的优化函数,使得 w w w 和 b b b 的偏导数等于零,带入原来的式子,转成对偶问题。
四、SVM转换为对偶问题
这是一个含有不等式约束的凸二次规划问题,可以对其使用拉格朗日乘子法得到其对偶问题(dual problem)。首先,每条约束添加拉格朗日乘子 Font metrics not found for font: . ,则该问题的拉格朗日函数可写为:
将以上两个等式带入拉格朗日目标函数,消去
w
w
w 和
b
b
b,得:
五、核函数
假设训练样本是线性可分的,即存在一个划分超平面能将训练样本正确分类。然而在现实任务中,原始样本空间内也许并不存在一个能正确划分两类样本的超平面。
例如图中的“异或”问题就不是线性可分的。
若将原始的二维空间映射到一个合适的三维空间,就能找到一个合适的划分超平面。幸运的是,如果原始空间是有限维,那么一定存在一个高维特征空间使样本可分。
令
ϕ
(
𝑥
)
ϕ(𝑥)
ϕ(x) 表示将
𝑥
𝑥
x 映射后的特征向量,于是,在特征空间中划分超平面所对应的模型可表示为:
类比线性模型:
其对偶问题:
涉及到计算
ϕ
(
𝒙
𝑖
)
T
ϕ
(
𝒙
𝑗
)
ϕ(𝒙_𝑖 )^T ϕ(𝒙_𝑗)
ϕ(xi)Tϕ(xj);映射到特征空间之后的内积。由于特征空间维数可能很高,甚至可能是无穷维。因此直接计算
ϕ
(
𝒙
𝑖
)
T
ϕ
(
𝒙
𝑗
)
ϕ(𝒙_𝑖 )^T ϕ(𝒙_𝑗 )
ϕ(xi)Tϕ(xj) 通常是困难的,为了避开这个障碍,可以设想这样一个函数:
有了这样的函数,我们就不必直接去计算高维甚至无穷维特征空间中的内积,于是上式可重写为:
这里的
K
K
K 就是核函数。