前言

学SVM看到对偶问题的时候很难受,因为看不懂,数学知识真的太重要了。后来在B站看到某up主的精彩推导,故总结如下。

SVM基本型

由之前最大化间隔的计算可得SVM的基本型为:

                   $\underset{\mathbf{w},b}{min}\   \ \ \  \frac{1}{2}\left \| \mathbf{w}\right \|^{2}$

                       $s.t. \ y_{i}(\mathbf{w}^{T}\mathbf{x}_{i})+b\geqslant 1,\ \ \ \ i=1,2,\cdots ,m.$

对偶问题

SVM的基本型是一个带约束优化问题,试想如果我们可以构造一个函数,使得该函数在可行解区域内与原目标函数完全一致,而在可行解区域外的数值非常大,甚至是无穷大,那么这个没有约束条件的新目标函数的优化问题就与原来有约束条件的原始目标函数的优化问题是等价的问题。这就是使用拉格朗日方程的目的,它将约束条件放到目标函数中,从而将有约束优化问题转换为无约束优化问题。

所以,利用对偶来求解原问题需要两个步骤:

1. 将有约束的原始目标函数转换为无约束的新构造的拉格朗日目标函数

2. 使用拉格朗日对偶性,将不易求解的优化问题转化为易求解的优化

首先根据拉格朗日乘子法,对上式的每条约束添加拉格朗日乘子$\lambda _{i} \geqslant 0$,于是该问题的拉格朗日函数可写为:

$L(\mathbf{w},b,\lambda ) = \frac{1}{2}\left \| \mathbf{w} \right \|^{2}+\sum_{i=1}^{m}\lambda _{i}(1-y_{i}(\mathbf{w}^{T}\mathbf{x}_{i}+b))$       $\mathbf{\lambda }=(\lambda _{1};\lambda _{2};\cdots ;\lambda _{m})$

由此得到了重要的第一步,将带约束的原问题转化为了无约束的原问题,即:

$\underset{\mathbf{w},b}{min}\   \ \ \  \frac{1}{2}\left \| \mathbf{w}\right \|^{2}$                                                           ------------------->       $ \underset{\mathbf{w},b}{min}\ \underset{\mathbf{\lambda }}{max}\ L(\mathbf{w},b,\mathbf{\lambda})$

$s.t. \ y_{i}(\mathbf{w}^{T}\mathbf{x}_{i})+b\geqslant 1,\ \ \ \ i=1,2,\cdots ,m.$                       ------------------->                       $s.t.\ \ \lambda _{i}\geqslant 0$

为什么这两种是等价的呢?从逻辑上可以简单分析:

接下来第二步转化就是将无约束的原问题转化为对偶问题,即:

$ \underset{\mathbf{w},b}{min}\ \underset{\mathbf{\lambda }}{max}\ L(\mathbf{w},b,\mathbf{\lambda})$                     ------------------->               $ \underset{\mathbf{\lambda }}{max}\ \underset{\mathbf{w},b}{min}\ L(\mathbf{w},b,\mathbf{\lambda})$

$s.t.\ \ \lambda _{i}\geqslant 0$                                                 ------------------->               $s.t.\ \ \lambda _{i}\geqslant 0$

易知$ \underset{\mathbf{w},b}{min}\ \underset{\mathbf{\lambda }}{max}\ L(\mathbf{w},b,\mathbf{\lambda}) \geqslant   \underset{\mathbf{\lambda }}{max}\ \underset{\mathbf{w},b}{min}\ L(\mathbf{w},b,\mathbf{\lambda})$ ,而我们现在需要的是两者相等,相等时需要满足以下两个条件:

1. 满足这个优化问题是凸优化问题。

2. 满足KKT条件。

(KKT条件我不懂,所以略。。)

综上,这一系列的步骤就是SVM基本型(带约束的原问题)——>不带约束的原问题——>对偶问题。

对于这个对偶问题,我们首先固定$\lambda$,求解$w,b$,由于$w,b$不受约束,所以这是无约束的优化问题,直接求导即可。这里需要说明的一点就是因为这是凸函数,二阶导数必然大于0,所以令偏导为零的点就是最小值点。计算过程如下所示:

消去$\mathbf{w},b$后得到对偶问题:

              $\underset{\mathbf{\lambda }}{max}\ \ \sum_{i=1}^{m} \lambda _{i}-\frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\lambda _{i}\lambda _{j}y_{i}y_{j}\mathbf{x}_{i}^{T}\mathbf{x}_{j}$

              $s.t.\ \ \sum_{1}^{m}\lambda _{i}y_{i}=0$

                   $ \lambda _{i}\geqslant 0$                                  $i=1,2,...,m$

