支持向量机原理总结
支持向量
法向量
截距
复数
虚数
等高线:网上很多举例用的是等高线视角
梯度
凸函数
拉格朗日乘子法
拉格朗日对偶
向量内积
:http://dec3.jlu.edu.cn/webcourse/t000022/teach/chapter5/5_1.htm
松弛变量
函数间隔:|w*x+b|,当定义分隔面上方y=1,分隔面下方y=-1时,函数间隔即为y*(w*x+b),用y控制非负,函数间隔=几何间隔*(||w||)
几何间隔:在一个数据集上的定义是超平面跟数据集中所有点的间隔中最小的那个间隔,文中的d
函数间隔可以表示分类预测的正确性及确信度,但选择分离超平面时,只有函数间隔还不够,因为只要成比例改变w和b,超平面并没有改变,但函数间隔却变了
支持向量机:分类正确且是最佳位置–>最佳位置转化为支持向量到分隔函数的几何距离最大max(d)
给样本增加类别标签1和-1,在分割函数上的f(x,y)=0,在上方的f(x,y)>0(给定新标签:1),在下方的f(x,y)<0(给定新标签:-1),转化为不等式(改为多维,x,y变为Xi,新增标签变为Yi)
支持向量的函数间隔 = 新增类别标签Y*(wt*x+b)(Y用来保持间隔永远为正数)
支持向量的几何间隔 = 支持向量的函数间隔 /||w|| =1/||w||
函数间隔无法与我们要求的超平面一一对应,因为等比例增加w,b,超平面是不变的,但是函数间隔不断增加,函数间隔为超平面的无关变量,可以固定为一个值。而几何间隔不受此影响,为了求解支持向量的最大几何间隔和计算方便,我们固定支持向量的函数间隔的值为1,得到由上述不等式作为约束条件的函数,(不等式表示所有的点的函数间隔都>=支持向量的函数间隔)max(1/||w||)–>min 1/2*||w||^2(分子变分母,平方为去除距离计算的根号)
由拉格朗日乘子(乘子@可取任意>=0的数)法将有约束条件的函数转化为无约束条件的函数:此函数需要满足(1.不满足原不等式约束的x,得到的值是无穷大;2.满足原不等式约束的x得到的就是原函数)
重点在这里,由拉格朗日乘子转化得来的无约束等式是针对所有的点,因为里面包含所有i,而且也不满足2条件(原函数怎么来的?是我们定义支持向量的函数间隔为1,得到支持向量的几何间隔,在经过转化,自然针对的是支持向量),我们的求解函数只要针对的支持向量,怎么办呢,在L函数前加一个max,这样就指定了支持向量,这个就才是和1/2 ||w||^2等价的函数,别忘了一开始我们的目的是求最小的||w||^2
(如果非要把非支持向量取max(L),由于我们假设支持向量的函数间隔为1,所以非支持向量的函数间隔>1,乘子后面的值>0, 只能乘子=0,结果和约束为支持向量的结果没有区别,只是换了种说法罢了。所以我们最终的求解目标跟非支持向量完全没有关系,这就是支持向量机和logistic回归的区别,后者考虑全局,可能会为了让大部分点分类的更清楚,离分割线更远,而牺牲一小部的点过于靠近分割线,而支持向量机完全不考虑远方的点,这也简化了计算的复杂度)
问题转化为求解这个函数的min,所以我们的目标函数又有min又有max,就要用到拉格朗日对偶来简化操作,将max和min交换位置,得到的结果自然p>=d(简单理解,不必细究:最大中的最小 >= 最小中的最大)总之,第二个问题的最优值 d *在这里提供了一个第一个问题的最优值 p∗ 的一个下界,在满足KKT条件的情况下,这两者相等,这个时候我们就可以通过求解第二个问题来间接地求解第一个问题。
KKT条件的全称是Karush-Kuhn-Tucker条件,
指对经过拉格朗日函数处理之后的新目标函数L(w, b, α)= f(w) + a*g(w)+b*h(w),满足以下条件对偶变换不影响结果,即minmax(L ) = maxmin(L)
条件一:L(w,b,α)对w求导为零:
条件二:h(x) = 0;
条件三:α*g(x) = 0;
条件二中的h(x),我们的目标函数里没有关于b*h(w)的内容,所以满足条件二
条件三就是上面说的在L函数前加了max得到新的函数,用来约束对象为支持向量
对于条件一:我们最终求得的w0不是满足max(L)就是满足min(L),L(w0)肯定是一个极值,自然L’(w0) =0,即满足条件一
因此现在我们便转化为求解第二个问题。
先求解内侧最小值,分别对w,b求偏导=0,代入原公式进行转化,值得注意这里推导过程中引入了第二个下标j,因为对xy转置的原因,需要注意
第二个等式约束告诉你,一当你调整某个a,你至少需要在更改另一个a,来满足这个等式,这也是为什么在python实现过程中需要用到两个a的原因:
转载自:http://blog.****.net/c406495762/article/details/78072313