热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

模式识别笔记3-支持向量机SVM

1.线性SVM对两类点的划分问题,这里对比下逻辑回归和SVM的区别:逻辑回归的思想是,将所有点到决策平面的距离作为损失来进行训练,目标是到决策平面的距离和最小SVM的思想是,只

1. 线性SVM


对两类点的划分问题,这里对比下逻辑回归和SVM的区别:

  • 逻辑回归的思想是,将所有点到决策平面的距离作为损失来进行训练,目标是到决策平面的距离和最小
  • SVM的思想是,只关注支持向量(图中圈出的点)到决策平面的距离,最大化这个距离。

对于所有样本点 \(\{(x_i,y_i)\}, i = 1,2,\cdots, m\) ,SVM划分正负样本,即 \(y\in\{1,-1\}\) ,则有:
\[ \begin{align} \begin{cases} y_i = +1, w^Tx_i +b >0\\ y_i = -1, w^Tx_i +b<0 \end{cases} \end{align} \]
这里对式子(1)进行一个放缩变换。超平面由参数对 \((w,b)\) 决定,若超平面 \((w',b')\) 能将样本正确分类,那么总存在一个放缩变换 \(\zeta w \mapsto w'\)\(\zeta b \mapsto b'\) 使得下列式子成立:
\[ \begin{align} \begin{cases} y_i = +1, w^Tx_i +b \geq1\\ y_i = -1, w^Tx_i +b\leq1 \end{cases} \end{align} \]
其中,正负样本中各有几个样例使得(2)的等号成立,这些样例被称为 支持向量
SVM的优化目标即是最大化间隔,而两个异类的支持向量到决策平面的距离是:
\[ \begin{align} \gamma = \frac{2}{||w||} \end{align} \]
同时,该优化目标函数具有约束,即式子(2),整理后写在一起:
\[ \notag \begin{array}{l} \max \limits_{w,b}\frac{2}{||w||}\\ s.t. y_i(w^Tx_i +b)\geq1, i=1,2,\cdots,n \end{array} \]
这等价于最小化 \(w\) 的范数:
\[ \begin{align} \begin{array}{l} \min \limits_{w,b}\frac{1}{2}||w||^2\\ s.t. y_i(w^Tx_i +b)\geq1, i=1,2,\cdots,m \end{array} \end{align} \]
式(4)就是SVM的基本型。

2. 对偶问题

式子(4)是一个不等式优化问题,有 \(m\) 个约束条件和 1 个 优化目标,对于这类问题,可以用拉格朗日乘数法来解决。
引入乘数因子 $\alpha $ :
\[ \begin{align} L(w,b,\alpha) = \frac{1}{2}||w||^2+\sum_i^m\alpha_i (1-y_i(w^Tx_i +b)) \end{align} \]
我们令:
\[ \begin{align} \theta(w)=\max \limits_{\alpha_i\geq0}L(w,b,\alpha) \end{align} \]
结合(5)(6)来说,如果 \(y_i(w^Tx_i+b)\geq1\)\(\alpha_i\geq0\) 有任何一个不满足,则 \(\theta(w)=+\infty\) ,所以当约束条件满足时,则有 \(\theta(w)=\frac{1}{2}||w||^2\), 即我们要最小化的目标。因此我们最初的目标函数变成了:
\[ \begin{align} \min \limits_{w,b}\frac{1}{2}||w||^2=\min \limits_{w,b}\theta(w)=\min \limits_{w,b}\max \limits_{\alpha_i\geq0}L(w,b,\alpha)=p^* \end{align} \]
这就是由拉格朗日乘数法引出的原问题。我们假定它的最优值时 \(p^*\)
现在我们把$\min $ 和 \(\max\) 倒置一下,得到它的 对偶问题
\[ \begin{align} \max \limits_{\alpha_i\geq0} \min \limits_{w,b}L(w,b,\alpha)=d^* \end{align} \]
同样我们假定它的最优值时 \(d^*\)。对比一下原问题和对偶问题:

  • 原问题:一个函数最大值中最小的一个值 \(p^*\)
  • 对偶问题: 一个函数最小值中最大的一个 \(d^*\)

