SVM探讨

SVM算法

根据处理问题的复杂度,SVM 可由简到繁分为三种:

  • 线性可分支持向量机:硬间隔最大化。
  • 线性支持向量机:数据分布近似线性可分,可通过软间隔最大化(惩罚因子,松弛变量)来线性分隔样本点。
  • 非线性支持向量机:通过核函数提升特征维度,做个一个非线性的变换,来将非线性问题转化为线性问题。

先写出==SVM定义损失函数的策略==
  求得的超平面能够让所有点中离它最近的点具有最大间距。这样我们可以得出结论,我们更应该关心靠近中间分割面的点,让它们尽可能地远离分割面,而不是在所有点上达到最优。因此,SVM考虑局部(不关心已经确定远离的点),logistic回归考虑全局(已经远离的点可能通过调整中间线使其能够更加远离)。

硬间隔最大化的优化目标

\[\min_{w,b}{ \dfrac{1}{2} {\left\| w \right\|}^{2} }\]\[s.t.\quad y_i(wx_i + b)\ge 1,\ \ i=1,2,\ldots,m\]
  接着构建拉格朗日函数,对每个不等式约束引入另个拉格朗日乘子 $\alpha_i \ge 0, i=1,2,\ldots,m $,定义拉格朗日函数:

\[\begin{eqnarray}L(w,b,\alpha)
&=&\dfrac{1}{2} {\left\| w \right\|}^{2}-\sum _{ i=1 }^{ m }{ \alpha_i \left[ y_i(wx_i+b)-1 \right] }\\
&=&\dfrac{1}{2} {\left\| w \right\|}^{2}-\sum _{ i=1 }^{ m }{ \alpha_i y_i(wx_i+b) + \sum _{ i=1 }^{ m }{\alpha_i} }\\
\end{eqnarray}\]

注意:为什么构造拉格朗日函数的时候,用的是“—”而不是“+”?
  因为标准的凸优化问题再构造拉格朗日函数的时候,不等式的优化问题是“ \(\le\) ”,而 SVM 中的不等式约束都是“ \(\ge\) ”,所以在构造拉格朗日函数的时候,取负号“—”.

由于\[\max_{w,b,\alpha}{L(w,b,\alpha)}=\dfrac{1}{2} {\left\| w \right\|}^{2}\]这样我们的优化目标的 原始问题 转化为等价的 广义拉格朗日函数的极小极大问题,如果将其最优解记作 \(p^*\),则有:
\[p^*=\min_{w,b}{\max_{\alpha}{L(w,b,\alpha)}}\]
因此,对偶问题 为 广义拉格朗日函数的极大极小 问题,记其最优解为 \(d^*\),则有:
\[d^*= \max_{\alpha}\min_{w,b}{L(w,b,\alpha)}\]
  这里,由于原始问题先求的 max,满足:\(p^* \ge q^*\),这称作“弱对偶”,在一些情况下,有 “\(p^* = q^*\)” ,称作“强对偶”。

  但是由于,SVM 的优化目标和约束不等式都是凸函数(凸优化问题),因此这里有 \(p^*=q^*\) 。同时,不等式的约束关系满足 KKT 条件——对于凸优化问题,KKT 条件是原始问题和对偶问题具有相同解(强对偶)的充分必要条件;非凸优化问题,KKT 条件为必要条件。【拉格朗日对偶性和 KKT 条件相关详细内容,可参考 李航P225】

下面是具体的求解过程:

  (1) 求 \(\min_{w,b}{L(w,b,\alpha)}\)

  将拉格朗日函数 \(L(w,b,\alpha)\) 对 \(w,b\) 求导,并令其等于\(0\).
\[\nabla_w L(w,b,\alpha)=w- \sum _{ i=1 }^{ m }{\alpha_iy_ix_i}\]\[\nabla_b L(w,b,\alpha)=-\sum _{ i=1 }^{ m }{\alpha_iy_i}=0\]得:\[w=\sum _{ i=1 }^{ m }{\alpha_iy_ix_i}\]\[\sum _{ i=1 }^{ m }{\alpha_iy_i}=0\]
  将这两个结果代回公式回到拉格朗日函数,得到 \(L(w,b,\alpha)\) 以 \(w,b\) 为自变量函数的极小值:
\[\begin{eqnarray}\min_{w,b}L(w,b,\alpha)
&=&\dfrac{1}{2} {\left\| w \right\|}^{2}-\sum _{ i=1 }^{ m }{ \alpha_i y_i(wx_i+b) + \sum _{ i=1 }^{ m }{\alpha_i} }\\ &=&\dfrac{1}{2} w\bullet\sum _{ i=1 }^{ m }{\alpha_iy_ix_i} -w\sum _{ i=1 }^{ m }{ \alpha_i y_ix_i- b\sum _{ i=1 }^{ m }{ \alpha_i y_i} + \sum _{ i=1 }^{ m }{\alpha_i} }\\
&=&-\dfrac{1}{2} w\bullet\sum _{ i=1 }^{ m }{\alpha_iy_ix_i}+ \sum _{ i=1 }^{ m }{\alpha_i}\\
&=&-\dfrac{1}{2} \sum _{ i=1 }^{ m }\sum _{ j=1 }^{ m }{\alpha_i\alpha_jy_iy_jx_ix_j}+ \sum _{ i=1 }^{ m }{\alpha_i}
\end{eqnarray}\]

  (2) 求 \(\min_{w,b}{L(w,b,\alpha)}\) 对 \(\alpha\) 的极大值,将 \(min_{w,b}L(w,b,\alpha)\) 取个负号,由求极大值转化成最小值,就得到下面的最优化问题:

\[\min _{\alpha} { \dfrac{1}{2} \sum _{ i=1 }^{ m }\sum _{ j=1 }^{ m }{\alpha_i\alpha_jy_iy_jx_ix_j} - \sum _{ i=1 }^{ m }{\alpha_i} }\]\[s.t.\quad \begin{cases} \sum _{ i=1 }^{ m }{\alpha_iy_i}=0 \\ \alpha_i \ge 0,\ \ i=1,2,\ldots,m \end{cases} \]

再通过 SMO 算法得到 \(\alpha^*\) 为我们的最终解。同时再代回,可得到:
\[w^* = \sum _{ i=1 }^{ m }{\alpha^*_iy_ix_i}\]再根据分隔超平面 \(y_j(wx_j + b) = 1\),得:\[b^* = y_j-\sum _{ i=1 }^{ m }{\alpha^*_iy_i\left<x_i,x_j\right>}\]于是,我们就得到分隔超平面 \(w^*x+b^*=0\) 也可写为:
\[\sum _{ i=1 }^{ m }{\alpha^*_iy_i\left< x,x_i\right> + b^*}=0\]分类决策函数可写为:\[f(x)=sign (\sum _{ i=1 }^{ m }{\alpha^*_iy_i\left< x,x_i\right> + b^*})\]也就是说,分类决策函数依赖于输入样本和训练样本的内积。

硬间隔最大化的支持向量

  特别注意的是:训练数据中对应于 \(\alpha^*_i > 0\) 的样本点 \((x_i,y_i)\)的样本称为“==支持向量==” 。
  证明:有 KKT 互补条件可知,\[\alpha_i \left[ y_i(wx_i+b)-1 \right]=0, \quad i=1,2,\ldots,m\]有,因此对应于 \(\alpha^*>0\)的样本 \(x_i\),有 \[y_i(wx_i+b)=1\]即 \(x_i\) 一定在间隔的边界上。
  

软间隔最大化

\[\min_{w,b}{ \dfrac{1}{2} {\left\| w \right\|}^{2} } + C\sum_{ i=1 }^{ m }{\xi_i}\]\[s.t.\quad \begin{cases} y_i(wx_i + b)\ge 1-\xi_i\ ,\ i=1,2,\ldots,m \\ \xi_i \ge 0\ ,\ \ i=1,2,\ldots,m \end{cases} \]

