Fork me on GitHub

支持向量机(SVM)

支持向量机SVM

  • 对于分类问题,还有一种算法叫做支持向量机SVM,我们简化一下二分类数据,假设这些数据只有二维特征,其数据如下:

    我们希望找到一条线,把这些数据能够分类识别,图中三条线,H1是失败的,H2和H3都可以正确分类,但是明显肉眼可以识别出,H3要比H2更好,对于新的未知数据其准确度也是更高的,它们却别在于两类数据集中,距离分割线最近点离分割线的距离,H3要比H2更大(灰色四条法线)。所以在对新的数据进行分类,H3要比H2更准确。推广到N维特征向量和分类超平面,各类数据中距离分类超平面最近的点(向量)就是支持向量。当我们调整超平面的方程时,使得支持向量与超平面的距离最大化。就得到最优分类超平面。这就是支持向量机SVM的算法。

  • SVM怎么得到分类超平面?让我们接着往下看:

1.SVM由线性分类开始

  • 给定样本集

    D=(x1,y1),(x2,y2),...,(xm,ym))),yi{1,1}

    ​ 对于y1,1,当然不会只是认为y只能是-1或1.如果y=2000表示正向,或y=0表示反向,y=300表示正向,或y=5是正向。y只是一个标签,标注为{-1,1},方便描述,所以

    wTxi+b+1yi=+1

    wTxi+b1yi=1

    线性分类器基于驯良样本D再二维空间找到一个超平面分来二类样本,当然这样超平面由很多:

    注意:||w||为范数,用来度量某个向量空间(或矩阵)中的每个向量的长度或大小

    由上图,这根红线代表超平面抗扰动性最好,这个超平面离支线两边数据的间隔最大,对训练集的数据巨行星或噪声最大容忍能力。

    ​ 这个超平面用如下函数表示

    f(x)=wTx+b

    ​ 当f(x)等于0时候,x便是位于超平面点上。而f(x)大于0点对应y=1的数据点,f(x)小于0的点对应y=-1的点。

    ​ 所谓支持向量,使得wTxi+b大于+1或小于-1就更加支持样本分类。为什么要这么搞:

    ​ 我们可以计算得到空间中任意样本到点x超平面的距离为:r=wTx+b||w||,如下图:

    ​ 有:x=x0+rw||w||(简单平面集合),因为x0在超平面上,f(x0)=0,也就是wTx0+b=0,代入上式,可以得到:r=wTx+b||w||=f(x)||w||,为了得到r的绝对值,令r乘上对应的类别y.就可得出几何间隔r=yr=r||w||。从上面可以看出,几何间隔除以||w||才是直观超平面的距离。

    ​ 因y{1,1},超平面上下支持向量到超平面距离都为1,则它们间隔为r=2||w||

    ​ 对于分类,我们已经假设y{1,1}。那么

    wTxi+b0,yiyi=+1;

    wTxi+b0,yiyi=1;

    ​ 则SVM最大分类间隔为max margin,因为我们前面定义wTxi+b0,yi.wTxi+b<0yi

    (margin是直线距离,每一类样本中所有样本点到直线的距离为):

    wTx+b||w||

    ​ 单侧margin应该是每一类样本中到超平面最近点与超平面的距离(支持向量到超平面距离)那么margin等于2倍单侧margin。两个支持向量距离,如下:

    margin=2×minw,b,xiwTxi+b||w||,i=1,...,m

    ​ 回到我们之前假设,我们有yi(wTxi+b)0,则有:

    margin=2×minw,b,xiwTxi+b||w||=2×minw,b,xi,yiwTxi+b||w||,i=1,...,m

    ​ 消除分子中绝对值则有:

    maxw,b2||w||minxi,yiyi(wTxi+b),s.t.yi(wTxi+b)0,i=1,...,m

    ​ 当yi(wTxi+b)0,i=1,...,m存在任意值a大于0,使得minxi,yiyi(wTxi+b)=a,

    ​ 我们使a=1,简化运算那么得到:minxi,yiyi(wTxi+b)=1

    ​ 于是SVM目标进一步变为:

    maxw,b2||w||,s.t.yi(wTxi+b>1,i=1,...,m)

