这里有两个类别的数据, class1 与class2,要把这两类分开。我们可以找到很多条直线将它们分开,只要位于两类数据之间即可,然而, 我们的目的不只是为了区分现有的两类数据, 我们真正想要达到的目的是: 当模型在现有数据训练完成后, 将其应用到新的数据时,我们仍然可以很好的区分两类数据,达到预期的分类效果,即 泛化(generalization) 能力。
哪一条直线分类效果更好?
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,使得距离最大,即:
做一个转换,得到的最优化问题是:
方法: 通过拉格朗日算子法,使带约束的优化目标转为不带约束的优化函数,使得 w w w 和 b b b 的偏导数等于零,带入原来的式子,转成对偶问题。
这是一个含有不等式约束的凸二次规划问题,可以对其使用拉格朗日乘子法得到其对偶问题(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 就是核函数。