其中,惩罚因子 \(C\) 为大于0的常数,\(\xi_i\)(克西)为松弛变量。构建拉格朗日函数,对两类不等式约束引入两类拉格朗日乘子 $\alpha_i \ge 0, \beta_i \ge 0, i=1,2,\ldots,m $。定义拉格朗日函数:
\[L(w,b,\xi,\alpha,\beta)=\dfrac{1}{2} {\left\| w \right\|}^{2} + C\sum_{ i=1 }^{ m }{\xi_i}-\sum _{ i=1 }^{ m }{ \alpha_i \left[ y_i(wx_i+b)-1+\xi_i \right] - \sum_{ i=1 }^{ m }{\beta_i\xi_i}}\]
  同样原始问题为极小极大问题,现在转化为极大极小对偶问题的解,且原问题和对偶问题具有相同的解。首先求 \(L(w,b,\xi,\alpha,\beta)\) 的关于变量 \(w,b,\xi\) 的极小值:
\[\nabla_w L(w,b,\xi,\alpha,\beta)=w- \sum _{ i=1 }^{ m }{\alpha_iy_ix_i}\]\[\nabla_b L(w,b,\xi,\alpha,\beta)=-\sum _{ i=1 }^{ m }{\alpha_iy_i}=0\]\[\nabla_{\xi_i} L(w,b,\xi,\alpha,\beta)=C-\alpha_i-\beta_i=0\]
得:
\[w=\sum _{ i=1 }^{ m }{\alpha_iy_ix_i}\]\[\sum _{ i=1 }^{ m }{\alpha_iy_i}=0\]\[C-\alpha_i-\beta_i=0\]
将以上结果代回来格朗日函数,得:\[\min_{w,b,\xi}L(w,b,\xi,\alpha,\beta)=-\dfrac{1}{2} \sum _{ i=1 }^{ m }\sum _{ j=1 }^{ m }{\alpha_i\alpha_jy_iy_j \left<x_i,x_j \right>}+ \sum _{ i=1 }^{ m }{\alpha_i} \]

接着再求 \(\min_{w,b,\xi}L(w,b,\xi,\alpha,\beta)\) 对 \(\alpha\) 的极大值,同样取个负号,极大值转化为极小值问题(注意,参数 \(\beta\) 被神奇的约掉了,简化了计算;同时,虽然跟硬间隔优化目标的函数形式一样,但是约束条件不一样):\[\min _{\alpha} { \dfrac{1}{2} \sum _{ i=1 }^{ m }\sum _{ j=1 }^{ m }{\alpha_i\alpha_jy_iy_jx_ix_j} - \sum _{ i=1 }^{ m }{\alpha_i} }\]\[\begin{eqnarray}s.t.\quad
&& \sum _{ i=1 }^{ m }{\alpha_iy_i}=0\\ && C-\alpha_i-\beta_i=0\\
&& \alpha_i \ge 0,\ \ i=1,2,\ldots,m\\
&& \beta_i \ge 0,\ \ i=1,2,\ldots,m\\
\end{eqnarray}\]第二个于是带入第四个约束约掉 \(\beta_i\) ,约束条件和简写为:\[\begin{eqnarray}s.t.\quad
&& \sum _{ i=1 }^{ m }{\alpha_iy_i}=0\\
&& 0 \le \alpha_i \le C,\ \ i=1,2,\ldots,m\\
\end{eqnarray}\]  现在再比较与硬间隔的区别,发现,唯一的在于对 \(\alpha_i\) 取值上限做了个约束。

软间隔的支持向量探讨

  同样,根据KKT 的互补条件:
\[\alpha_i \left[ y_i(wx_i+b)-1+\xi_i \right]=0, \quad i=1,2,\ldots,m\]有==软间隔的支持向量有四种情况==:

  1. 若 \(0<\alpha^*_i<C\), \(\xi_i=0\),则分类正确,支持向量 \(x_i\) 恰好落在间隔边界上(图中 \(x_1\));
  2. 若 \(\alpha^*_i=C\),\(0<\xi_i<1\),则分类正确,\(x_i\) 在间隔边界与分隔超平面之间(图中 \(x_2\));
  3. 若 \(\alpha^*_i=C\),\(\xi_i=1\), 则 \(x_i\) 在分隔超平面上(图中 \(x_0\));
  4. 若 \(\alpha^*_i=C\),\(\xi_i>1\), 则分类错误, \(x_i\) 在分隔超平面分错的一侧(图中 \(x_3, x_4\))。

软间隔支持向量机的解:\[w^* = \sum _{ i=1 }^{ m }{\alpha^*_iy_ix_i}\]有了刚才对软间隔中对支持向量的探讨,那么在计算 \(b^*\) 的时候跟硬间隔有所差异。在计算:\[b^* = y_j-\sum _{ i=1 }^{ m }{\alpha^*_iy_i\left<x_i,x_j\right>}\]时,需要==选择一个满足条件 \(0<\alpha^*_i<C\) 的 \(\alpha^*_i\) ,来计算出 \(b\)==。但是由于软间隔支持向量机对 \(b\) 的解并不唯一,所以实际计算时往往==取所有符合条件的支持向量所求得的 \(b\) 的平局值==。

SVM 损失函数的另一种解释

SVM 的优化目标的另一种解释是,最小化L2正则的合页函数:
\[\min _{w,b} { \sum_{i=1}^{N}{\xi_i} + \lambda\left\| w \right\| ^2 }\]即松弛变量 \(\xi_i\) 作为损失函数。
若取 \(\lambda=\dfrac{1}{2C}\),则形如之前最大间隔下的优化目标:
\[\min _{w,b} \dfrac{1}{C}\left(\dfrac{1}{2}\left\| w \right\| ^2 + C\sum_{i=1}^{N}{\xi_i}\right)\]
合页损失函数如下图【李航 P115】:


Tips:由于在凸优化中,仿射函数很重要,这里记录一下
仿射函数:
  仿射函数是特殊的凸函数。既是凸函数,又是凹函数的函数称为仿射函数。它必定是线性函数与常数之和。在有限维空间上,仿射函数就是一次函数。仿射函数的重要性在于局部凸空间(包括赋范线性空间、有限维空间)上的下半连续凸函数一定是连续仿射函数族的上包络。\[f(x_1,\ldots,x_n)=A_1x_1+\cdots+A_nx_n+b\]  仿射函数就是一个线性函数,其输入是n维向量,参数A可以是常数,也可以是m*n的矩阵,b可以是常数,也可以是m维的列向量,输出是一个m维的列向量。在几何上,仿射函数是一个线性空间到另一个线性空间的变换。