显然有 \(d^*\leq p^*\)。即原问题的对偶问题确定了原问题的下界。当然,在满足Slater条件和KKT条件的情况下 \(d^*=q^*\),我们称之强对偶性。看一下Slater条件的定义:

Slater条件:如果主问题是凸优化问题,即不等式约束为凸函数,等式约束为仿射函数(线性变换),且可行域中至少有一点使得不等式约束严格成立,则强对偶性成立。

Slater条件保证鞍点的存在。而KKT条件保证函数可微。这样鞍点就可通过拉格朗日函数求导得到。
再讲KKT条件前,看一下对偶问题的求解:
对于内层最小化,求 \(L\) 关于 \(w, b\) 的偏导为0,解得的结果如下:
\[ \begin{align} w &= \sum \alpha_i y_i x_i\\ 0 &=\sum \alpha_i y_i \end{align} \]
带回式子(5),消去 \(w,b\),得到最终的优化函数为:
\[ \begin{align} \notag \max \limits_{\alpha}\sum_{i=1}^m\alpha_i - \frac{1}{2}\sum_{i=1}^m\sum_{j=1}^{m}a_ia_jy_iy_jx_i^Tx_j\\ s.t. 0 =\sum \alpha_i y_i ,\\ \notag \alpha \geq 0 \end{align} \]

3. KKT条件

KKT是在满足一些有规则的条件下,一个非线性规则问题能有最优解的一个充分必要条件。也就是说,只要约束条件按照这个KKT给出的规则列出,然后符合KKT条件的,就可以有最优解。这是一个广义化拉格朗日乘数的成果。
对于不等式约束,需要满足KKT条件,这里讲一下KKT条件是怎么来的。

上图展示了一个2不等式约束优化问题,简单起见,这里在2维空间内讨论。

  • 右下角方是优化目标函数\(f(x)\)的等高线。
  • 左上方灰色部分是两个约束 \(g_1(x), g_2(x)\) 组成可行解区域。

假定在约束条件下,最优解为 \(x^*\) 。显然该点是2个约束条件以及某条等高线相交点。在该点处有3个梯度,分别用三个箭头表示:

  • 红色箭头代表等高线梯度,它的方向代表优化目标函数值增大的方向,即 \(\nabla f(x^*)\)
  • 绿色箭头代表约束在边缘处的负梯度,代表约束曲线值缩小的方向。

红色箭头必然加载俩绿色箭头中间(如果红色箭头不满足这个条件,那么必然存在更小的等高线穿过可行解区域),即 \(\nabla f(x^*)\) 必然可以由 \(-\nabla g_1(x^*)\)\(-\nabla g_x(x^*)\) 线性表示,且系数一定为正。
于是引出了第一二个KKT条件:
\[ \begin{align} \nabla f(x^*)+\mu_1\nabla g_1(x^*)+\mu_2\nabla g_2(x^*)=0\\ \mu_1\geq0,\mu_2\geq0 \end{align} \]
然而,不一定所有的约束条件都对最优解起作用,比如下图的三约束优化问题:

