支持向量机 ( support vector machine, SVM ) 是使用超平面来对给定的 p 维向量进行分类的非概率二元线性分类器。

一、超平面 ( hyperplane )

在一个p维的输入空间,超平面就是 \(p-1\) 维的子空间。比如:在一个二维输入的空间,超平面就是一维,也就是直线。用公式表示如下:

\[b + w_{1}x_{11} + w_{2}x_{12}=0
\]

在一个三维的输入空间,超平面就是二维,也就是一个平面,公式表示如下:

\[b + w_{1}x_{11} + w_{2}x_{12} + w_{3}x_{13}=0
\]

当输入维度 \(p > 3\) 时,很难直观地理解超平面,但是可以简单地记为:超平面将输入空间分为两个部分,因此超平面最终的数学表达式为:

\[b + w_{1}x_{11} + w_{2}x_{12} +...+ w_{p}x_{1p} = 0
\]

其中,\(\alpha_{i}\) 表示超平面的参数。因此,超平面将一个p维的空间分成两个部分,考虑一个 \(p\) 维度的输入实例 \(x = (x_{1}, x_{2},..., x_{p})\),当该实例在超平面上时,有:

\[b + w_{1}x_{11} + w_{2}x_{12} +...+ w_{p}x_{1p} = 0
\]

当其不在超平面上时,必然会存在:

\[b + w_{1}x_{11} + w_{2}x_{12} +...+ w_{p}x_{1p} > 0
\]

或者:

\[b + w_{1}x_{11} + w_{2}x_{12} +...+ w_{p}x_{1p} < 0
\]

二、使用超平面进行二分类