SVM探讨的更多相关文章

  1. [转]支持向量机SVM总结

    首先,对于支持向量机(SVM)的简单总结: 1. Maximum Margin Classifier 2. Lagrange Duality 3. Support Vector 4. Kernel 5 ...

  2. 以图像分割为例浅谈支持向量机(SVM)

    1. 什么是支持向量机?   在机器学习中,分类问题是一种非常常见也非常重要的问题.常见的分类方法有决策树.聚类方法.贝叶斯分类等等.举一个常见的分类的例子.如下图1所示,在平面直角坐标系中,有一些点 ...

  3. 支持向量机SVM(二)

    [转载请注明出处]http://www.cnblogs.com/jerrylead 6 拉格朗日对偶(Lagrange duality) 先抛开上面的二次规划问题,先来看看存在等式约束的极值问题求法, ...

  4. SVM及其c++代码运用实例

    最近做个小东西,要用到SVM,搜索网上,发现大伙都是各种介绍理论,让我等小码农晕头转向,是故自己学习总结一下,并将代码实例展示出来,方便大家共同探讨,该代码是用opencv编写的,很容易学习滴. 1. ...

  5. 感知机、logistic回归 损失函数对比探讨

    感知机.logistic回归 损失函数对比探讨 感知机 假如数据集是线性可分的,感知机学习的目标是求得一个能够将正负样本完全分开的分隔超平面 \(wx+b=0\) .其学习策略为,定义(经验)损失函数 ...

  6. 06机器学习实战之SVM

    对偶的概念 https://blog.csdn.net/qq_34531825/article/details/52872819?locationNum=7&fps=1 拉格朗日乘子法.KKT ...

  7. 解密SVM系列(二):SVM的理论基础

    上节我们探讨了关于拉格朗日乘子和KKT条件.这为后面SVM求解奠定基础,本节希望通俗的细说一下原理部分. 一个简单的二分类问题例如以下图: 我们希望找到一个决策面使得两类分开.这个决策面一般表示就是W ...

  8. 支持向量机SVM 初识

    虽然已经学习了神经网络和深度学习并在几个项目之中加以运用了,但在斯坦福公开课上听吴恩达老师说他(在当时)更喜欢使用SVM,而很少使用神经网络来解决问题,因此来学习一下SVM的种种. 先解释一些概念吧: ...

  9. Spark机器学习系列之13: 支持向量机SVM

    Spark 优缺点分析 以下翻译自Scikit. The advantages of support vector machines are: (1)Effective in high dimensi ...

随机推荐

  1. windows php exec()不生效问题

    开始 $cmd = 'java -jar C:/xampp/htdocs/dev_env/replace_word_content.jar'; 报错java不是内部命令 换成 $cmd = 'C:\P ...

  2. 知识点---<input>、<textarea>

    一.在pc端的input是一个大的知识点 [1]文本框 <input type="text"> [2] 密码框 <input type="passwor ...

  3. Sprite(雪碧图)的应用

    雪碧图是根据CSS sprite音译过来的,是将很多很多的小图标放在一张图片上. 使用雪碧图的目的:有时为了美观,我们会使用一张图片来代替一些小图标,但是一个网页可能有很多的小图标,浏览器在显示页面的 ...

  4. Python库 - Albumentations 图片数据增强库

    Python图像处理库 - Albumentations,可用于深度学习中网络训练时的图片数据增强. Albumentations 图像数据增强库特点: 基于高度优化的 OpenCV 库实现图像快速数 ...

  5. poj 2778 AC自动机+矩阵快速幂

    题目链接:https://vjudge.net/problem/POJ-2778 题意:输入n和m表示n个病毒,和一个长为m的字符串,里面只可以有'A','C','G','T' 这四个字符,现在问这个 ...

  6. Entity Framework 6源码学习--设置调试EF环境

    下载源代码 打开https://github.com/aspnet/EntityFramework6下载源代码. 建立调试解决方案 建立一个EntityFramework.Sample.sln在Ent ...

  7. 机器学习--k-means聚类原理

    “物以类聚,人以群分”, 所谓聚类就是将相似的元素分到一"类"(有时也被称为"簇"或"集合"), 簇内元素相似程度高, 簇间元素相似程度低. ...

  8. Linux驱动之内核自带的S3C2440的LCD驱动分析

    先来看一下应用程序是怎么操作屏幕的:Linux是工作在保护模式下,所以用户态进程是无法象DOS那样使用显卡BIOS里提供的中断调用来实现直接写屏,Linux抽象出FrameBuffer这个设备来供用户 ...

  9. windows server 2012 FTP连接报530 User 用户名 cannot log in home directory inaccessible的解决方法

    我最近在创建个人网站,经过了万网购买域名注册(www.lingcup.xyz ,www.lingcup.com),在主机屋购买免费云服务器(ip是49.4.142.41),域名别名解析(cname)到 ...

  10. CSRedisCore 在net core中的使用

    背景:与net core配套的StackExchange.Redis客户端总是间歇性的发生timeout异常. 由complexer单例对象创建的IDatabase对象,在产生Timeout异常后会导 ...