支持向量机SVM——间隔最大化

  • 1.超平面
  • 2.函数间隔和几何间隔
  • 3.间隔最大化

本文主要参考《机器学习》、《统计学习方法》。
支持向量机主要分类三类:线性可分支持向量机(数据线性可分时),线性支持向量机(数据近似线性可分),非线性支持向量机(数据线性不可分)。这里先考虑最简单的情况,即当数据线性可分时。

1.超平面

对于2分类的逻辑回归而言,假设特征数为2,那么我们训练模型的过程通过梯度下降不断更新参数迫近全局最优解,拟合出一条直线作为决策边界,使得以这个决策边界划分出来的分类结果误差最低。

当特征数量超过2,这个时候我们用来分割不同类别的“线”就成为了一个面,简称超平面(hyperplane),超即是多维的意思(二维就是一条线,三维就是一个面,多维就是超平面)。划分超平面可用如下线性方程表示:
wTx+b=0w^{T}x+b=0wTx+b=0
其中w=(w1,w2,...,wd)Tw=(w_1,w_2,...,w_d)^Tw=(w1​,w2​,...,wd​)T是法向量,bbb是位移。(向量一般用列向量表示)

如果我们要用一条直线来将下面这张图中的两种类别(“+”和“-”)分开,可看到可分离的直线是有多条的,如下图所示:

直观上我们应该选红色的这条线,感觉它是“最能”分开这两种类的。因为如果选择黑色的线,那么可能存在一些点刚好越过黑色的线,导致被错误分类,但是红线的容错率会更好,也就不容易出错。

例如下面这种情况,如果我选择绿色的线,如果新来一个需要预测的样本(蓝色的点)本来属于“+”,但是却会被分到“-”这一类,但是红线就不会,即红线所产生的分类结果是最鲁棒的,对未见示例的泛化能力最强。

红色的这条决策边界就是通过间隔最大化求得的,并且是唯一。在了解间隔最大化之前先了解一下函数间隔和几何间隔的概念。

2.函数间隔和几何间隔

一般来说,一个点距离超平面的远近可以表示分类预测的确信程度。例如图中A、B、C三个点,都在超平面的正类一侧,但是点A距离超平面较远,就比较确信预测是正确的,而C距离超平面较近,所以预测C为正类就不那么确信。

(1)函数间隔:对于给定训练集和超平面(w,b),定义超平面(w,b)关于样本点(xi,yi)(x_i,y_i)(xi​,yi​)的函数间隔为:
ri^=yi(wTxi+b)\hat{r_i}=y_i(w^Tx_i+b)ri​^​=yi​(wTxi​+b)
定义超平面(w,b)(w,b)(w,b)关于训练集的函数间隔为超平面关于训练集中所有样本点的函数间隔的最小值:
r^=min(i=1,..,N)ri^\hat{r}=min_{(i=1,..,N)}\hat{r_i}r^=min(i=1,..,N)​ri​^​
可以看到当w,bw,bw,b成比例变化时,超平面没有改变但是函数间隔变了,因此可以对w,bw,bw,b做相应的约束,就得到了几何间隔。

(2)几何间隔:对于给定训练集和超平面(w,b),定义超平面(w,b)关于样本点(xi,yi)(x_i,y_i)(xi​,yi​)的集合间隔为:
ri=yi(wTxi+b)∣∣w∣∣{r_i}=\frac{y_i(w^Tx_i+b)}{||w||}ri​=∣∣w∣∣yi​(wTxi​+b)​
定义超平面(w,b)(w,b)(w,b)关于训练集的函数间隔为超平面关于训练集中所有样本点的几何间隔的最小值:
r=min(i=1,..,N)ri{r}=min_{(i=1,..,N)}r_ir=min(i=1,..,N)​ri​

这里的几何间隔就是点到平面的距离公式,因为y为1或-1,且当前数据集线性可分,所以和∣wTxi+b∣∣∣w∣∣\frac{|w^{T}x_i+b|}{||w||}∣∣w∣∣∣wTxi​+b∣​是等价的。

3.间隔最大化

