支持向量机

北慕城南 提交于 2020-02-07 02:53:34

支持向量机

简要介绍

支持向量机(support vector machine),又称SVM,是一种常见的数据分类学习算法,目的是求得参数建立函数f(X)=WTX+bf(X)=W^TX+b,将样本代入,大于0的与小于0的为不同类别,求得参数有两种方法,其一,满足一个条件,即f(X)=0f(X)=0分开的两个类别间隔要最大化,所以SVM亦称为最大间隔算法,见图一,另外一种方法是类似对数几率回归一样,即使得损失函数最小化,损失函数比较特殊,此处建议观看吴恩达老师的课程支持向量机一章,下文对第一种方法推导。
在这里插入图片描述

具体原理

两个类别的最大间距为2w{2}\over{||w||},最大化间距即最小化w||w||,即我们最终要求
w,b使12w2:yi(wTxi+b)1i=1,2,,m 求参数w,b使得\\ \frac{1}{2}||w||^2最小\\ 约束条件:y_i(w^Tx_i+b)\ge 1,i=1,2,\cdots,m
约束条件即为要满足这条直线(或者平面或者更高维的东东)能够完全分开数据,这是SVM的硬间隔,当然也有软间隔,即不需要完全分开数据,能够承受一定的误差,则能够减少噪声样本的影响,我们还是回到硬间隔上。

上面的公式是不等约束条件的优化问题,用拉格朗日乘子法:
L(w,b,α)=12w2+i=1mαi(1(yi(wTxi+b))).Lw=0  w=i=1mαiyixi    (1)Lb=0  i=1mαiyi=0    (2) L(w,b,\alpha)=\frac{1}{2}||w||^2+\sum_{i=1}^m\alpha_i(1-(y_i(w^Tx_i+b))).\\ \frac{\partial L}{\partial w}=0\space \space \rightarrow w=\sum_{i=1}^m\alpha_iy_ix_i\space\space\space\space(1)\\ \frac{\partial L}{\partial b}=0\space \space \rightarrow \sum_{i=1}^m\alpha_iy_i=0\space\space\space\space(2)
将(1)式代入拉格朗日函数中,经过复杂的化简,过程见图
在这里插入图片描述

即最终得到
W(α)=i=1Nαi12(i,j=1NαiαjyiyjxiTxj) W(\alpha)=\sum_{i=1}^N\alpha_i-\frac{1}{2}(\sum_{i,j=1}^N\alpha_i\alpha_jy_iy_jx_i^Tx_j)
现在求参数α\alpha的值使得上述式子有最大值,从而可以求得wwbb,不过上述式子还有约束条件
αi0yi(wTxi+b)1i=1,2,,mαi(1yi(wTxi+b))=0i=1,2,,m \alpha_i\ge0\\ y_i(w^Tx_i+b)\ge 1,i=1,2,\cdots,m\\ \alpha_i(1-y_i(w^Tx_i+b))=0,i=1,2,\cdots,m
关于为什么求12w2\frac{1}{2}||w||^2最小等价于求W(α)W(\alpha)最大,并且还有不同的约束条件,这就涉及到拉格朗日乘子法中不等式约束条件的做法了,即求对偶问题和KKT条件,这里不多述

然而这么多αi\alpha_i,又怎么求呢?这里就用到SMO(序列最小化算法)

其核心思想是

  • 选取两个合适的αi,αj\alpha_i,\alpha_j,将其他变量看作常数
  • 这就变成了双变量的优化问题,约束条件为αiyi+αjyj=C\alpha_iy_i+\alpha_jy_j=C
  • 重复步骤1直至达到终止循环条件

有两个问题:1,如何选取αi,αj\alpha_i,\alpha_j,2,循环终止条件是什么

  1. αi\alpha_i应该要遍历所有的α\alpha都要取一遍,αj\alpha_j的选取与αi\alpha_i有关,其标准为两个α\alpha所对应的预测误差值之差的绝对值最大

  2. 当所有α\alpha不能被更新,即收敛后则终止循环

最大

  1. 当所有α\alpha不能被更新,即收敛后则终止循环
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!