显然 \(g_3(x)\) 对最优解不起作用。此时,最优解在 \(g_1(x)\)\(g_2(x)\) 上,而不在 \(g_3(x)\) 上。此时,对于前两个KKT条件,有:
\[ \begin{align} \mu_1\geq0,\mu_2\geq0,\mu_3\geq0\\ \nabla f(x^*)+\mu_1 \nabla g_1(x^*)+\mu_2\nabla g_2(x^*)+\mu_3\nabla g_3(x^*)=0 \end{align} \]
对于(13)来说,我们不想让 \(g_3(x)\) 起作用,可以加入一个条件,使得 \(\mu_3=0\) 即可。于是引入第三个KKT条件:
\[ \begin{align} \mu_1g_1(x^*)+\mu_2g_2(x^*)+\mu_3g_3(x^*)=0 \end{align} \]
由于 \(g_1(x^*)=g_2(x^*)=0\), 那么自然的 \(\mu_3=0\),其实条件(16)等价于\(\mu_kg_k(x^*)=0\)
推广到多维等式\(h_j(x)\)和不等式约束\(g_k(x)\)
\[ \begin{align} \nabla f(x^*)+\sum_{j=1}^{m}\lambda_j\nabla h_j(x^*)+\sum_{k=1}^{m}\,u_k\nabla g_k(x^*)=0\\ h_j(x^*)=0, g_k(x^*)\leq0\\ \lambda_j\neq0, \mu_k\geq0, \mu_kg_k(x^*)=0 \end{align} \]
式子(17)(18)(19)合称KKT条件。
回顾我们的SVM优化问题, 注意,在SVM基本型中,参数空间是由\((w,b)\)构成的,而\((x,y)\)对都是已知的
添加上SVM基本型,即公式(4)的条件:
\[ \begin{align} \max \limits_{\alpha}\sum_{i=1}^m\alpha_i - \frac{1}{2}\sum_{i=1}^m\sum_{j=1}^{m}a_ia_jy_iy_jx_i^Tx_j\\ s.t. 0 =\sum \alpha_i y_i ,\\ \alpha \geq 0\\ y_if(x_i)-1\geq0 \end{align} \]
式子(18)是由 \(L(w,b,\alpha)\)\(w,b\)偏导为0求出,即满足了KKT条件(2),最终整理得,优化目标为:
\[ \begin{align} \max \limits_{\alpha}\sum_{i=1}^m\alpha_i - \frac{1}{2}\sum_{i=1}^m\sum_{j=1}^{m}a_ia_jy_iy_jx_i^Tx_j\\ s.t. \sum \alpha_i y_i=0 ,\\ \alpha \geq 0\\ \end{align} \]
然后KKT要求这一过程满足:
\[ \begin{align} \begin{cases} \alpha_i\geq0\\ y_if(x_i)-1\geq0\\ \alpha_i(y_if(x_i)-1)=0 \end{cases} \end{align} \]
注意公式(27)的第三个式子 ,对于任意的训练样本\((x_i,y_i)\) 总满足\(\alpha_i=0\)\(y_if(x_i)=1\), 若 \(\alpha_i=0\), 那么它就不会在优化目标(24)中出现,若\(y_if(x_i)=1\),那么它就是一个支持向量。这就引出了SVM的重要性质:训练完成后,大部分训练样本都不需要保留,最终模型只跟支持向量有关。

4. 解的形式

使用二次规划或者SMO算法解出 \(\alpha\) 后,SVM的解的由以下形式给出
\[ \begin{align} w = \sum \alpha_i y_i x_i \end{align} \]
而注意到 对于任意的支持向量\((x_s, y_s)\),都有 \(y_sf(x_s)=1\),即:
\[ y_s\left( \sum_{i\in S}\alpha_iy_ix_i^Tx_s+b\right)=1 \]
其中 \(S\) 是所有支持向量的下标集合。理论上可以选择任意的支持向量通过求解(29)得到,但现实任务一般采用更鲁棒的形式,即使用所有支持向量求均值:
\[ \begin{align} b=\frac{1}{|S|}\sum_{s\in S}\left(y_s-\sum_{i\in S}\alpha_iy_ix_i^Tx_s\right) \end{align} \]

5. 参考资料

1. 如何通俗地讲解对偶问题?尤其是拉格朗日对偶lagrangian duality? - 彭一洋的回答 - 知
2. 理解支持向量机三层境界


