一、SVM原问题及要变成对偶问题的解决办法

对于SVM的,我们知道其终于目的是求取一分类超平面,然后将新的数据带入这一分类超平面的方程中,推断输出结果的符号,从而推断新的数据的正负。

而求解svm分类器模型。终于能够化成例如以下的最优化问题:

minw,bs.t.12∥w∥21−yi(w⋅xi+b)≤0i=1,2,...,N

上式中。yi相应样本xi的标签。

我们的目的是求出上述最优化问题的最优解,w∗和b∗,从而得到分类超平面:

w∗⋅x+b∗=0

进而得到分类决策函

f(x)=sign(w∗⋅x+b)

可是在求解这一最优化问题时。求解较为困难,且对于线性不可分的数据无法得到较好的分类超平面。因此依据拉格朗日对偶性,引进原最优化问题的对偶问题,通过求解对偶问题得到原始问题的最优解。

对偶问题的引进有两个方面。一是对偶问题的求解往往比原问题easy。二是对于线性不可分的数据能够通过加松弛变量、加核函数的方法,将其推广到非线性分类。

二、原始SVM的对偶问题及其求解

原始的SVM模型的原问题例如以下:

minw,bs.t.12∥w∥21−yi(w⋅xi+b)≤0i=1,2,...,N

为方便计算,将范数形式改写成例如以下形式:

minw,bs.t.12wTw1−yi(w⋅xi+b)≤0i=1,2,...,N

要想求原始问题的对偶问题。首先构造拉格朗日函数入例如以下:

L(w,b,λ)=12wTw+∑i=1Nλi[1−yi(wTxi+b)]λi≥0,i=1,2,...,N

上式中的λi是拉格朗日乘子。

观察上述式子。可发现

λi[1−yi(wTxi+b)]≤0

所以L(w,b,λ)≤12wTw,即构造的拉格朗日函数是原问题的一个下界。

依据拉格朗日对偶性。原始问题的的对偶问题是极大化极小问题:

maxλminw,bL(w,b,λ)

上式所表达的意思是,先求L(w,b,λ)对w,b的极小,再求对λ的极大。

首先。求minw,bL(w,b,λ):

我们知道。对于一阶可导函数,其在导数值为0的地方。取到极大或极小值,对于我们构造的拉格朗日函数,其偏导导数为0的点,一定是极小值。故:

0=∂∂wL(w,b,λ)=w+∑i=1Nλi(−yixi)⇒w=∑i=1Nλiyixi0=∂∂bL(w,b,λ)=−∑i=1Nλiyi⇒∑i=1Nλiyi=0

将求得的w代入拉格朗日函数,可得

L(w,b,λ)=−12∑i=1N∑j=1NλiλjyiyjxTixj+∑i=1Nλi−∑i=1Nλiyi⎛⎝∑j=1NλjyjxTjxi+b⎞⎠

由于∑Ni=1λiyi=0,故

L(w,b,λ)=−12∑i=1N∑j=1NλiλjyiyjxTixj+∑i=1Nλi

所以

g(λ)=minw,bL(w,b,λ)=−12∑i=1N∑j=1NλiλjyiyjxTixj+∑i=1Nλi

依据拉格朗日对偶的极大极小的性质,可知对偶问题的目标是:

maxλ−12∑i=1N∑j=1NλiλjyiyjxTixj+∑i=1Nλi

如今再找约束条件,即在前面的推导过程中。遇到与λ有关的等式或不等式,且该等式或不等式中不含原问的目标变量

可发现,在对b求偏导是得到∑Ni=1λiyi=0,故这是一个约束条件,另外在构造拉格朗日函数时。约定了λi≥0,故原问题的对偶问题能够写成例如以下形式:

maxλs.t.−12∑i=1N∑j=1NλiλjyiyjxTixj+∑i=1Nλi∑i=1Nλiyi=0λi≥0,i=1,2,...,N

故此得到了原始的SVM的对偶形式。如今考虑怎样从对偶问题中求得原问题的最优解。

考虑对偶问题的最优化问题。存在λ∗是对偶的最优解。又由于

w=∑i=1Nλiyixi

故能够解得

w∗=∑i=1Nλ∗iyixi

同一时候依据KTT条件原理(这里不做解释,能够自行查阅资料,不论什么关于最优化理论、凸优化的书都会说到这个),可解得b的值:

b∗=yj−∑i=1Nλ∗iyixTixj

故分离超平面为:

∑i=1Nλ∗iyixTix+b=0

分类决策函数为:

f(x)=sign(∑i=1Nλ∗iyixTix+b)

三、加松弛变量SVM的对偶问题

如上文所述。对于线性可分的数据,能够构造SVM模型。并将其转换为一个最优化问题,且这个优化问题的约束条件是对于全部的样本。都有1−yi(wTxi+b)≤0。则对于线性不可分的数据。在数学形式的解释为存在某个样本(x,y)使上述的约束不成立,即1−y(wTx+b)>0。