考虑到一系列的输入 \(x = (x_{1}, x_{2},...,x_{n})\),其中 \(x_{i} = (x_{i1}, x_{i2},...,x_{ip})^{T}\) ,那么对应的标签 应该属于不同的类,这里用\((1, -1)\) 来表示,即:\(y = (y_{1}, y_{2},...,y_{n}) \in (-1, 1)\)。因此我们需要根据这些观测的训练数据 \(T = ( (x_{1},y_{1}), (x_{2},y_{2}),...,(x_{n},y_{n})\) 来学习到SVM的参数 \((\alpha_{1}, \alpha_{2},...,\alpha_{p})\),使其能够对任意给定的 \(p\) 维输入 \(x_{n+1}\) 做出正确的判断。在训练过程中,假如在超平面一侧的为 \(-1\),那么在另外一侧的就是 \(+1\),于是训练的标准就可以表示为:

\[b + w_{1}x_{i1} + w_{2}x_{i2} +...+ w_{p}x_{ip} > 0,\quad if \quad y_{i}=1 \\
b + w_{1}x_{i1} + w_{2}x_{i2} +...+ w_{p}x_{ip} < 0,\quad if \quad y_{i}=-1
\]

因此,最终的训练标准可以统一为:

\[(b + w_{1}x_{i1} + w_{2}x_{i2} +...+ w_{p}x_{ip})y_{i}>0
\]

最终的超平面方程写成矩阵形式为:\(f(x) = w^{T}x + b\)

但是从理论上来讲通过旋转,平移等操作,满足这种条件的 SVM 分类器有无数个,如下图左边的部分所示,我们以二维输入为例,把蓝色的点看做同一类,而红色的点看做第二类,黑色的线就是学到的分类器,那么到底应该选哪一个呢?

第1个分类器太靠近蓝色的和粉色的点,稍微有点扰动很有可能造成错误的分类,鲁棒性较差

第2,3个分类器似乎看起来还可以,但是选取的标准又该怎么定义呢?

一个很自然而然的想法就是选择最大边缘超平面\((maximal \quad margin \quad hyperplane)\)。即:我们可以计算 \(p\) 维空间上所有的点到该超平面的距离,另其最小的距离(\(margin\))最大。由于离超平面越近的点越容易分不清楚,最大化这些距离之后便能具有一定程度的鲁棒性,这样一来便能找到最优的超平面。因此通过这种策略,上图的最优超平面可以描述为下图:

从上图中我们看到三个训练观测值与最大边距超平面等距,并且沿着指示边距宽度的虚线排列。因此这三个观测值被称为支持向量。有趣的是,最大边缘超平面直接取决于支持向量,而不取决于其他观测值,任何其他观察的移动不会影响分离超平面,前提是观察的移动不会导致它跨越 \(margin\)。

三、最大间隔阈值(\(maximum\quad margin\))表示

回忆高中数学的相关内容,对于平面 \(\Phi:Ax+By+Cz+D=0\),则其法向量为 \([A, B, C]\),空间内任意一点 \((x,y,z)\) 到该平面的距离为:

\[distance = \dfrac{|Ax_{0}+By_{0}+Cz_{0}+D|}{\sqrt {A^{2}+B^{2}+C^{2}}}
\]

那么同理,在 \(p\) 维空间内,\(p-1\) 维超平面表示为:\(\Phi: w^{T}x = 0\),则其法向量为 \(w^{T}\),空间内任意一点 \(x_{i}^{T} = (x_{i1},x_{i2},...,x_{ip})\) 到该超平面的距离为:

\[distance = \dfrac{|w^{T}x_{i}+b|}{w^{2}} = \dfrac{|w^{T}x_{i}+b|}{||w||}
\]

加入超平面能够实现正确的分类,那么设支持向量到超平面的距离为 \(\beta\),我们可以得到分类的值为:

\[(b + w_{1}x_{i1} + w_{2}x_{i2} +...+ w_{p}x_{ip})y_{i}>\beta
\]

即:\(w^{T}x > \beta\),通过观察发现,缩放 \(w\) 的值并不会影响超平面的位置,因此不管 \(\beta\) 取任何值,最后都能通过 \(w'=w/\beta,\quad b'=b/\beta\) 将结果变为:\(w^{T}x+b > 1\),因此支持向量之间的距离就变成了: \(2/||w||\), 所以最后 SVM 的模型就变成了:

\[\mathop{argmax} \limits_{w} \dfrac{2}{||w||}\quad \quad s.t.\quad y_{i}(w^{T}x_{i}+b)>1,\quad x = 1, 2,...,m
\]

等价于:

\[\mathop{argmin} \limits_{w} \dfrac{1}{2}||w||^{2}\quad s.t.\quad y_{i}(w^{T}x_{i}+b)>1,\quad x = 1,2,...,m
\]

即:将超平面左右平移1个单位得到超平面 \(\Phi_{1},\Phi_{2}\),找出所有为 +1 类的点全部落在 \(\Phi_{1}\) 左侧,所有为 -1 类的点全部落在 \(\Phi_{2}\) 右侧,并且同时满足超平面的所有参数 \(w\) 的平方和最小的超平面。

四、对偶问题与KKT条件

求解带约束的不等式,根据拉格朗日乘数法将式 \((13)\) 改写成无约束不等式,得到:

\[L(w,b,\lambda) = \dfrac{1}{2}||w||^{2}+\sum_{i=1}^{m}\lambda_{i}(1-y_{i}(w^{T}x_{i}+b))
\]

于是我们对 \(L\) 求偏导:

\[\dfrac{\partial{L(w,b,\lambda)}}{\partial w} = w-\sum_{i=1}^{m}\lambda_{i}y_{i}x_{i}=0\\
\dfrac{\partial{L(w,b,\lambda)}}{\partial b} = \sum_{i=1}^{m}\lambda_{i}y_{i} = 0
\]

将得到的 \(w = \sum_{i=1}^{m}\lambda_{i}y_{i}x_{i},\quad \sum_{i=1}^{m}\lambda_{i}y_{i} = 0\) 代入式 \((14)\) 得到:

\[L(w,b,\lambda) = \dfrac{1}{2}(\sum_{i=1}^{m}\lambda_{i}y_{i}x_{i})^{T}\sum_{j=1}^{m}\lambda_{j}y_{j}x_{j}+\sum_{i=1}^{m}\lambda_{i} - \sum_{i=1}^{m}\lambda_{i}y_{i}(w^{T}x_{i})\\
=\dfrac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\lambda_{i}y_{i}\lambda_{j}y_{j}x_{i}^{T}x_{j}+\sum_{i=1}^{m}\lambda_{i} - \sum_{i=1}^{m}\sum_{j=1}^{m}\lambda_{i}y_{i}\lambda_{j}y_{j}x_{i}^{T}x_{j}\\
=\sum_{i=1}^{m}\lambda_{i} - \dfrac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\lambda_{i}y_{i}\lambda_{j}y_{j}x_{i}^{T}x_{j}
\]

即最后式子 \((14)\) 的对偶问题可以写成:

\[\mathop{argmax}\limits_{\lambda}\sum_{i=1}^{m}\lambda_{i} - \dfrac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\lambda_{i}y_{i}\lambda_{j}y_{j}x_{i}^{T}x_{j}, \quad s.t. \quad \sum_{i=1}^{m}\lambda_{i}y_{i} = 0
\]

最后通过求出 \(\lambda\) ,带入到公式 \((15)\) 中就可以求出 \(w\) ,进而能求出 \(b\)。

在上述将原问题转换为对偶问题的过程中,原问题需要满足 \(KKT\) 条件,即:

\[\begin{equation}
\left\{
\begin{array}{lr}
\lambda_{i}>=0; & \\
y_{i}f(x_{i})-1 >=0; & \\
\lambda_{i}(y_{i}f(x_{i})-1) = 0 ;
\end{array}
\right.
\end{equation}
\]

这个条件不就是同济第七版《高等数学》关于拉格朗日乘数法的应用前提吗?有兴趣的朋友可以自己查阅一下,毕竟已经不学数学好多年了,若有疏漏还请斧正。

这样就出现一个非常有趣的现象,即:

若 \(\lambda_{i}=0\),则 \(y_{i}f(x_{i}) >= 1\)

若 \(\lambda_{i}>0\),则 \(y_{i}f(x_{i}) = 1\),所对应的样本刚好落在最大边界上 ( 即支持向量 ),因此训练完成后大部分的训练样本都不需要保留,最终模型仅仅与支持向量有关。

上述主要分析了当训练样本是线性可分的情况下,SVM的一些理论与求解过程,即硬阈值的SVM。当训练样本不是线性可分的情况下需要设计软阈值以及核函数的SVM,限于篇幅原因,将在后面的文章中进行阐述。

支持向量机(SVM)之硬阈值的更多相关文章

  1. 感知机与支持向量机 (SVM)

    感知机与SVM一样都是使用超平面对空间线性可分的向量进行分类,不同的是:感知机的目标是尽可能将所有样本分类正确,这种策略指导下得出的超平面可能有无数个,然而SVM不仅需要将样本分类正确,还需要最大化最 ...

  2. 机器学习之支持向量机—SVM原理代码实现

    支持向量机—SVM原理代码实现 本文系作者原创,转载请注明出处:https://www.cnblogs.com/further-further-further/p/9596898.html 1. 解决 ...

  3. 支持向量机SVM

    SVM(Support Vector Machine)有监督的机器学习方法,可以做分类也可以做回归.SVM把分类问题转化为寻找分类平面的问题,并通过最大化分类边界点距离分类平面的距离来实现分类. 有好 ...

  4. 一步步教你轻松学支持向量机SVM算法之理论篇1

    一步步教你轻松学支持向量机SVM算法之理论篇1 (白宁超 2018年10月22日10:03:35) 摘要:支持向量机即SVM(Support Vector Machine) ,是一种监督学习算法,属于 ...

  5. 大数据-10-Spark入门之支持向量机SVM分类器

    简介 支持向量机SVM是一种二分类模型.它的基本模型是定义在特征空间上的间隔最大的线性分类器.支持向量机学习方法包含3种模型:线性可分支持向量机.线性支持向量机及非线性支持向量机.当训练数据线性可分时 ...

  6. 机器学习常见面试题—支持向量机SVM

    前言 总结了2017年找实习时,在头条.腾讯.小米.搜狐.阿里等公司常见的机器学习面试题. 支持向量机SVM 关于min和max交换位置满足的 d* <= p* 的条件并不是KKT条件 Ans: ...

  7. 机器学习——支持向量机SVM

    前言 学习本章节前需要先学习: <机器学习--最优化问题:拉格朗日乘子法.KKT条件以及对偶问题> <机器学习--感知机> 1 摘要: 支持向量机(SVM)是一种二类分类模型, ...

  8. 【IUML】支持向量机SVM

    从1995年Vapnik等人提出一种机器学习的新方法支持向量机(SVM)之后,支持向量机成为继人工神经网络之后又一研究热点,国内外研究都很多.支持向量机方法是建立在统计学习理论的VC维理论和结构风险最 ...

  9. 机器学习:Python中如何使用支持向量机(SVM)算法

    (简单介绍一下支持向量机,详细介绍尤其是算法过程可以查阅其他资) 在机器学习领域,支持向量机SVM(Support Vector Machine)是一个有监督的学习模型,通常用来进行模式识别.分类(异 ...

随机推荐

  1. Catalan数以及相关性质的证明

    \(Catalan\) 数相关证明 Mushroom 2021-5-14 \(Catalan\)数的定义 给定一个凸\(n + 1\)边形, 通过在内部不相交的对角线,把它划分成为三角形的组合,不同的 ...

  2. 是时候学习Linux了

    前言: Linux是一个开源.免费的操作系统.其稳定性.安全性.处理多并发已经得到业界的认可,目前很多企业级的项目都会部署到Linux/unix系统上.如果你还不太了解Linux,希望本篇文章能够带你 ...

  3. 从0开始fastjson漏洞分析2

    从0开始fastjson漏洞分析https://www.cnblogs.com/piaomiaohongchen/p/14777856.html 有了前文铺垫,可以说对fastjson内部机制和fas ...

  4. SpringBoot整合shiro系列-SpingBoot是如何将shiroFilter注册到servlet容器中的

    一.先从配置类入手,主要是@Bean了一个ShiroFilterFactoryBean: @Data @Configuration @Slf4j @EnableConfigurationPropert ...

  5. Sqoop 安装部署

    1. 上传并解压 Sqoop 安装文件 将 sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz 安装包上传到 node-01 的 /root/ 目录下并将其解压 [root@no ...

  6. OS_FLAG_GRP_DEPLETED

    178 * OS_FLAG_GRP_DEPLETED 系统没有剩余的空闲事件标志组,需要更改OS_CFG.H中 179 * 的事件标志组数目配置创建 标志组的时候返回这个错误 打印出错误代码后发现是1 ...

  7. HarmonyOS去除页面顶部title的方式

    在config.json文件中module节点中添加如下代码 "metaData":{ "customizeData":[ { "name" ...

  8. WEB页面下载内容导出excel

    internal class DownloadHandler : IDownloadHandler    {        public DownloadHandler()        {      ...

  9. [leetcode] 48. 旋转图像(Java)(模拟)

    48. 旋转图像 模拟题,其实挺不喜欢做模拟题的... 其实这题一层一层的转就好了,外层转完里层再转,其实就是可重叠的子问题了. 转的时候呢,一个数一个数的转,一个数带动四个数.如图所示,2这个数应该 ...

  10. C#解决WebClient不能下载https网页内容

    在下载之前,执行以下代码即可: if (stUrl.Substring(0, 5) == "https") { // 解决WebClient不能通过https下载内容问题 Serv ...