前言

学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. WIN7远程桌面连接--“发生身份验证错误。要求的函数不受支持”

    故障现象:WIN7发现远程桌面无法连接了,报“发生身份验证错误.要求的函数不受支持”的错误: 解决办法:开始菜单->运行gpedit.msc 打开配置项:计算机配置>管理模板>系统& ...

  2. Linux给MySQL创建用户,并分配权限

    //登录MYSQL 使用root账号登录 @>mysql -u root -p @>密码 //创建用户 mysql> insert into mysql.user(Host,User ...

  3. python点点滴滴

    python点点滴滴 1 self 使用python编程实现邮箱登录时,遇到使用self的情况,在此做简要记录. 参考链接: https://sjolzy.cn/Why-should-self-Pyt ...

  4. C++实验二——函数重载、函数模板、简单类的定义和实现

    一.实验过程 函数重载编程练习 实验要求:编写重载函数add(),实现对int型,double型,complex型数据的加法.在main函数中定义不同类型的数据,调用测试. 代码实现: 先是简单的体验 ...

  5. UML作业第一次:UML用例图绘制

    UML第一次作业 一. 用例图:用例图(usecase diagram)是UML用于描述软件功能的图形.用例图包括用例.参与者及其关系,用例图也可以包括注释和约束.程序员要画时序图啥的用其他的比较麻烦 ...

  6. 放弃antd table,基于React手写一个虚拟滚动的表格

    缘起 标题有点夸张,并不是完全放弃antd-table,毕竟在react的生态圈里,对国人来说,比较好用的PC端组件库,也就antd了.即便经历了2018年圣诞彩蛋事件,antd的使用者也不仅不减,反 ...

  7. 基于C#的Appium自动化测试框架(Ⅰ):程序结构

    因为工作原因,使用的编程语言都是C#,但是国内相应的Appium资料少得可怜,Java版本的Appium也考虑过,但是奈何自己搞不定Eclipse这个编译环境[说白了就是因为懒…… 无意中看到了外面的 ...

  8. 福州大学软件工程1916|W班 第2次作业成绩排名

    作业链接: 结对第一次-原型设计(文献摘要热词统计) 评分准则: 本次作业评分分为两部分,一部分是博客分数(满分25分),另一部分是工程能力分数(满分30分). 博客分数评分标准: 1.在随笔开头请加 ...

  9. 日志入库-log4j-mysql连接中断问题

    mysql5.6 druid1.0.17 log4j 1.2.16 一定时间后无法连接  CommunicationsException: Communications link failure 粗暴 ...

  10. UnicodeDecodeError: 'gbk' codec can't decode byte 0xa7 in position 166: illegal multibyte sequence

    # -*- coding: utf-8 -*-# encoding = utf-8import unittestimport random class TestSequenceFunctions(un ...