既然约束条件不成立,那是否能增加一个松弛变量ξ,ξ≥0,使得1−y(wTx+b)−ξ≤0?

正是基于这个思想,出现了加松弛变量的SVM,其原始问题的形式例如以下:

minw,bs.t.12wTw+C∑i=1Nξi1−yi(w⋅xi+b)−ξi≤0−ξi≤0i=1,2,...,N

当中C为常数,ξi为松弛变量。

由于我在约束中加了松弛变量,可是我们希望我们所加的松弛变量越小越好。这样越接近于原约束条件。故把“松弛变量越小越好”这一期望,放在目标函数中,由于目标函数是求最小值,故加上C∑Ni=1ξi,这一项也被称为“惩处项”。能够理解为增加的松弛变量越大。对目标函数的惩处力度越高。

现要求其对偶问题。相似于前面的解法,首先构造拉格朗日函数例如以下:

L(w,b,ξ,λ,β)=12wTw+C∑i=1Nξi+∑i=1Nλi[1−yi(wTxi+b)−ξi]+∑i=1Nβi(−ξi)

相同。求偏导可得:

0=∂∂wL(w,b,λ)=w+∑i=1Nλi(−yixi)⇒w=∑i=1Nλiyixi0=∂∂bL(w,b,λ)=−∑i=1Nλiyi⇒∑i=1Nλiyi=00=∂∂ξi=C−λi−βi⇒λi=C−βi≤C

将结果代回拉格朗日函数。可得例如以下形式:

L(w,b,λ)=−12∑i=1N∑j=1NλiλjyiyjxTixj+∑i=1Nλi+C∑i=1Nξi−∑i=1Nλiξi−∑i=1Nβiξi

由于C−λi−βi=0。所以

C∑i=1Nξi−∑i=1Nλiξi−∑i=1Nβiξi=0

g(λ,β)=minw,bL(w,b,λ)=−12∑i=1N∑j=1NλiλjyiyjxTixj+∑i=1Nλi

则对偶形式为

maxλs.t.−12∑i=1N∑j=1NλiλjyiyjxTixj+∑i=1Nλi∑i=1Nλiyi=00≤λi≤C,i=1,2,...,N

观察上式可发现,对于原问题。加了松弛变量后,其对偶形式变化比較小,仅仅是在约束条件上有些许变化。从这点也可发现将原问题化成对偶问题的优点,即原问题形式的变化非常大,可是对偶问题变化却非常小,方便求解。

所以非常多优化问题。假设在原问题上较为难实现,则能够考虑转化为对偶问题。

四、加核函数SVM的对偶问题

加核函数的思想是:

通过一个非线性变化将输入空间映射到一个更高维的特征空间(希尔伯特空间),使得在输入空间中的超曲面模型相应希尔伯特空间中的超平面模型。

因此,在输入空间的非线性分类问题能够变成希尔伯特空间中的线性分类问题,故能够继续使用SVM模型。

核函数的定义:

设X是输入空间(欧式空间Rn的子集或离散集合),又设H为特征空间(希尔伯特空间)。假设存在一个从X到H的映射:

ϕ(x):X→H

使得对全部的x,y∈X,函数K(x,y)满足条件

K(x,y)=<ϕ(x),ϕ(y)>

其中<ϕ(x),ϕ(y)>表示内积。

核技巧的想法是:

在学习预測中,仅仅定义核函数K(x,y)。而不是显式的定义映射函数ϕ。

通常,直接计算K(x,y)比較easy,而通过ϕ(x)和ϕ(y)计算K(x,y)并不easy。比較经常使用的核函数——高斯核函数:

K(x,y)=exp(−∥x−y∥22σ2)

基于核函数的思想,先定义原SVM模型例如以下:

minw,bs.t.12wTw+C∑i=1Nξi1−yi(w⋅ϕ(xi)+b)−ξi≤0−ξi≤0i=1,2,...,N

当中ϕ(xi)是映射将原输入样本映射到希尔伯特空间的特征。

转化为对偶形式例如以下:;

maxλs.t.−12∑i=1N∑j=1NλiλjyiyjϕT(xi)ϕ(xj)+∑i=1Nλi∑i=1Nλiyi=00≤λi≤C,i=1,2,...,N

终于化为带核函数形式:

maxλs.t.−12∑i=1N∑j=1NλiλjyiyjK(xi,xj)+∑i=1Nλi∑i=1Nλiyi=00≤λi≤C,i=1,2,...,N

通过观察发现,由原始的输入的内积xTix,转换到映射空间的内积ϕT(xi)ϕ(xj),再转换为核函数形式,整个学习的过程是隐式的在特征空间(希尔伯特空间)进行的吗,而我们得到的显式的结果是用核函数显式的表达,这样的技巧称为核技巧

其实。仅仅要是学习算法中涉及输入项的内积的函数,都能够用核函数的方法取代内积操作。

