深入理解SVM,软间隔与对偶问题
今天是机器学习专题的第33篇文章,我们继续来聊聊SVM模型。
在上一篇文章当中我们推到了SVM模型在线性可分的问题中的公式推导,我们最后得到的结论是一个带有不等式的二次项:
&\min_{\omega , b} \frac{1}{2}||\omega||^2\\
s.t.& \quad y_i(\omega^Tx + b) \ge 1, &i=1,2,3\ldots,m\\
\end{align*}\right.\]
想要了解具体推导过程的同学,可以参考我的上一篇文章:
传送门
其实上一篇的文章当中遗留了一个问题,就是我们希望得到\(||\omega||\)最小,为什么不直接求\(||\omega||\)最小,而非要求\(||\omega||^2\)最小呢?原因就在它的解法上,因为我们要将它转化成一个凸二次规划问题(Quadratic Programming)。QP问题也是计算科学当中一个很重要的领域,也是比较困难的领域,因为需要对计算机以及数学都有很深的造诣。
我个人感觉和实际的机器学习以及工程结合不是非常紧密,目前主要在SVM模型的原理推导上用到,所以我们可以只需要把SVM用到的公式原理理解就可以了。
求解过程
QP问题其实有专门的QP计算包可以求它的极值,我也曾经用过,但这并不是唯一的解法,并且这种解法有一个很大的缺点在于没办法套用核函数。所以我们一般不使用QP规划的方法来求解。
我们观察一下原式,很自然的会有一种感觉,就是那些不等式很烦人。我们希望消除掉这些不等式,也有办法,就是通过使用拉格朗日乘子法来将有约束的优化目标转化成无约束的优化函数。
我们来看下拉格朗日乘子法的使用过程,给定一个不等式约束问题:
&\min_{x} f(x)\\ s.t.& g_i(x) \le 0, i=1, 2, \cdots, k\\
&h_j(x) = 0, j=1, 2, \cdots, m\\ & \end{align*}\right.\]
对于这个看起来很复杂的方程组,我们引入一个广义朗格朗日函数,将它改写成这样:
\]
这个式子相比于上面的方程组看起来要简单一些,但是它有什么用呢?我们简单分析一下,会发现\(L \le f(x)\)。因为\(\alpha_i \ge 0\),并且\(g_i(x) \le 0\)。所以两者相加,\(L \le f(x)\),当\(\alpha_i = 0\)时L可以取到最大值,这时\(L = f(x)\)。所以我们要求的是\(\max L(x, \alpha, \beta)\)。
又由于我们要求的目标是\(f(x)\)的极小值,我们最终的目标是\(\min_{x} \max_{\alpha_i \ge 0} L(x, \alpha, \beta)\)。
对偶问题
接下来我们就要讨论著名的对偶问题了,所谓的对偶问题,实质上是将一个带有两个不等式的方程的不等式进行调换顺序。把\(\min \max L\)转变成\(\max \min L\),但问题是不等号的位置显然是有讲究的,不可以随意调换顺序,所以我们需要证明这样调换成立的。
为了方便起见,我们把原问题写成\(\theta_P(x)=\min_x \max_{\alpha, \beta}L(x, \alpha, \beta)\),我们再定义一个关于\(\alpha\)和\(\beta\)有关的方程:\(\theta_D(\alpha, \beta) = \min_{x}L(x, \alpha, \beta)\)。这个方程等式的右边是拉格朗日函数的最小化,因为x确定了之后,方程的结果就只和\(\alpha\)以及\(\beta\)相关,所以它是一个关于\(\alpha\)和\(\beta\)的函数。
我们对这个函数求极大值:
\]
不知道这个式子看起来是不是觉得有些眼熟,因为它和我们刚才推导得出来的原问题非常相似,只是不等号的位置不同。我们为什么要列出这两个式子呢?当然不是为了好玩的,主要是为了想要得到这样一条不等式:
\]
我们用拉格朗日方程做过度,就可以很容易证明这个式子:
\]
我们想要用对偶问题代替原问题,就需要上面这个不等号取等。对于拉格朗日方程取等的条件,数学家们已经有了严谨的证明,只需要满足Karush-Kuhn-Tucker条件(简称KTT条件)。KTT的条件推导也是一个挺复杂的过程,我们不做深入研究, 只需要知道它的存在就可以了。
KTT条件有这么几条,看起来多其实并不复杂。
\]
\]
\]
\]
\]
\]
\]
我们对照KTT条件,求解\(\theta_P(x)\)的极小值,这个就是高中数学的部分了。我们首先对原式进行化简:
L(x, \omega, b) &= \frac{1}{2}||\omega||^2 + \sum_{i=1}^m\alpha_i(1 - y_i(\omega^T x_i + b))\\
&= \frac{1}{2}||\omega||^2 + \sum_{i=1}^m (\alpha_i - \alpha_i y_i \omega^Tx_i - \alpha_i y_ib) \\
&= \frac{1}{2}||\omega||^2 + \sum_{i=1}^m \alpha_i - \sum_{i=1}^m \alpha_i y_i\omega^Tx_i - \sum{i=1}^m \alpha_i y_ib
\end{aligned}
\]
再对\(\omega\)和\(b\)进行求导:
\]
\]
我们通过求导得出了\(\omega\)和\(\alpha\)之间的关系,也就是说只要我们确定了\(\alpha\)也就确定了\(\omega\),另外我们可以神奇地发现上面的式子当中已经没有了b,说明b已经被我们消去了。我们把上面求导得到的取极值时的\(\omega\)和\(b\)代入原式,消去\(\omega\)和\(b\),可以得到:
\min_{\omega, b} L(x, \omega, b) &= \frac{1}{2}\omega^T\omega + \sum_{i=1}^m \alpha_i - \sum_{i=1}^m \alpha_iy_i\omega^Tx_i - \sum_{i=1}^m \alpha_iy_i b \\
&= -\frac{1}{2}\omega^T\sum_{i=1}^m \alpha_iy_i x_i + \sum_{i=1}^m \alpha_i - b\sum_{i=1}^m \alpha_iy_i \\
& = -\frac{1}{2}\omega^T\sum_{i=1}^m \alpha_iy_i x_i + \sum_{i=1}^m \alpha_i \\
& = \sum_{i=1}^m \alpha_i - \frac{1}{2}\sum_{i=1}^m\sum_{j=1}^m \alpha_i \alpha_j y_i y_j x_i^T x_j
\end{aligned}
\]
我们观察一下是这个式子,会发现x和y都是固定的值由样本确定,唯一的变量就只有\(\alpha\)了。我们要求的是上式的极大值,唯一的变量是\(\alpha\),求出了\(\alpha\)就可以推导得到对应的\(\omega\)和b。
那么这个\(\alpha\)怎么求呢?相关的内容我们放到下一篇文章。
今天的文章到这里就结束了,如果喜欢本文的话,请来一波素质三连,给我一点支持吧(关注、转发、点赞)。
深入理解SVM,软间隔与对偶问题的更多相关文章
- 机器学习,详解SVM软间隔与对偶问题
今天是机器学习专题的第34篇文章,我们继续来聊聊SVM模型. 我们在上一篇文章当中推导了SVM模型在硬间隔的原理以及公式,最后我们消去了所有的变量,只剩下了\(\alpha\).在硬间隔模型当中,样本 ...
- 支持向量机(SVM)必备概念(凸集和凸函数,凸优化问题,软间隔,核函数,拉格朗日乘子法,对偶问题,slater条件、KKT条件)
SVM目前被认为是最好的现成的分类器,SVM整个原理的推导过程也很是复杂啊,其中涉及到很多概念,如:凸集和凸函数,凸优化问题,软间隔,核函数,拉格朗日乘子法,对偶问题,slater条件.KKT条件还有 ...
- 5. 支持向量机(SVM)软间隔
1. 感知机原理(Perceptron) 2. 感知机(Perceptron)基本形式和对偶形式实现 3. 支持向量机(SVM)拉格朗日对偶性(KKT) 4. 支持向量机(SVM)原理 5. 支持向量 ...
- 支持向量机 (二): 软间隔 svm 与 核函数
软间隔最大化(线性不可分类svm) 上一篇求解出来的间隔被称为 "硬间隔(hard margin)",其可以将所有样本点划分正确且都在间隔边界之外,即所有样本点都满足 \(y_{i ...
- SVM核函数与软间隔
核函数 在上文中我们已经了解到使用SVM处理线性可分的数据,而对于非线性数据需要引入核函数的概念它通过将数据映射到高维空间来实现线性可分.在线性不可分的情况下,支持向量机通过某种事先选择的非线性映射( ...
- 软间隔分类——SVM
引入:1. 数据线性不可分:2. 映射到高维依然不是线性可分3. 出现噪声.如图: 对原始问题变形得到#2: 进行拉格朗日转换: 其中α和r是拉格朗日因子,均有不小于0的约束.按照之前的对偶问题的推导 ...
- 支持向量机(SVM)的推导(线性SVM、软间隔SVM、Kernel Trick)
线性可分支持向量机 给定线性可分的训练数据集,通过间隔最大化或等价地求解相应的凸二次规划问题学习到的分离超平面为 \[w^{\ast }x+b^{\ast }=0\] 以及相应的决策函数 \[f\le ...
- 线性可分支持向量机与软间隔最大化--SVM(2)
线性可分支持向量机与软间隔最大化--SVM 给定线性可分的数据集 假设输入空间(特征向量)为,输出空间为. 输入 表示实例的特征向量,对应于输入空间的点: 输出 表示示例的类别. 我们说可以通过间隔最 ...
- SVM中的软间隔最大化与硬间隔最大化
参考文献:https://blog.csdn.net/Dominic_S/article/details/83002153 1.硬间隔最大化 对于以上的KKT条件可以看出,对于任意的训练样本总有ai= ...
随机推荐
- log4j2 自动删除过期日志文件配置及实现原理解析
日志文件自动删除功能必不可少,当然你可以让运维去做这事,只是这不地道.而日志组件是一个必备组件,让其多做一件删除的工作,无可厚非.本文就来探讨下 log4j 的日志文件自动删除实现吧. 0. 自动删除 ...
- PyCharm2020激活破解教程
本文内容皆为作者原创,如需转载,请注明出处:https://www.cnblogs.com/xuexianqi/p/12767075.html 免责声明:本方法只做学习研究之用,不得用于商业用途 若经 ...
- Android后台数据接口交互实现注册功能
首先,在ecplise里面新建一个叫做TestServices的web工程.在WebContent--WEB-INF--libs文件夹下导入两个jar包:mysql-connector-java-6. ...
- 简单认识JAVA内存划分
Java的内存划分为五个部分 那么又是哪五个部分呢?跟着我往下看! 介绍: 每个程序运行都需要内存空间,所以Java也不例外:而Java把从计算机中申请的这一块内存又进行了划分!而所在目的是为了让程序 ...
- CSS可见格式化模型
1.盒模型 1.1 盒子大小 盒模型描述了元素如何显示,以及如何相互作用.相互影响. 页面中的所有元素都被看作一个矩形盒子,这个盒子包含元素的内容.内边距.边框和外边距. 给元素应用的背景会作用于元素 ...
- Docker 启动 Nginx
Docker 启动 Nginx 拉取镜像 docker pull nginx:1.17.9 启动步骤 # 创建 nginx 目录 mkdir -p /usr/local/nginx && ...
- Docker 快速搭建 LDAP
Docker 快速搭建 LDAP 步骤 # 拉取镜像 docker pull osixia/openldap:1.3.0 # 创建并进入映射目录 mkdir -p /usr/local/ldap &a ...
- 微信公众号里面怎么添加xls
微信公众号里面添加xls的教程 我们都知道创建一个微信公众号,在公众号中发布一些文章是非常简单的,但公众号添加附件下载的功能却被限制,如今可以使用小程序“微附件”进行在公众号中添加附件. 以下是公众号 ...
- ElementUi——el-select下拉框
<el-select v-model="ruleForm.status" placeholder="请选择状态" @change="styleC ...
- menset与fill
menset函数一般只对int型数组进行0.-1的赋值.原因:menset对数组是按字节赋值,对每个字节的赋值是相同的,故int的4个字节全部被赋相同的值,而0正好二进制编码全为0,-1的二进制编码全 ...