支持向量机原理
Posted xiaobingqianrui
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了支持向量机原理相关的知识,希望对你有一定的参考价值。
函数间隔
对于给定的训练数据集T和超平面(w,b),定义超平面(w,b)关于样本((x_i,y_i))的函数间隔为:[overline{gamma{_i}} = y_i(wullet{x_i} + b)]
定义超平面(w,b)关于训练数据集T的函数间隔为超平面(w,b)关于T中所有样本点((x_i,y_i))的函数间隔之最小值:[overline{gamma} = minlimits_{i=1,...,N}overline{y_i}]
函数间隔可以表示分类预测的正确性及确信度,但是选择分离超平面时,只有函数间隔却是不够的
几何间隔
对于给定的训练数据集T和超平面(w,b),定义超平面(w,b)关于样本点((x_i,y_i))的几何间隔为:[gamma{_i} = frac{y_i(wullet{x_i} + b)}{||w||}]
定义超平面(w,b)关于训练数据集T的集合间隔为超平面(w,b)关于T中所有样本点((x_i,y_i))的集合间隔之最小值:[gamma = minlimits_{i=1,...,N}gamma_i]
函数间隔和集合间隔之间的关系
从上面函数间隔和几何间隔的定义,可以得到函数间隔和集合间隔之间的关系:[gamma_i = frac{overline{gamma_i}}{||w||}]
[gamma = frac{overline{gamma}}{||w||}]
硬间隔最大化分离超平面
支持向量机学习的基本想法是找到能够正确划分训练数据集并且几何间隔最大的分离超平面,换句话说也就是不仅将正负实例点分开,而且对最难分的实例点(离超平面最近的点)也有足够大的确信度将它们分开,硬间隔是与后面说明的软间隔相对应的
如何求得一个几何间隔最大化的分离超平面,可以表示为下面的约束优化问题:[maxlimits_{w,b}quadgamma]
[s_.t.quadfrac{y_i(wullet{x_i}+b)}{||w||}geqgamma,quad{i=1,2,...,N}]
根据上面函数间隔和几何间隔之间的关系,转换成下面的同等约束问题:[maxlimits_{w,b}quadfrac{overline{gamma}}{||w||}]
[s_.t.quad y_i(wullet{x_i}+b)geqoverline{gamma},quad{i=1,2,...,N}]
由于当w,b按比例变换的的时候函数间隔(overlinegamma)也会呈比例变化,先取(overlinegamma= 1),再由于(frac{1}{||w||})最大化和最小化(frac{1}{2}{||w||}^2)是等价的,于是得到:[minlimits_{w,b}quadfrac{1}{2}{||w||^2}]
[s_.t.quad y_i(wullet{x_i}+b)geq 1,quad{i=1,2,...,N}]
由此得到分离超平面:[w^{*} ullet x + b^{*} = 0]
分类决策函数:[f(x) = sign(w^{*} ullet x + b^{*})]
求解拉格朗日对偶函数:[L(w,b,a) = frac{1}{2}{||w||}^2 - sum_{i=1}^na_i[(y_i(x_iw+b)-1)]----(1)]
对w求偏导:[frac{partial L}{partial w} = w - sum_{i=1}^na_iy_ix_i = 0-----(2)]
对b求偏导:[frac{partial L}{partial b} = sum_{i=1}^na_iy_i = 0-------(3)]
将(2)(3)带入(1)得到:[maxL(a) = -frac{1}{2}sum_{i=1}^nsum_{j=1}^na_ia_jy_iy_jx_ix_j + sum_{i=1}^na_i]
s.t.
[sum_{i=1}^na_iy_i = 0]
[a_i >= 0]
软间隔最大化
对于线性可分的数据集可以直接使用硬间隔最大化超平面进行划分,但对于线性不可分的某些样本点不能满足函数间隔大于等于1的约束条件,为了解决这个问题,可以对每个样本点((x_i,y_i))引进一个松弛变量(xi >= 0),使函数间隔加上松弛变量大于等于1,这样约束条件变为:[yi(wullet x_i + b) >= 1- xi_{i}]
同时,对每个松弛变量(xi_{i})支付一个代价(xi_{i},目标函数由原来的)(frac{1}{2}{||w||}^2)(变为)(frac{1}{2}{||w||}^2 + Csum_{i=1}^n{xi_i})
C为惩罚系数,一般由应用问题决定,C值大时对误分类的惩罚增大,C值小时对误分类惩罚小
线性不可分的线性支持向量机的学习问题编程如下凸二次规划问题:[minlimits_{w,b,xi}quadfrac{1}{2}{||w||^2}+ Csum_{i=1}^n{xi_i}]
[s_.t.quad y_i(wullet{x_i}+b)geq 1 - xi_{i},quad{i=1,2,...,N}]
[xi_{i} >= 0,quad i = 1,2,...,N]
由此得到分离超平面:[w^{*} ullet x + b^{*} = 0]
分类决策函数:[f(x) = sign(w^{*} ullet x + b^{*})]
拉格朗日对偶函数:
[maxL(a) = -frac{1}{2}sum_{i=1}^nsum_{j=1}^na_ia_jy_iy_jx_ix_j + sum_{i=1}^na_i]
s.t.
[sum_{i=1}^na_iy_i = 0]
[a_i >= 0]
[mu_i >= 0]
[C-a_i-mu_i = 0]
核技巧在支持向量机中的应用
注意到在线性支持向量机的对偶问题中,无论是目标函数还是决策函数都只涉及输入实例与实例之间的内积,在对偶问题的目标函数中的内积(x_ix_j)可以用核函数[K(x_i,x_j) = phi (x_i)ullet phi(x_j)]代替,此时对偶问题的目标函数成为[maxL(a) = -frac{1}{2}sum_{i=1}^nsum_{j=1}^na_ia_jy_iy_jK(x_i,x_j) + sum_{i=1}^na_i]
同样,分类决策函数中的内积也可以用核函数代替[f(x) = sign(sum_{i=1}^na_i^*y_iK(x_i,x)+b^*)]
以上是关于支持向量机原理的主要内容,如果未能解决你的问题,请参考以下文章