三种SVM的对偶问题的更多相关文章

  1. 简谈百度坐标反转至WGS84的三种思路

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 基于百度地图进行数据展示是目前项目中常见场景,但是因为百度地图 ...

  2. 测试一下StringBuffer和StringBuilder及字面常量拼接三种字符串的效率

    之前一篇里写过字符串常用类的三种方式<java中的字符串相关知识整理>,只不过这个只是分析并不知道他们之间会有多大的区别,或者所谓的StringBuffer能提升多少拼接效率呢?为此写个简 ...

  3. Objective-C三种定时器CADisplayLink / NSTimer / GCD的使用

    OC中的三种定时器:CADisplayLink.NSTimer.GCD 我们先来看看CADiskplayLink, 点进头文件里面看看, 用注释来说明下 @interface CADisplayLin ...

  4. css中的浮动与三种清除浮动的方法

    说到浮动之前,先说一下CSS中margin属性的两种特殊现象 1, 外边距的合并现象: 如果两个div上下排序,给上面一个div设置margin-bottom,给下面一个div设置margin-top ...

  5. ASP.NET Core应用的错误处理[1]:三种呈现错误页面的方式

    由于ASP.NET Core应用是一个同时处理多个请求的服务器应用,所以在处理某个请求过程中抛出的异常并不会导致整个应用的终止.出于安全方面的考量,为了避免敏感信息的外泄,客户端在默认的情况下并不会得 ...

  6. 【Win 10 应用开发】文件读写的三种方案

    本文老周就跟伙伴们探讨一下关于文件读写的方法.总得来说嘛,有三种方案可以用,而且每种方案都各有特色,也说不上哪种较好.反正你得记住老祖宗留给我们的大智慧——事无定法,灵活运用者为上. OK,咱们开始吧 ...

  7. .NET Core采用的全新配置系统[6]: 深入了解三种针对文件(JSON、XML与INI)的配置源

    物理文件是我们最常用到的原始配置的载体,最佳的配置文件格式主要由三种,它们分别是JSON.XML和INI,对应的配置源类型分别是JsonConfigurationSource.XmlConfigura ...

  8. 监视EntityFramework中的sql流转你需要知道的三种方式Log,SqlServerProfile, EFProfile

    大家在学习entityframework的时候,都知道那linq写的叫一个爽,再也不用区分不同RDMS的sql版本差异了,但是呢,高效率带来了差灵活性,我们 无法控制sql的生成策略,所以必须不要让自 ...

  9. 通过三个DEMO学会SignalR的三种实现方式

    一.理解SignalR ASP .NET SignalR 是一个ASP .NET 下的类库,可以在ASP .NET 的Web项目中实现实时通信(即:客户端(Web页面)和服务器端可以互相实时的通知消息 ...

随机推荐

  1. VC版超级记事本

    这是学习VC时的一个大作业,超级记事本.突然发现了,传上来供大家学习參考! 一.  功能需求: 1. 能在原有像记事本程序的基础上加入很多其它功能: 1).可以改变背景颜色. 2).可以改变字体颜色. ...

  2. centos下yum安装lamp和lnmp轻松搞定

    centos下yum安装lamp和lnmp轻松搞定.究竟多轻松你看就知道了.妈妈再也不操心不会装lamp了. 非常辛苦整理的安装方法,会持续更新下去.凡无法安装的在评论里贴出问题来,会尽快解决.共同维 ...

  3. How to remove focus without setting focus to another control?

    How to remove focus without setting focus to another control? Ask Question up vote 67 down vote favo ...

  4. 0x25 广度优先搜索

    今天莫名不想说话. 结果发现效率挺高? poj3322 本来可以1a的..发现我宽搜写的是head<=tail而且初始是head=1,tail=2如果是多组数据简直就gg了.基础不牢固 这题虽然 ...

  5. 【BZOJ 2453】 维护队列

    [题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=2453 [算法] 带修改的莫队算法 当块的大小为N^(2/3)时,时间复杂度为 : O ...

  6. EOJ 3124 单词表

    题目描述 提取英文文本中的单词,重复出现的单词只取一个,把它们按照字典顺序排序,建立为一个单词表. 例如:英文文本如下: “ask not what your country can do for y ...

  7. 什么是EL表达式

    转自:https://blog.csdn.net/hj7jay/article/details/51302466 1. EL表达式主要作用 EL表达式说白了,就是让JSP写起来更加方便,它属于JSP技 ...

  8. thinkPHP5 报错session_start(): No session id returned by function解决方法

    这是因为用Redis接管了session状态储存,但是Redis又连接不正常导致的 在服务器上查看Redis运行状态一切正常,set.get也没有问题,最后琢磨了半天才发现是PHPRedis扩展没有安 ...

  9. POJ 1471 模拟?

    题意:求最大无坏点三角形 思路: 模拟? (为什么我模拟过了...) 有人用 DP,有人用 搜索... // by SiriusRen #include <cstdio> #include ...

  10. JDBC的总结

    JDBC归纳: DriverManger:驱动管理器类 要操作数据库,必须先与数据库创建连接,得到连接对象 public static Connection getConnection(String ...