支持向量机(Support Vector Machine):对偶的更多相关文章

  1. 支持向量机 support vector machine

    SVM(support Vector machine) (1) SVM(Support Vector Machine)是从瓦普尼克(Vapnik)的统计学习理论发展而来的,主要针对小样本数据进行学习. ...

  2. 支持向量机(Support Vector Machine)-----SVM之SMO算法(转)

    此文转自两篇博文 有修改 序列最小优化算法(英语:Sequential minimal optimization, SMO)是一种用于解决支持向量机训练过程中所产生优化问题的算法.SMO由微软研究院的 ...

  3. 第八篇:支持向量机 (Support Vector Machine)

    前言 本文讲解如何使用R语言中e1071包中的SVM函数进行分类操作,并以一个关于鸢尾花分类的实例演示具体分类步骤. 分析总体流程 1. 载入并了解数据集:2. 对数据集进行训练并生成模型:3. 在此 ...

  4. 支持向量机(Support Vector Machine,SVM)

    SVM: 1. 线性与非线性 核函数: 2. 与神经网络关系 置信区间结构: 3. 训练方法: 4.SVM light,LS-SVM: 5. VC维 u-SVC 与 c-SVC 区别? 除参数不同外, ...

  5. 支持向量机SVM(Support Vector Machine)

    支持向量机(Support Vector Machine)是一种监督式的机器学习方法(supervised machine learning),一般用于二类问题(binary classificati ...

  6. 6. support vector machine

    1. 了解SVM 1. Logistic regression 与SVM超平面 给定一些数据点,它们分别属于两个不同的类,现在要找到一个线性分类器把这些数据分成两类.如果用x表示数据点,用y表示类别( ...

  7. 斯坦福第十二课:支持向量机(Support Vector Machines)

    12.1  优化目标 12.2  大边界的直观理解 12.3  数学背后的大边界分类(可选) 12.4  核函数 1 12.5  核函数 2 12.6  使用支持向量机 12.1  优化目标 到目前为 ...

  8. 机器学习课程-第7周-支持向量机(Support Vector Machines)

    1. 优化目标 在监督学习中,许多学习算法的性能都非常类似,因此,重要的不是你该选择使用学习算法A还是学习算法B,而更重要的是,应用这些算法时,所创建的大量数据在应用这些算法时,表现情况通常依赖于你的 ...

  9. 5. support vector machine

    1. 了解SVM 1. Logistic regression回顾 Logistic regression目的是从特征中学习出一个0/1二分类模型,而这个模型是将特性的线性组合作为自变量,由于自变量的 ...

  10. [C7] 支持向量机(Support Vector Machines) (待整理)

    支持向量机(Support Vector Machines) 优化目标(Optimization Objective) 到目前为止,你已经见过一系列不同的学习算法.在监督学习中,许多学习算法的性能都非 ...

随机推荐

  1. -webkit-box-orient: vertical; 在webpack上失效

    -webkit-box-orient: vertical;在webpack上失效,可以使用以下方式解决 .ifc-header-content-comment { text-overflow: ell ...

  2. sessionStorage 前端HTML5会话管理

    sessionStorage 是在HTML5中新增的一个会话存储对象,sessionStorage 用于临时保存同一窗口(或标签页)的数据,在关闭窗口或标签页之后将会删除这些数据.. 提示: 如果你想 ...

  3. struct ifreq学习和实例

    一.struct ifreq结构体 这个结构定义在/usr/include/net/if.h,用来配置和获取ip地址,掩码,MTU等接口信息的. /* Interface request struct ...

  4. HTTP中Post与Put的区别

    PUT请求是向服务器端发送数据的,从而改变信息,该请求就像数据库的update操作一样,用来修改数据的内容,但是不会增加数据的种类等,也就是说无论进行多少次PUT操作,其结果并没有不同. POST请求 ...

  5. 玩转PIL >>> 玩转photo

    前:1.使用图片放在文件最后,需要的请自行下载 2.运行环境win10家庭版,已经安装好pillow库 一.学习总结 PIL库支持图像的储存,显示和处理,几乎能处理所有的图片格式,可以完成对图像的缩放 ...

  6. 【LeetCode每天一题】Plus One(加一)

    Given a non-empty array of digits representing a non-negative integer, plus one to the integer.The d ...

  7. 24个 CSS 高级技巧合集

    上期入口:史上最全实用网络爬虫合集! 1.使用CSS复位 CSS复位可以在不同的浏览器上保持一致的样式风格.您可以使用CSS reset 库Normalize等,也可以使用一个更简化的复位方法: ** ...

  8. 牛客(web 1)

    bootstrap(Web框架) 有关换行的知识: http://www.cnblogs.com/wqsbk/p/3493948.html 关于link加载问题: link是同时加载的,script标 ...

  9. Oracle 11g R2性能优化 SQL TRACE

    作为Oracle官方自带的一种基本性能诊断工具,SQL Trace可以用来评估当前正在运行的SQL语句的效率,同时为该语句生成统计信息等,并保存这些信息到指定路径下的跟踪文件(trace)当中.SQL ...

  10. C# 按不同的字节编码,通过字节数去截取字符串

    /// <summary> /// 按不同的字节编码,通过字节数去截取字符串 /// 数据库UTF-8 1个数字.字母.英文符号算1个长度 1个中文.中文符号算3个长度 /// </ ...