首页 > 代码库 > 支持向量机(三)
支持向量机(三)
根据上一篇文章中的目标函数和约束条件(22)和(23)式,这是一个二次规划(quadratic programming,QP )问题,先分析如何求解。
这里为了方便,再写一次目标函数和约束条件,
(0)
(1)
并且把模型输出函数也写一遍(从上一篇中(3)式而来),
(2)
然而实际上的训练数据集不一定是严格的线性可分,若非如此,那就不存在理想的分离超平面。也就是,某些样本点不能满足上篇文章中的(15)式条件。为了方便起见,这里再次给出原始的目标函数和约束条件:
(5)
(6)
为了解决这个问题,对每个样本点引入松弛变量(slack variable) ξi >=0,放宽约束条件(即允许一定数量的误分类点或者是带内分类点,显然ξi 越大,可以允许的数据点离间隔边界越远,当距离达到1/||w||时,到达分离超平面),约束条件变为,
(7)
同时目标函数变为,
(8)
如此,线性严格可分就是ξi =0的情况,C是平衡间隔和分类错误点的参数,也叫惩罚因子,C越大时对误分类的惩罚越大。
对目标函数(8)来说,最小化(8)的目的一方面是为了让原来的目标函数(5)尽量小,也就是函数间隔尽量大,另一方面使误分类数量尽量减少。
如此,便可类似前面处理数据集严格线性可分来处理近似线性可分的数据集,由于实际中总是不可能严格线性可分,所以更需要处理近似线性可分的情况,我们把这种情况称为软间隔最大化,称这样的模型为线性支持向量机。当然,线性可分支持向量机是一种特殊的线性支持向量机。
对偶算法
现在总结一下问题
(9)
(10)
(11)
惩罚因子C不作为约束条件,我们可以在实际问题中根据经验指定为一个固定值。
拉格朗日函数为,
(12)
对偶问题是拉格朗日函数的极大极小问题
1)求L对w,b,ξ的极小,
解得,
(13)
(14)
(15)
代入(12)式,得,
(16)
2)对(16)式求对α的极大,得
由于拉格朗日乘子ui>=0,所以有
于是整理上述函数和约束条件为,
(17)
(18)
假设求的上述最优问题的一个解为α*,与上一篇文章中类似的推导,有
(19)
(20)
其中b的求解,选择α*某个不为0的分量,假设分量下标为j,对应的样本点为(xj,yj)。
分类决策函数则为,
(21)
下面证明(17)和(18)下的最优解w是唯一的。令,N+1+J维向量
z=(wT,b,ξT)T=(wT, b, ξ1, ... , ξN)T,则目标函数为
(22)
由于这是个凸规划问题,故其解集是凸集,且任意解都是全局解,假设z‘, z‘‘是最优解,那么zt=(1-t)z‘ + tz‘‘ (t∈[0,1])也是最优解,故
F(z‘)=F(z‘‘)=F(zt) (23)
由于
zt=(1-t)z‘ + tz‘‘=(1-t)(w‘T,b‘,ξ‘T)T + t(w‘‘T, b‘‘, ξ‘‘T)T
= (((1-t)w‘ + tw‘‘)T, (1-t)b‘ + tb‘‘, ((1-t)ξ‘ + tξ‘‘)T)T =(wtT,bt,ξtT)T (24)
联合(23)和(24)式,有
变换一下得,
(25)
(25)为t的函数,对t求一阶导和二阶导,得
显然,w‘‘ 和 w‘ 相等,所以w是唯一的。
另外,b的解不是唯一的,而是一个区间,具体证明暂且先略过,实际求解b的值时,可以取所有符合条件的样本点,即,对α*所有不为0的分量,对应的样本点均符合条件,代入(20)式计算再求平均值。
支持向量
求得的α的分量不为0时,相应的样本点(xi, yi)刚好使约束条件(10)取等号,这些样本点就称为支持向量。
当然,由于α的解不是唯一的,如果对于任意α的解,都有αi>0,则对应的输入xi为基本支持向量(注意,支持向量不一定是基本支持向量)。
假设对于问题(9)(10)和(11),其解为(w*,b*),则满足
(w* x + b*) >=1 (26)
的区域为带有间隔的正确划分区,间隔边界为上式等号成立的情况。
分离超平面为
(w* x + b*) = 0 (27)
不难知道,支持向量xi距离其对应的间隔边界的距离为ξi/||w||,距离超平面的距离为(1-ξi)/||w||,当ξi>1时,距离为负,表示分类错误。如下图,
其中 “。”表示正例,“x”表示负例。
如何求解α的最优解目前还没有介绍,可以先不着急,下篇继续介绍更一般的情况:非线性支持向量机。
ref
- 统计学习方法,李航
- 数据挖掘中的新方法—支持向量机,邓乃扬,田英杰
支持向量机(三)