【机器学习】推导支持向量机SVM二分类

  现实生活中,平面有两个坐标,平面空间可以表示为 Φ(x,y)=[ab][xy] ;三维空间表示为 Φ(x,y)=[abc]xyz 。我们需要处理的信息包含多个特征,即包含更多的维度,我们可以建立抽象的超空间来放置这些信息。其中超平面定义为 wTx+b=0 x 是信息的特征向量。
  SVM中文叫支持向量机。设想超空间中有两个可分离的集合,我们可以用无限个超平面来分离这两个集合,但其中支持平面是唯一,即支持平面刚好在两个集合之间的中心。SVM便是找到这个支持平面的算法。
为了方便计算,我们将两个可分离集合中距离最近的两个元素向量定义为支持向量,将分类元素的判别值g(x)=wTx+b分别归一化为1和-1。解析几何中,三维点到三维平面的距离的公式为

r=Ax+By+Cz+DA2+B2+C2
,推广到超平面就是 r=g(x)||w|| 。为了最大可能地分离两个集合,我们计算得到此时支持向量的距离为 sum(r0)=1/||w||(1)/||w||=2/||w|| ,因此有 r1/||w||argmin(||w||) 。我们要在当前限制条件下,尽量缩小w的模值。
  从上述结论中,我们得到一个最优化问题。对于支持向量有 argminΦ(w)=1/2wTw,subject to dig(xi)=1 ,非支持向量有 argminΦ(w)=1/2wTw,subject to dig(xi)>1 。因此有
argminΦ(w)=1/2wTw,subject to dig(xi)1
,其中 di 是判别结果,取值为1和-1。
  但是实际情况中,两个待区分的集合,边界可能是模糊的,总有几个偏离点,因此要引入松弛变量来弹性控制分类力度。上述式子写成
argminΦ(w)=12wTw+Cξi,subject to dig(xi)(1ξi)0ξi0
接下来使用拉格朗日乘数法进行对偶问题转换,引入非负辅助变量 α,β 。为了取得最小值,我们求取导数来找到极值:
J=12wTw+Cξiαi[dig(xi)(1ξi)]βiξi,αi0,βi0Jw=wαidixi=0w=αidixiJb=αidi=0Jξi=Cαiβi=0C=αi+βi,αiC
代回J函数中有
J=12ijαiαjdidjxTixj+i(αi+βi)ξiijαiαjdidjxTixjbiαidi+iαii(αi+βi)ξi=iαi12ijαiαjdidjxTixjsubject to αidi=0,0αiC
这里看到, ξ β 被消去了,只剩下 α,d,x ,跟不考虑松弛变量情况下的对偶问题是差不多的,区别只在于 α 的取值范围。我可以调整 α 的取值范围,来控制SVM的松弛程度。
  引入核方法也比较简单,令 k(x) 为核函数,有 g(k(xi))=wTk(xi)+b ,那么
Jw=wiαidik(xi)=0J=iαi12ijαiαjdidjk(xi)Tk(xj)=iαi12ijαiαjdidjK(xi,xj)subject to αidi=0,0αiC
一般使用的核函数有
- 多项式核 (xixj+1)p
- 径向基核 e12σ2|xixj|2
- 双曲核 tanh(αxixj+β)
  如何求解上述问题是个麻烦的过程,一般大家都用SMO算法来求解,还得考虑KKT条件之类的复杂的数学过程,这导致普通用户要实现算法,是非常困难且效率低下,一般需要求助于libSVM之类的库。如果要求求解速度快,对精度又有所妥协,可以参考下一篇最小二乘支持向量机(LSSVM)。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值