支持向量机原理总结

支持向量
法向量
截距
复数
虚数
等高线:网上很多举例用的是等高线视角
梯度(沿着梯度的方向改变x,函数值y下降或上升的越快,最大步长为梯度的模)
凸函数(局部最小值就是全局极小值)

拉格朗日乘子法(将含有不等式约束的目标函数转化为不含不等式的L函数,但两者并不是说等价的,取某种条件的时候才可能等价,比如svm里max(L)再约束范围内才和原目标函数等价)

拉格朗日对偶(满足kkt条件的L函数可以调换max min的前后位置,极值是相等的)
向量内积
:http://dec3.jlu.edu.cn/webcourse/t000022/teach/chapter5/5_1.htm
松弛变量(越大,表示越不能容忍分类的错误,越容易过拟合)

函数间隔:|wx+b|,当定义分隔面上方y=1,分隔面下方y=-1时,函数间隔即为y(wx+b),用y控制非负,函数间隔=几何间隔(||w||)

几何间隔:在一个数据集上的定义是超平面跟数据集中所有点的间隔中最小的那个间隔,文中的d

函数间隔可以表示分类预测的正确性及确信度,但选择分离超平面时,只有函数间隔还不够,因为只要成比例改变w和b(意思是将两条虚线平行同时向外或向内移动),目标函数(图中的实线)都是不变的,超平面并没有改变,但函数间隔却变了

支持向量机:分类正确且是最佳位置–>最佳位置转化为支持向量到分隔函数的几何距离最大max(d)
支持向量机原理总结_第1张图片

给样本增加类别标签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||

我觉得用上面这种解释有点难理解,当我看了《精通数据科学:从线性回归到深度学习》这本书的时候,其中的转化比较直观点,下面打个草稿,随便看看:
支持向量机原理总结_第2张图片

函数间隔无法与我们要求的超平面一一对应,因为等比例增加w,b,超平面是不变的,但是函数间隔不断增加,函数间隔为超平面的无关变量,可以固定为一个值。而几何间隔不受此影响,为了求解支持向量的最大几何间隔和计算方便,我们固定支持向量的函数间隔的值为1,得到由上述不等式作为约束条件的函数,(不等式表示所有的点的函数间隔都>=支持向量的函数间隔)max(1/||w||)–>min 1/2||w||^2*(分子变分母,平方为去除距离计算的根号)
支持向量机原理总结_第3张图片

由拉格朗日乘子(乘子@可取任意>=0的数)法将有约束条件的函数转化为无约束条件的函数(这里不是指L,而是指max(L)):此函数需要满足(1.不满足原不等式约束的x,得到的值是无穷大;2.满足原不等式约束的x得到的就是原函数)
支持向量机原理总结_第4张图片

重点在这里,由拉格朗日乘子转化得来的L函数再满足约束的情况下,取值范围是:[-无穷,||w||2/2 ],无法对L函数求min,但是max(L)=f(x),所以minf(x) = min max(L),此时的约束条件是a(i)=0或者y(i)(wx+b)=1,意味着只考虑支持向量,其他非支持向量点的乘子都是0
(如果非要把
非支持向量**取max(L),由于我们假设支持向量的函数间隔为1,所以非支持向量的函数间隔>1,乘子后面的值>0, 只能乘子=0,结果和约束为支持向量的结果没有区别,只是换了种说法罢了。所以我们最终的求解目标跟非支持向量完全没有关系,这就是支持向量机和logistic回归的区别,后者考虑全局,可能会为了让大部分点分类的更清楚,离分割线更远,而牺牲一小部的点过于靠近分割线,而支持向量机完全不考虑远方的点,这也简化了计算的复杂度)
这里写图片描述

*问题转化为求解这个函数的min,所以我们的目标函数又有min又有max,就要用到拉格朗日对偶来简化操作,将max和min交换位置,得到的结果自然p>=d(简单理解,不必细究:最大中的最小 >= 最小中的最大)总之,第二个问题的最优值 d 在这里提供了一个第一个问题的最优值 p∗ 的一个下界,在满足KKT条件的情况下,这两者相等,这个时候我们就可以通过求解第二个问题来间接地求解第一个问题。
这里写图片描述
支持向量机原理总结_第5张图片

KKT条件的全称是Karush-Kuhn-Tucker条件,

指对经过拉格朗日函数处理之后的新目标函数L(w, b, α)= f(w) + ag(w)+bh(w),满足以下条件对偶变换不影响结果,即minmax(L ) = maxmin(L)

条件一:L(x,b,α)对w求导为零:
条件二:bh(x) = 0;
条件三:α
g(x) = 0;
其他条件:a(i)>=0,g(x)<=0
支持向量机原理总结_第6张图片
分析我们求解的minmax(L)是否满足KKT条件:

条件二中的h(x),我们的目标函数里没有关于b*h(x)的内容,所以满足条件二

条件三,因为求的是minmax(L),而max(L)带来的结果就是a(i)*g(x)=0,如果minmax(L)有解,结果肯定是满足这个条件的

对于条件一:我们最终求得的w0不是满足max(L)就是满足min(L),L(w0)肯定是一个极值,自然L’(w0) =0,即满足条件一

因此现在我们便转化为求解第二个问题。
支持向量机原理总结_第7张图片

先求解内侧最小值,分别对w,b求偏导=0,代入原公式进行转化,值得注意这里推导过程中引入了第二个下标j,因为对xy转置的原因,需要注意

支持向量机原理总结_第8张图片
第二个等式约束告诉你,一当你调整某个a,你至少需要在更改另一个a,来满足这个等式,这也是为什么在python实现过程中需要用到两个a的原因:
支持向量机原理总结_第9张图片

转载自:http://blog.csdn.net/c406495762/article/details/78072313

你可能感兴趣的:(python机器学习)