2.线性可分到线性不可分

2.1.1线性可分到线性不可分

​ 由于求max2||w||的最大值相当于求min12||w||2的最小值, 所以上述目标函数等价于 (w由分母变为分子,所以从max变为min):

min12||w||2,s.t.yi(wTxi+b)1i=1,...,m1

​ 因此现在目标函数是二次,约束条件是线性的,是凸二次规划问题。由于问题特殊结构通过拉格朗日对偶性(Lagrange Duality)变换到对偶变量 (dual variable) 的优化问题,即通过求解与原问题等价的对偶问题(dual problem)得到原始问题的最优解,这就是线性可分条件下支持向量机的对偶算法,这样做的优点在于:一者对偶问题往往更容易求解;二者可以自然的引入核函数,进而推广到非线性分类问题。

​ 那什么是拉格朗日对偶性呢?简单来讲,通过给每一个约束条件加上一个拉格朗日乘子(Lagrange multiplier)a,定义拉格朗日函数(通过拉格朗日函数将约束条件融合到目标函数里去,从而只用一个函数表达式便能清楚的表达出我们的问题):

​ 比如对公式1每一个约束(共有m个约束,yi(wTxi+b)>1),添加拉格朗日乘子ai0,则整个问题函数可表示为:

L(w,b,a)=12||w||2+Σi=1mai(1yi(wTxi+b))2

​ 然后我们令:

Θ(w)=maxai0L(w,b,a)

​ 为何使用这样拉格朗日乘子,又为何这样构建?我们目标函数是不等式约束,解决二次规划问题,我们选择用KKT条件,而KKT条件需要这样一个约束ai0.最终我们通过KKT条件来产生原问题对偶问题。

​ 可以看到由于ai0,这样,单反又约束条件值一不满足,如yk(wTxk+b)<1,那么显然Θ(w)=(只要令ai=即可)而当所有约束条件均满足时,$\Theta(w) \frac{1}{2}||w||2\frac{1}{2}||w||2\Theta(w) ,a_i≥0,i=1,...,n,\Theta(w) $会等于无穷大, 也不会得到最小值。机题函数如下:

minw,bΘ(w)=minw,bmaxai0L(w,b,a)=p

​ 这里用p表示最优值,那么首先需要面对w,b两个参数,而ai又是不等约束,这个求解过程过于复杂不容易做,不如把最小和最大位置交换一下如下:

maxai0minw,bL(w,b,a)=d

​ 交换以后的新问题是原始问题的对偶问题,这个新问题最优值用d来表示,并且有dp,在满足某县条件下,这两者之间相等。此时可以求解对偶问题来间接地求解原始问题。(之所以从minmax的原始问题p转换成maxmin对偶问题d,一是因为dp的近似解,二是转化为对偶问题后,更容易求解)。下面可以先求Lw,d的极小值,再求La的极大值。

(如果对对偶问题不是很理解可以点此一个简单案例,能让你更好理解对偶问题)

2.1.2KTT条件

​ 上述中存在着dp情况下,两者是等价。所谓"存在着"就是要满足KTT条件

​ 一个最优化数学模型能够表示成下列形式:

minf(x)s.t.hj(x)=0,j=1,...p.gk(x)0k=1,...,q,xXRn

​ 由上式可以看出f(x)式最小化的函数,h(x)式等式约束,g(x)式不等式约束,pq分别为等式约束和不等式约束。

同时需要明白:

​ 凸优化的概念:img 为一凸集, img 为一凸函数。凸优化就是要找出一点 img,使得每一 img 满足 img

​ KKT条件的意义:它是一个非线性规划(Nonlinear Programming)问题能有最优化解法的必要和充分条件。

​ 于是最优化数学模型最优解必须满足条件如下:

2.1.3对偶问题求解3步骤:

  • 1.首先固定a,让L关于wb最小化。
  • 2.求对a极大,即让关于对偶问题最优化问题
  • 3.再求L(w,b,a)关于wb最小化

未完待续。。。

原文链接参考:

posted @   是阿凯啊  阅读(386)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
点击右上角即可分享
微信分享提示