因为当w,bw,bw,b成比例变化时,函数间隔也会成比例变化,而几何间隔是不变的,所以要考虑几何间隔最大化,即我们要求解间隔最大化的超平面的问题就变成了求解如下带约束的优化问题:
{maxw,brs.t.yi(wTxi+b)∣∣w∣∣≥r,i=1,2,..,N\begin{cases}max_{w,b}\quad r\\s.t. \quad\frac{y_i(w^Tx_i+b)}{||w||}\geq r, i=1,2,..,N\end{cases}{maxw,b​rs.t.∣∣w∣∣yi​(wTxi​+b)​≥r,i=1,2,..,N​

上面的约束条件表示对于训练集中所有样本关于超平面的几何距离都至少是r。又因为函数间隔和几何间隔之间存在这样的关系:r=r^∣∣w∣∣r=\frac{\hat{r}}{||w||}r=∣∣w∣∣r^​,所以上面的优化问题可以写成如下形式:
{maxw,br^∣∣w∣∣s.t.yi(wTxi+b)≥r^,i=1,2,..,N\begin{cases}max_{w,b}\quad \frac{\hat{r}}{||w||}\\s.t. \quad{y_i(w^Tx_i+b)}\geq \hat{r}, i=1,2,..,N\end{cases}{maxw,b​∣∣w∣∣r^​s.t.yi​(wTxi​+b)≥r^,i=1,2,..,N​

又因为当w,bw,bw,b成比例变为λw,λb\lambda w,\lambda bλw,λb,函数间隔变为λr^\lambda \hat{r}λr^(λ>0\lambda>0λ>0),虽然改变了函数间隔但是不等式约束依然满足,并且超平面也没有变,所以r^\hat{r}r^的取值并不影响目标函数的优化,因此为了方便计算可以令r^=1\hat{r}=1r^=1,并且由于最大化r^∣∣w∣∣\frac{\hat{r}}{||w||}∣∣w∣∣r^​和最小化∣∣w∣∣22\frac{||w||^2}{2}2∣∣w∣∣2​是等价的,所以优化问题可以写成如下形式:
{minw,b∣∣w∣∣22s.t.yi(wTxi+b)≥1,i=1,2,..,N\begin{cases}min_{w,b}\quad \frac{||w||^2}{2}\\s.t. \quad{y_i(w^Tx_i+b)}\geq 1, i=1,2,..,N\end{cases}{minw,b​2∣∣w∣∣2​s.t.yi​(wTxi​+b)≥1,i=1,2,..,N​
并且使得上面等式成立的点也被称为支持向量(support vector)

下一篇 [支持向量机SVM(2)——拉格朗日乘数法]

支持向量机SVM(1)——间隔最大化相关推荐

  1. SVM支持向量机原理(二) 线性支持向量机的软间隔最大化模型

    在支持向量机原理(一) 线性支持向量机中,我们对线性可分SVM的模型和损失函数优化做了总结.最后我们提到了有时候不能线性可分的原因是线性数据集里面多了少量的异常点,由于这些异常点导致了数据集不能线性可 ...

  2. SVM详解(一)线性可分支持向量机与硬间隔最大化

    文章目录 1. 引言 2. 函数间隔与几何间隔 3. 间隔最大化 4. 最大间隔分离超平面的存在唯一性 5. 支持向量和间隔边界 6. 学习的对偶算法 1. 引言 我们在介绍感知机的时候知道,对于线性 ...

  3. 支持向量机(一)(线性可分支持向量机和硬间隔最大化)

    文章目录 线性可分支持向量机 函数间隔和几何间隔 间隔最大化 学习的对偶算法 References 支持向量机学习方法包含构建由简至繁的模型:线性可分支持向量机.线性支持向量机以及非线性支持向量机.当 ...

  4. SVM中的间隔最大化

    参考链接: 1.https://blog.csdn.net/TaiJi1985/article/details/75087742 2.李航<统计学习方法>7.1节 线性可分支持向量机与硬间 ...

  5. 复习支持向量机(SVM)没空看书时,掌握下面的知识就够了

    支持向量机(support vector machines, SVM)是一种二类分类模型.它的基本模型是定义在特征空间上的间隔最大的线性分类器:支持向量机还包括核技巧,这使它成为实质上的非线性分类器. ...

  6. 支持向量机——SVM算法及例子(代码)

    终于拖到最后一天交机器学习作业,选择了SVM算法,之前一直听说过,现在终于有了初步的了解,顺便post到这里分享一下,不足地方请大家指出 本文内容有来自<统计学习算法>(李航 著)第7章- ...

  7. Python实现支持向量机SVM分类模型线性SVM决策过程的可视化项目实战

    说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取. 1.项目背景 支持向量机是由间隔最大化和高维映射两大部件组成.间隔最大化是目标 ...

  8. 支持向量机(SVM)基本原理

    SVM 看了很多关于SVM的博客,但是常常只能保存书签之后看,有时候有的博客就突然没了,这里就作为搬运工总结一下之后自己看吧.主要内容来自于: 支持向量机通俗导论(理解SVM的三层境界) 分类标准的起 ...

  9. 机器学习算法の03 支持向量机SVM

    机器学习算法の03 支持向量机SVM SVM的基本概念 线性可分支持向量机 非线性支持向量机和核函数 线性支持向量机与松弛变量 LR与SVM的区别与联系 SVM的基本概念 基本概念: 支持向量机(su ...

最新文章

  1. 使一个div垂直+水平居中的几种方法
  2. 你不得不看的六篇知识图谱落地好文
  3. 缓存雪崩,缓存穿透,缓存预热,缓存热备都是什么鬼?
  4. 领域驱动 开源项目_在开源领域建立职业的建议
  5. (41)FPGA面试题FPGA详细设计流程
  6. 理解Linq和lambda
  7. mongodb java 单例_JAVA单例MongoDB工具类详解
  8. javascript学习笔记 - 引用类型 Object
  9. Java 基础 匿名对象
  10. 华三 h3c Ftp、Telnet配置
  11. linux系统 nvme驱动模块,Linux 5.5最终通过HWMON公开NVMe驱动器温度
  12. Matlab 2016a 安装教程【转】
  13. 机器学习----朴素贝叶斯详解
  14. 教你快速设计正交试验及试验数据分析
  15. oracle数据库怎么导出dat文件_论将数据从数据库导出为dat格式
  16. 苹果计算机关机时间不准,苹果电脑怎么设置定时自动关机
  17. 百度分享支持https
  18. spark出现crossJoin笛卡尔积报错异常解决use the CROSS JOIN syntax to allow cartesian products between these
  19. 升压型 串联LED 背光恒流输出的驱动芯片
  20. 化繁为简,微软 Desktop Flow(“RPA”)正式在华商用!

热门文章

  1. (翻译)完型填空(Fill in the Blanks)
  2. Sklearn机器学习中的主要算法原理以及实现
  3. 视频教程-系统集成项目管理工程师考试感性理性认识-软考
  4. 服务器终端输出,服务器与终端数据交互程序
  5. Mac Safari 配置 IE 代理 (支持 IE 调试)
  6. Grain加密代码求助
  7. 技术分享 | 黑盒测试方法论—场景法
  8. CF633C Spy Syndrome 2 trie树
  9. Python使用Plot库构图--详细教程
  10. 4 灰色系统 - 关联度分析法 例子 源代码