SVM的基本思想:给定训练样本集D={(x1,y1),(x2,y2),...,(xm,ym)},yi∈{-1,+1},基于训练集D在样本空间中找到一个最优的超平面,将不同类别的数据点分开,并使间隔最大化。
这个最优的超平面被定义为能够使两个类别中的支持向量(离超平面最近的样本点)到超平面的距离(间隔)最大化的超平面。直观上看,应该找位于两类训练样本“正中间”的划分超平面,即上图中红色的直线,因为该划分超平面对训练样本局部扰动的“容忍”性最好。
超平面
在样本空间中,划分超平面可通过如下线性方程来描述:
其中 为法向量,决定了超平面的方向;
为位移项,决定了超平面与原点之间的距离。显然,划分超平面被法向量
和位移
所确定,将其记为
.
支持向量
任意点 到超平面
的距离可写为:
假设超平面 (w,b) 能将训练样本正确分类,那么对于(xi,yi)∈D,则满足下列约束条件:
- 若
,有
;
- 若
,有
;
距离超平面最近的几个训练样本点能使上式等号成立,被称为“支持向量”(support vector)。
间隔
两个不同类别的支持向量到超平面的距离之和为 (上图中两条虚线之间的距离),被称为“间隔”(margin)。
为了找到最优的超平面,即具有“最大间隔”(上图中红色直线)的划分超平面,也就是要找到能满足约束条件的参数 和
,使得
最大,即:
支持向量机的基本型
为了最大化间隔,仅需最大化 ,等价于最小化
,即求解下式:
通过求解上式得到大间隔划分超平面所对应的模型:, 其中
和
是模型参数,这就是支持向量机(SVM)的基本形式。
求解支持向量机
目标
求解SVM基本型,得到大间隔划分超平面所对应的模型 ,其中
和
是模型参数
求解过程
解决这个凸优化问题,通常使用拉格朗日乘子法得到原始问题的对偶问题,并通过解决它的对偶问题来求得原始问题的解。
- 对SVM基本型的每条约束添加拉格朗日乘子
,则该问题的拉格朗日函数可写为
其中,。
分别对
和
求偏导并等于0:
将上式展开:
分别求偏导数:
即:
- 代入原式可得出对偶问题:
即:
- 输入训练样本解出
后,求出
和
后即可得出模型:
从对偶问题中解出的 即为拉格朗日乘子
,对应着训练样本
,上述过程需满足KKT(Karush-Kuhn-Tucker)条件,即要求
于是,对任意训练样本 ,总有
或
:
- 若
,则该样本将不会在超平面模型
的求和中出现,就不会对
有任何影响;
- 若
, 则必有
,所对应的样本点位于最大间隔边界上,是一个支持向量。
这也显示出支持向量机的一个重要性质:训练完成后,大部分的训练样本都不需保留,最终模型仅与支持向量有关。
期待后续:SMO(Sequential Minimal Optimization)算法、核函数等。