支持向量机(Support Vector Machine):对偶
前言
学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):对偶的更多相关文章
- 支持向量机 support vector machine
SVM(support Vector machine) (1) SVM(Support Vector Machine)是从瓦普尼克(Vapnik)的统计学习理论发展而来的,主要针对小样本数据进行学习. ...
- 支持向量机(Support Vector Machine)-----SVM之SMO算法(转)
此文转自两篇博文 有修改 序列最小优化算法(英语:Sequential minimal optimization, SMO)是一种用于解决支持向量机训练过程中所产生优化问题的算法.SMO由微软研究院的 ...
- 第八篇:支持向量机 (Support Vector Machine)
前言 本文讲解如何使用R语言中e1071包中的SVM函数进行分类操作,并以一个关于鸢尾花分类的实例演示具体分类步骤. 分析总体流程 1. 载入并了解数据集:2. 对数据集进行训练并生成模型:3. 在此 ...
- 支持向量机(Support Vector Machine,SVM)
SVM: 1. 线性与非线性 核函数: 2. 与神经网络关系 置信区间结构: 3. 训练方法: 4.SVM light,LS-SVM: 5. VC维 u-SVC 与 c-SVC 区别? 除参数不同外, ...
- 支持向量机SVM(Support Vector Machine)
支持向量机(Support Vector Machine)是一种监督式的机器学习方法(supervised machine learning),一般用于二类问题(binary classificati ...
- 6. support vector machine
1. 了解SVM 1. Logistic regression 与SVM超平面 给定一些数据点,它们分别属于两个不同的类,现在要找到一个线性分类器把这些数据分成两类.如果用x表示数据点,用y表示类别( ...
- 斯坦福第十二课:支持向量机(Support Vector Machines)
12.1 优化目标 12.2 大边界的直观理解 12.3 数学背后的大边界分类(可选) 12.4 核函数 1 12.5 核函数 2 12.6 使用支持向量机 12.1 优化目标 到目前为 ...
- 机器学习课程-第7周-支持向量机(Support Vector Machines)
1. 优化目标 在监督学习中,许多学习算法的性能都非常类似,因此,重要的不是你该选择使用学习算法A还是学习算法B,而更重要的是,应用这些算法时,所创建的大量数据在应用这些算法时,表现情况通常依赖于你的 ...
- 5. support vector machine
1. 了解SVM 1. Logistic regression回顾 Logistic regression目的是从特征中学习出一个0/1二分类模型,而这个模型是将特性的线性组合作为自变量,由于自变量的 ...
- [C7] 支持向量机(Support Vector Machines) (待整理)
支持向量机(Support Vector Machines) 优化目标(Optimization Objective) 到目前为止,你已经见过一系列不同的学习算法.在监督学习中,许多学习算法的性能都非 ...
随机推荐
- java 各种数据类型的互相转换
StringBuilder转化为String StringBuilder stb = new StringBuilder(); String str=stb.toString(); //方法1 Str ...
- 2018(5)软件架构设计,架构风格,REST
2018上半年系统分析师试题五 阅读以下关于Web应用设计开发的描述,在答题纸上回答问题1至问题3. [说明] 某公司拟开发一个自由,可定制性强.用户界面友好的在线调查系统,以获取员工在课程学习.对公 ...
- 如何配置Bitbucket的ssh
在bitbucket上使用https协议,经常会在提交代码的时候出错,让人很着急上火,但是用ssh就要方便很多.下面介绍一下设置ssh的方法:1.在终端中运行ssh-keygen.2.然后一路ente ...
- 【LeetCode每天一题】Rotate List(旋转链表)
Given a linked list, rotate the list to the right by k places, where k is non-negative. Example 1: I ...
- linux运维需要掌握什么知识?linux运维学习路线
linux运维需要掌握什么知识?这个问题算是老生常谈了,但是本人认为知道需要掌握什么知识不是重点,重点是我们需要知道运维是做什么的?再来根据工作需求去讨论需要学习什么知识才是正途,须知知识是学不完的, ...
- VPS安全配置
VPS安全配置 购买VPS后重装操作系统,以windows server 2008为例. 1 登录服务器 重装操作系统后,第一时间登录服务器,迅速进行安全配置. VPN-->Remote Des ...
- DS18B20初上电显示85℃问题
以前用的温度采集都是用的AD,这次改为了DS18B20,看了资料,没有很复杂的部分,重要的就是时序.板子出来后初步测试也能正常读取温度,然而有个问题比较奇怪,就是在板子初上电时读取温度总是显示为+85 ...
- IDEA搭建scala开发环境开发spark应用程序
通过IDEA搭建scala开发环境开发spark应用程序 一.idea社区版安装scala插件 因为idea默认不支持scala开发环境,所以当需要使用idea搭建scala开发环境时,首先需要安 ...
- java生成条形码工具类
package com.runtime.extend.utils.CodeCreate;import java.awt.Color;import java.awt.Font;import java.a ...
- 【JavaScript】常用的数据类型的处理方式
写这篇文章的目的,是在学习过程中反复查找如何对这三种数据类型进行转换的方法,所以干脆总结在一起. 一.字符串 0.includes:string.includes(),查找当前string中是否包含某 ...