SVM(support vector machine)算法详解中之转化对偶问题
本文总结一下SVM(support vector machine)算法。
学习SVM算法主要有三个难点:
- 如何推导出基本的优化目标。(其中包括理解函数距离与几何距离)
- 对于基本优化目标的公式如何转化为对偶问题。
- 转化为对偶问题后对拉格朗日因子的求解,也就是SMO算法。
因此,本文分为三个部分来讲述SVM算法。
- SVM【上】之形成优化目标
- SVM【中】之转化对偶问题
- SVM【下】之SMO算法求解拉格朗日因子
这是SVM【中】之转化对偶问题,重点理解对偶问题的转化.
问题描述
这节主要是对上节中的优化目标函数进行求解转化。上一节的优化问题为
minw,b12∣∣w∣∣2s.t.yi(wTxi+b)≥1\underset{w,b}{\min}\ \frac{1}{2} ||w||^2\\ s.t.\quad y_i(w^Tx_i+b) \ge 1 w,bmin 21∣∣w∣∣2s.t.yi(wTxi+b)≥1
也就是在约束条件yi(wTxi+b)≥1y_i(w^Tx_i+b) \ge 1yi(wTxi+b)≥1下,求使得minw,b12∣∣w∣∣2\underset{w,b}{\min}\ \frac{1}{2} ||w||^2w,bmin 21∣∣w∣∣2最小的参数w,bw,bw,b. 注意是求参数w,bw,bw,b,最小值是多少并不关心。
广义拉格朗日函数
对于求解如下约束的最优化问题即
minxf(x)s.t.g(x)≤0\underset{x}{\min}\ f(x)\\ s.t.\quad g(x) \le 0 xmin f(x)s.t.g(x)≤0
一般采用广义拉格朗日函数来求解,这里简单说明下广义拉格朗日函数。
定义拉格朗日函数为
L(x,λ)=f(x)+λg(x)(其中λ≥0)L(x,\lambda)=f(x)+\lambda g(x) \quad (其中\lambda \ge 0) L(x,λ)=f(x)+λg(x)(其中λ≥0)
对于我们的原最优化问题可以这样转化:
minxf(x)s.t.g(x)≤0⇔minxmaxλ,λ≥0L(x,λ)\underset{x}{\min}\ f(x)\quad s.t.\ g(x) \le 0\Leftrightarrow\ \underset{x}{\min}\underset{\lambda ,\lambda\ge0}{\max}\ L(x,\lambda) xmin f(x)s.t. g(x)≤0⇔ xminλ,λ≥0max L(x,λ)
为什么呢?简单说明一下。
首先再强调一下,原问题目标是求f(x)f(x)f(x)的最小值,但它有个g(x)g(x)g(x)这个约束。必须是在这个约束下求最值。
那么,
- 第一种情况是在L(x,λ)L(x,\lambda)L(x,λ)中的g(x)g(x)g(x)不满足约束,即g(x)>0g(x) \gt 0g(x)>0.对于maxλ,λ≥0L(x,λ)\underset{\lambda ,\lambda\ge0}{\max}\ L(x,\lambda)λ,λ≥0max L(x,λ) 这个式子,注意,这里xxx当作常量,λ\lambdaλ才是变量。它的最大值maxλ,λ≥0L(x,λ)=+∞\underset{\lambda ,\lambda\ge0}{\max}\ L(x,\lambda)=+\inftyλ,λ≥0max L(x,λ)=+∞. 然后对于任意xxx是没有最小值的。反过来也就是说,如果求得了一个最小值,那它必然是满足约束条件g(x)g(x)g(x)的。
- 第二种情况是在L(x,λ)L(x,\lambda)L(x,λ)中的g(x)g(x)g(x)满足约束条件,即g(x)≤0g(x) \le 0g(x)≤0. 对于maxλ,λ≥0L(x,λ)\underset{\lambda ,\lambda\ge0}{\max}\ L(x,\lambda)λ,λ≥0max L(x,λ) 这个式子,依然将xxx看作常数,maxλ,λ≥0L(x,λ)=f(x)+maxλ,λ≥0λg(x)\underset{\lambda ,\lambda\ge0}{\max}\ L(x,\lambda)=f(x)+\underset{\lambda ,\lambda\ge0}{\max}\ \lambda g(x)λ,λ≥0max L(x,λ)=f(x)+λ,λ≥0max λg(x).其中因为λ≥0,g(x)≤0\lambda \ge 0,g(x) \le 0λ≥0,g(x)≤0,所以maxλ,λ≥0λg(x)=0\underset{\lambda ,\lambda\ge0}{\max}\ \lambda g(x)=0λ,λ≥0max λg(x)=0.即maxλ,λ≥0L(x,λ)=f(x)\underset{\lambda ,\lambda\ge0}{\max}\ L(x,\lambda)=f(x)λ,λ≥0max L(x,λ)=f(x).此时再两边将xxx看作变量求最小值是相等的,也就是minxmaxλ,λ≥0L(x,λ)=minxf(x)\underset{x}{\min}\underset{\lambda ,\lambda\ge0}{\max}\ L(x,\lambda)=\underset{x}{\min}f(x)xminλ,λ≥0max L(x,λ)=xminf(x).
一句话总结一下,对于minxmaxλ,λ≥0L(x,λ)\underset{x}{\min}\underset{\lambda ,\lambda\ge0}{\max}\ L(x,\lambda)xminλ,λ≥0max L(x,λ)求得的最小值必然就是原问题满足约束的最小值。
对偶转化
对于minxmaxλ,λ≥0L(x,λ)\underset{x}{\min}\underset{\lambda ,\lambda\ge0}{\max}\ L(x,\lambda)xminλ,λ≥0max L(x,λ)问题,可以简单地看作是一个二元函数,先对其中一个自变量求最大值,再对另一个自变量求最小值。我们先不加证明的给出结论(左边是原始问题,右边是对偶问题):
minxmaxλ,λ≥0L(x,λ)≥maxλ,λ≥0minxL(x,λ)\underset{x}{\min}\underset{\lambda ,\lambda\ge0}{\max}\ L(x,\lambda) \ge \underset{\lambda ,\lambda\ge0}{\max}\underset{x}{\min}\ L(x,\lambda) xminλ,λ≥0max L(x,λ)≥λ,λ≥0maxxmin L(x,λ)
啰嗦一句,(1)minxmaxλ,λ≥0L(x,λ)\underset{x}{\min} \underset{\lambda ,\lambda\ge0}{\max}\ L(x,\lambda)xminλ,λ≥0max L(x,λ)是从右向左算,先算最大再算最小。(2)注意min或max下面对应变量才是自变量,其余变量在计算此时的最大或最小时可以看作常量。
下面简单证明一下
令原始问题的最优解为x0,λ0x_0,\lambda_0x0,λ0,即L(x0,λ0)=minxmaxλ,λ≥0L(x,λ)L(x_0,\lambda_0)=\underset{x}{\min}\underset{\lambda ,\lambda\ge0}{\max}\ L(x,\lambda)L(x0,λ0)=xminλ,λ≥0max L(x,λ).
令对偶问题的最优解为x1,λ1x_1,\lambda_1x1,λ1,即L(x1,λ1)=maxλ,λ≥0minxL(x,λ)L(x_1,\lambda_1)=\underset{\lambda ,\lambda\ge0}{\max}\underset{x}{\min}\ L(x,\lambda)L(x1,λ1)=λ,λ≥0maxxmin L(x,λ).
因为L(x0,λ0)L(x_0,\lambda_0)L(x0,λ0)是关于λ\lambdaλ的最大值,所以对于任意λ\lambdaλ,都有L(x0,λ0)≥L(x0,λ)L(x_0,\lambda_0) \ge L(x_0,\lambda)L(x0,λ0)≥L(x0,λ). 那么L(x0,λ0)≥L(x0,λ1)L(x_0,\lambda_0) \ge L(x_0,\lambda_1)L(x0,λ0)≥L(x0,λ1).
因为L(x1,λ1)L(x_1,\lambda_1)L(x1,λ1)是关于xxx的最小值,所以对于任意xxx,都有L(x1,λ1)≤L(x,λ1)L(x_1,\lambda_1) \le L(x,\lambda_1)L(x1,λ1)≤L(x,λ1). 那么L(x1,λ1)≤L(x0,λ1)L(x_1,\lambda_1) \le L(x_0,\lambda_1)L(x1,λ1)≤L(x0,λ1).
所以,L(x0,λ0)≥L(x0,λ1)≥L(x1,λ1)L(x_0,\lambda_0) \ge L(x_0,\lambda_1) \ge L(x_1,\lambda_1)L(x0,λ0)≥L(x0,λ1)≥L(x1,λ1).因此原始问题最值≥\ge≥对偶问题最值。
可是,这里是≥\ge≥啊!又不是===.这又不完全等价转化。
这里,不加证明地说明,只要满足KKT条件,那就可以完全转化,原始问题===对偶问题.那KKT条件是什么呢?KKT条件就是之前的约束都满足。即
g(x)≤0λg(x)=0λ≥0g(x) \le 0\\\lambda g(x)=0\\ \lambda \ge 0 g(x)≤0λg(x)=0λ≥0
所谓转化为对偶问题,也即是转化为满足KKT条件的对偶问题,否则是不能完全等价转化的。
回到SVM原始目标的转化上来
我们定义拉格朗日函数
L(w,b,α)=12∣∣w∣∣2+∑i=1mαi[1−yi(wTxi+b)](其中αi≥0)L(w,b,\alpha)=\frac{1}{2}||w||^2+\sum_{i=1}^{m}\alpha_i[1-y_i(w^Tx_i+b)] \quad (其中\alpha_i \ge 0) L(w,b,α)=21∣∣w∣∣2+i=1∑mαi[1−yi(wTxi+b)](其中αi≥0)
其中,m是样本数量,这里就有m个约束,当然也就有m个拉格朗日因子。现在SVM原始目标转化为
minw,bmaxα,α≥0L(w,b,α)\underset{w,b}{\min}\underset{\alpha ,\alpha\ge0}{\max}\ L(w,b,\alpha) w,bminα,α≥0max L(w,b,α)
再转化为满足KKT条件的对偶问题(这里就直接写等号了)
minw,bmaxα,α≥0L(w,b,α)=maxα,α≥0minw,bL(w,b,α)=maxα,α≥0minw,b12∣∣w∣∣2+∑i=1mαi[1−yi(wTxi+b)]\underset{w,b}{\min}\underset{\alpha ,\alpha\ge0}{\max} L(w,b,\alpha)= \underset{\alpha ,\alpha\ge0}{\max} \underset{w,b}{\min} L(w,b,\alpha)= \underset{\alpha ,\alpha\ge0}{\max} \underset{w,b}{\min} \frac{1}{2}||w||^2+\sum_{i=1}^{m}\alpha_i[1-y_i(w^Tx_i+b)] w,bminα,α≥0maxL(w,b,α)=α,α≥0maxw,bminL(w,b,α)=α,α≥0maxw,bmin21∣∣w∣∣2+i=1∑mαi[1−yi(wTxi+b)]
KKT条件:
αi≥01−yi(wTxi+b)≤0αi[1−yi(wTxi+b)]=0\alpha_i \ge 0\\ 1-y_i(w^Tx_i+b) \le 0\\ \alpha_i[1-y_i(w^Tx_i+b)] = 0 αi≥01−yi(wTxi+b)≤0αi[1−yi(wTxi+b)]=0
对于minw,b12∣∣w∣∣2+∑i=1mαi[1−yi(wTxi+b)]\underset{w,b}{\min} \frac{1}{2}||w||^2+\sum_{i=1}^{m}\alpha_i[1-y_i(w^Tx_i+b)]w,bmin21∣∣w∣∣2+∑i=1mαi[1−yi(wTxi+b)].这里将αi\alpha_iαi看作常量,可以通过求导令导数为0来算出极值点。(这也是为什么要转化为对偶问题,因为这里可以通过求导算极值点)。
对www求导:
∇w=w−∑i=1mαiyixi=0⇒w∗=∑i=1mαiyixi\nabla_w=w-\sum_{i=1}^{m}\alpha_iy_ix_i=0 \Rightarrow w^*=\sum_{i=1}^{m}\alpha_iy_ix_i ∇w=w−i=1∑mαiyixi=0⇒w∗=i=1∑mαiyixi
对bbb求导:
∇b=∑i=1mαiyi=0\nabla_b=\sum_{i=1}^{m}\alpha_iy_i=0 ∇b=i=1∑mαiyi=0
这里先将αi\alpha_iαi看作常量,假设我们已经求得了最终的αi\alpha_iαi,那么求得的w∗w^*w∗就可以算出来了,因为αi,yi,xi\alpha_i,y_i,x_iαi,yi,xi都已知。如何求bbb呢?注意到第三个KKT条件,当αi>0\alpha_i \gt 0αi>0时,(对应这个xix_ixi就是所谓的支持向量)那么ys(wTxs+b)=1y_s(w^Tx_s+b)=1ys(wTxs+b)=1.这里w已求出,只有b未知,所以bs=ys−w∗xs=ys−∑i=1SαiyixiTxsb_s=y_s-w^*x_s=y_s-\sum_{i=1}^{S}\alpha_iy_ix_i^Tx_sbs=ys−w∗xs=ys−∑i=1SαiyixiTxs.理论上,任意一个支持向量xsx_sxs都应该算出一样的b.但是这里一般求所以支持向量算出的bsb_sbs的平均值来表示最终的b∗b^*b∗.即b∗=1S∑i=1Sbsb^*=\frac{1}{S}\sum_{i=1}^{S}b_sb∗=S1∑i=1Sbs.(S表示共S个支持向量)。至于为什么呢?简单地说就是主要是求得的α\alphaα并不是准确值,这得参考下一节用SMO来求解α\alphaα的过程。
我们将求得的w∗w^*w∗带入maxα,α≥0minw,b12∣∣w∣∣2+∑i=1mαi[1−yi(wTxi+b)]\underset{\alpha ,\alpha\ge0}{\max} \underset{w,b}{\min} \frac{1}{2}||w||^2+\sum_{i=1}^{m}\alpha_i[1-y_i(w^Tx_i+b)]α,α≥0maxw,bmin21∣∣w∣∣2+∑i=1mαi[1−yi(wTxi+b)]中得到
maxα,α≥0∑i=1mαi−12∑i=1m∑j=1mαiαjyiyjxiTxj\underset{\alpha ,\alpha\ge0}{\max} \sum_{i=1}^{m}\alpha_i-\frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\alpha_i\alpha_jy_iy_jx_i^Tx_j α,α≥0maxi=1∑mαi−21i=1∑mj=1∑mαiαjyiyjxiTxj
转化为求最小,再将上面的约束加上,得到最终的优化问题(这个优化问题是由SMO算法来解决)
minα,α≥012∑i=1m∑j=1mαiαjyiyjxiTxj−∑i=1mαis.t.∑i=1mαiyi=00≤αi\underset{\alpha ,\alpha\ge0}{\min} \frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\alpha_i\alpha_jy_iy_jx_i^Tx_j- \sum_{i=1}^{m}\alpha_i\\ s.t. \quad \sum_{i=1}^{m}\alpha_iy_i=0\\ 0 \le \alpha_i α,α≥0min21i=1∑mj=1∑mαiαjyiyjxiTxj−i=1∑mαis.t.i=1∑mαiyi=00≤αi
参考
广义拉格朗日函数的理解
简易解说拉格朗日对偶(Lagrange duality)
SVM(support vector machine)算法详解中之转化对偶问题相关推荐
- 机器学习算法 --- SVM (Support Vector Machine)
一.SVM的简介 SVM(Support Vector Machine,中文名:支持向量机),是一种非常常用的机器学习分类算法,也是在传统机器学习(在以神经网络为主的深度学习出现以前)中一种非常牛X的 ...
- 支持向量机SVM(Support Vector Machine)是一个有监督的学习模型
前言 动笔写这个支持向量机(support vector machine)是费了不少劲和困难的,原因很简单,一者这个东西本身就并不好懂,要深入学习和研究下去需花费不少时间和精力,二者这个东西也不好讲清 ...
- SVM(Support Vector Machine)读书笔记三(Soft-margin SVM)
上两篇讲到了hard-margin的SVM以及kernel的原理,利用高斯kernel可以将低维空间转换到无穷维,将所有样本分开.但是如果数据中存在一定的噪声数据,SVM也会将噪声数据拟合,存在过拟合 ...
- SVM(support vector machine)支持向量机原理详解
SVM是什么? SVM - support vector machine, 俗称支持向量机,为一种supervised learning算法,属于classification的范畴. 在数据挖掘的应用 ...
- SVM算法(Support Vector Machine)
一.SVM 支持向量机(support vector machines,SVM)是一种二分类模型,将实例的特征向量映射为空间中的一些点,SVM 的目的就是想要画出一条线,以 "最好地&quo ...
- php升维,svm算法详解
SVM方法是通过一个非线性映射p,把样本空间映射到一个高维乃至无穷维的特征空间中(Hilbert空间),使得在原来的样本空间中非线性可分的问题转化为在特征空间中的线性可分的问题. (推荐学习:phps ...
- 详解支持向量机(Support Vector Machine, SVM)
接触支持向量机(Support Vector Machine, SVM)有很长一段时间了,对它的原理一直懵懵懂懂.有幸在国科大听了兰艳艳老师的课,对SVM有了更加深入的认识,决定写成笔记记录下来,当作 ...
- SVM 支持向量机算法(Support Vector Machine )【Python机器学习系列(十四)】
SVM 支持向量机算法(Support Vector Machine )[Python机器学习系列(十四)] 文章目录 1.SVM简介 2. SVM 逻辑推导 2.1 Part1 化简限制条件 2.2 ...
- 【机器学习算法】支持向量机(support Vector Machine,SVM)
目录 支持向量机 支持向量机概述 线性可分及线性不可分的问题 线性可分的支持向量机 线性不可分的支持向量机 支持向量机与神经网络之间的关系 处理两类以上的分类问题. 我的主页:晴天qt01的博客_CS ...
最新文章
- AI一分钟 | 浙大研发出“踢不倒”的四足机器人;富士康冲击A股上市,AI为最大卖点
- rails 数据库相关操作命令
- 失物招领php_新奥尔良圣徒队是否增加了失物招领?
- java getdelay_java中DelayQueue的一个使用陷阱分析
- Leetcode 76.最小覆盖子串
- 使用pip+清华镜像源安装软件
- 2019牛客多校第六场H Pair(数位DP 多个数相关)题解
- URLDecoder用法
- Linux/Centos: readelf命令使用说明
- Dynamic 365 中创建编码规则
- python题目-兔子生育计数
- 什么是cs架构和bs架构
- 如何申请免费的ssl证书
- 生活中的算法的实际举例_算法在实际生活中的应用
- iOS开发-iOS10新特性及开发者主要注意点
- 使用 eBPF 和 XDP 高速处理数据包
- 云计算技术的产生、思想、原理、应用和前景
- 珍藏的Android电子书
- 你的网站为什么被黑?
- 星际旅行飞船乘坐票制作生成微信小程序源码下载
热门文章
- 梦醒时分,身边却没有女人。
- redis缓存命中率
- APPStore无法更新Xcode
- java 可变参数 详解(通俗易懂)
- aws云服务器查看系统版本,Amazon EC2是什么?Amazon EC2云服务器常见问题汇总
- Gmail一登录就显示“您浏览器的 cookie 功能被禁用,请启用此功能”
- 42 R 主成分分析PCA与因子分析EFA
- 《深入分析GCC 》——3.3 GCC源代码编译
- 在openweathermap中获取API key 和Location ID的图文教程
- Windows安装MySQL提示msvcr120.dll缺失解决方案