推荐阅读
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • 本文讨论了编写可保护的代码的重要性,包括提高代码的可读性、可调试性和直观性。同时介绍了优化代码的方法,如代码格式化、解释函数和提炼函数等。还提到了一些常见的坏代码味道,如不规范的命名、重复代码、过长的函数和参数列表等。最后,介绍了如何处理数据泥团和进行函数重构,以提高代码质量和可维护性。 ... [详细]
  • 本文介绍了使用Spark实现低配版高斯朴素贝叶斯模型的原因和原理。随着数据量的增大,单机上运行高斯朴素贝叶斯模型会变得很慢,因此考虑使用Spark来加速运行。然而,Spark的MLlib并没有实现高斯朴素贝叶斯模型,因此需要自己动手实现。文章还介绍了朴素贝叶斯的原理和公式,并对具有多个特征和类别的模型进行了讨论。最后,作者总结了实现低配版高斯朴素贝叶斯模型的步骤。 ... [详细]
  • cs231n Lecture 3 线性分类笔记(一)
    内容列表线性分类器简介线性评分函数阐明线性分类器损失函数多类SVMSoftmax分类器SVM和Softmax的比较基于Web的可交互线性分类器原型小结注:中文翻译 ... [详细]
  • Opencv提供了几种分类器,例程里通过字符识别来进行说明的1、支持向量机(SVM):给定训练样本,支持向量机建立一个超平面作为决策平面,使得正例和反例之间的隔离边缘被最大化。函数原型:训练原型cv ... [详细]
  • 支持向量机训练集多少个_25道题检测你对支持向量机算法的掌握程度
    介绍在我们学习机器算法的时候,可以将机器学习算法视为包含刀枪剑戟斧钺钩叉的一个军械库。你可以使用各种各样的兵器,但你要明白这些兵器是需要在合适的时间合理 ... [详细]
  • plt python 画直线_机器学习干货,一步一步通过Python实现梯度下降的学习
    GradientDescent-梯度下降梯度下降法(英语:Gradientdescent)是一个一阶最优化算法,通常也称为最速下降法。要使用梯度下降法找 ... [详细]
  • 机器学习之数据均衡算法种类大全+Python代码一文详解
    目录前言一、为什么要做数据均衡?二、数据场景1.大数据分布不均衡2.小数据分布不均衡三、均衡算法类型1.过采样2.欠采样3.组合采样四、算法具体种类1 ... [详细]
  • Stanford机器学习第九讲. 聚类
    原文:http:blog.csdn.netabcjenniferarticledetails7914952本栏目(Machinelearning)包括单参数的线性回归、多参数的线性 ... [详细]
  • 开源真香 离线识别率高 Python 人脸识别系统
    本文主要介绍关于python,人工智能,计算机视觉的知识点,对【开源真香离线识别率高Python人脸识别系统】和【】有兴趣的朋友可以看下由【000X000】投稿的技术文章,希望该技术和经验能帮到 ... [详细]
  • 近年来,大数据成为互联网世界的新宠儿,被列入阿里巴巴、谷歌等公司的战略规划中,也在政府报告中频繁提及。据《大数据人才报告》显示,目前全国大数据人才仅46万,未来3-5年将出现高达150万的人才缺口。根据领英报告,数据剖析人才供应指数最低,且跳槽速度最快。中国商业结合会数据剖析专业委员会统计显示,未来中国基础性数据剖析人才缺口将高达1400万。目前BAT企业中,60%以上的招聘职位都是针对大数据人才的。 ... [详细]
  • 开发笔记:小白python机器学习之路——支持向量机
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了小白python机器学习之路——支持向量机相关的知识,希望对你有一定的参考价值。支持 ... [详细]
  • 使用机器学习的疾病预测原文:https://www.gees ... [详细]
  • 偶然发现的Python自学宝藏地带!
    大家好最近发现一个自学python的好地方,这里全部都是原创文章,涉及爬虫、可视化、PythonWeb、数据分析、自动化办公、机器学习,应 ... [详细]
author-avatar
mobiledu2502917953
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有