而本节一开始讨论的问题,只有一个约束方程(因为参数只有w和b)即:y(w T x+b)=1,所有的点(一共m个)都要满足这个约束方程 。而关于为什么非支持向量的系数alpha会等于零呢?也就是相当于前面的,k=1(有k个约束条件)的情况下,m个样本点中,非支持向量的约束g0,为了最优解,除了f(w)应该都等于零,所以alpha应该等于零 。
另外可以参考这段话:
即,若d* = p*== x * 满足KKT条件
由上面那句话可以知道,
折腾这么长时间,也就是为了说明,已经知道原问题
是凸优化问题,所以,只要对偶问题的自变量w满足了KKT条件,那么它就是对偶问题的最优解w * ,同时也是原问题的最优解了 。
所以,由上可知,只要解出了2.1.3中的问题的参数w和b,也就是原问题的解了 。
重新回到SVM的优化问题(其中每个约束式实际就是一个训练样本):
我们将约束条件改写为拉格朗日的形式:
由KKT条件可知,只有当函数间隔是1(g=0)的时候,α i 0 。此时,这个样例 w i在约束平面上受到约束。对于其它的不在线上的样例点(g0),极值不会在其范围内去的,所以这些样例点前面的系数α i =0.
实线是最大间隔超平面,假设×号的是正例,圆圈的是负例 。在虚线上的点就是函数间隔是1的点,他们前面的系数α i 0,这三个点被称作 支持向量 。
由上面问题,构造拉格朗日函数如下(没有等式约束,所以没有β):
————————————————————————————————
下面我们按照对偶问题的求解步骤来一步步进行,由2.1.3可知,对偶问题的形式为:
首先求解L的最小值(最里面的先求),此时αi是固定的,L的最小值只与w和b有关 。对w和b分别求偏导数 。
得到
将上式带回到拉格朗日函数中得到,此时得到的是该函数的最小值(目标函数是凸函数),即里面的min L已经求出,接下来就是求max了
代入后,化简过程如下:
最后得到
由于最后一项是0,因此简化为
这里,上式中左右边的向量内积,用方括号表示 。
到这一步,拉格朗日函数只包含了一个变量α i。接着进行下一步 ,最大化的过程,求得α i。
假设求得了α i就能根据求导得到的结果
求得w,然后就能得到b 。
b 就是距离超平面最近的正的函数间隔要等于离超平面最近的负的函数间隔 。(其实,由前面的那个x和圈的图,可以认为b就是截距,这个截距b等于上下两条虚线的截距的平均值 。)
注意,这里的w,b,alpha都是 向量,都是m维的向量
至于这里的α怎么求得,即上面的最大化问题怎么求解,将留给下一篇中的SMO算法来阐明 。
也就是说,手动解的话,还是需要利用SMO算法,求得α才行 。
————————————————————————————————
这里考虑另外一个问题,由于前面求解中得到
用α i 代替w带入判别模型w T x+b,得到:
也就是说,利用判别模型对新来样本进行判别时 ,以前新来的要分类的样本首先根据w和b做一次线性运算,然后看求的结果是大于1还是小于1来判断正例还是负例 。大于1,说明在超平面的上面,说明是正例 。同理,小于1说明在超平面的下面,说明是负例 。
约束条件是wx+b-1小于等于零,所以判断就是wx+b与1进行大小比较
现在有了alpha,不需要求出w (那b呢,b怎么求呢,前面已经解释,b是由离超平面最近的间隔和负的函数间隔相等 。。。得到的 。所以,将新来的样本与训练数据中 支持向量 做内积以后,再确定最大的正数函数间隔以及最小的负数函数间隔,即可 。)
就冲上面这段话,支持向量的系数alpha,也不能等于0 。
另外,那有人会说,与前面所有的样本都做运算是不是太耗时了?其实不然,我们从KKT条件中得到,只有支持向量的α i 0 (不等于零)其他情况α i 是等于零的 。比如,像前面那个x和圈的图,新来的样本只需要和三个支持向量做运算即可。
由此可以看到,求出α i 以后,只需要利用支持向量,就可以来判断新来的样例是正例还是负例了 。也许这也是是为什么叫支持向量机吧 。
上面这个公式,为下面要提到的核函数(kernel)做了很好的铺垫 。
下面,先把没求得的alpha放一放,趁着刚刚得到的这个公式的热乎劲,再去看看核函数 。
支持向量机支持向量机是一个功能请打并且全面的机器学习模型,它能够执行线性或非线性、回归,甚至是异常值检测任务 。它是机器学习领域最受欢迎的模型之一 。SVM特别适用于中小型复杂数据集的分类 。
秒懂生活扩展阅读
- 荣耀v20支持几倍变焦
- 减少雾霾的措施
- oppor8107支持联通4g
- 微信扫码支付需网络支持吗
- 12306买票支持京东白条吗
- 私有云怎么搭建
- 小米mix2s支持速充吗
- 软件技术支持主要的工作是什么
- 华为下拉搜索怎么关闭
- 周易预测生辰八字 周易预测