引言

核心思想:
支持向量机的核心思想很简单:在众多可行的分类的超平面中,选择一个超平面,使得两类样本到该超平面的间隔最大。

为什么叫支持向量机?
当我们求解完支持向量机之后,可以发现最大间隔超平面完全由部分训练数据xix_ixi​决定,这部分数据的名字叫支持向量,因此这种分类方法被称为支持向量机。

方法

简单推导

支持向量机的推导过程总体来说较为简单:

给定包含nnn个点的训练集(x1,y1),(x2,y2),...,(xn,yn)(x_1, y_1), (x_2, y_2), ..., (x_n, y_n)(x1​,y1​),(x2​,y2​),...,(xn​,yn​), 其中yi∈{−1,1}y_i \in \{-1, 1\}yi​∈{−1,1}。

对于线性SVM来说,其超平面可以表示为:

wTx+b=0w^{T}x + b = 0 wTx+b=0

任意一点xix_ixi​到这个超平面的距离为:

d=∣wTx+b∣∣∣w∣∣d = \frac{|w^{T}x+b|}{||w||} d=∣∣w∣∣∣wTx+b∣​

我们希望这个距离越大越好,即:

d=∣wTx+b∣∣∣w∣∣≥m, i∈{1,2,...,n}d = \frac{|w^{T}x+b|}{||w||} \ge m \text{, } i \in \{1, 2, ..., n\} d=∣∣w∣∣∣wTx+b∣​≥m, i∈{1,2,...,n}

也就是说,我们找到一组向量www,使得mmm最大。

把上式分子的绝对值去掉,有:

d=y(wTx+b)∣∣w∣∣≥m, i∈{1,2,...,n}d = \frac{y(w^{T}x+b)}{||w||} \ge m \text{, } i \in \{1, 2, ..., n\} d=∣∣w∣∣y(wTx+b)​≥m, i∈{1,2,...,n}

因为当wTxi+b<−1w^{T}x_{i}+b < -1wTxi​+b<−1时,有yi=−1y_{i} = -1yi​=−1

当wTxi+b>1w^{T}x_{i}+b > 1wTxi​+b>1时,有yi=1y_{i} = 1yi​=1

我们令∣∣w∣∣d=1||w||d = 1∣∣w∣∣d=1, 因为这不会改变超平面的性质。因此有:

max⁡1∣∣w∣∣\max \frac{1}{||w||} max∣∣w∣∣1​

为了方便计算,我们将上述最大化问题转为最小化问题,有:

min⁡12∣∣w∣∣2\min \frac{1}{2}||w||^2 min21​∣∣w∣∣2

除了上述目标函数,还需要如下约束条件:

wTxi+b<−1w^{T}x_{i}+b < -1wTxi​+b<−1, yi=−1y_{i} = -1yi​=−1

wTxi+b>1w^{T}x_{i}+b > 1wTxi​+b>1, yi=1y_{i} = 1yi​=1

把这两个式子合并,有:yi(wTxi+b)≥1\quad y_{i}\left(w^{T} x_{i}+b\right) \geq 1yi​(wTxi​+b)≥1

因此,SVM的最终目标函数如下:
min⁡12∥w∥2s.t. yi(wTxi+b)≥1\min \frac{1}{2}\|w\|^{2} \text { s.t. } \quad y_{i}\left(w^{T} x_{i}+b\right) \geq 1 min21​∥w∥2 s.t. yi​(wTxi​+b)≥1

可以看到,两条虚线上对应的向量叫做支持向量,且这两条向量完全由支持向量决定。

硬间隔 (Hard Margin)

在上述推导中,yi(wTxi+b)≥1\quad y_{i}\left(w^{T} x_{i}+b\right) \geq 1yi​(wTxi​+b)≥1的条件保证了所有训练数据都处于边缘之外,因此被称为硬间隔。

硬间隔的目标函数如下:

min⁡12∥w∥2s.t. yi(wTxi+b)≥1\begin{aligned} &\min \frac{1}{2}\|w\|^{2} \\ \text{ s.t. } & y_{i}\left(w^{T} x_{i}+b\right) \geq 1 \end{aligned}  s.t. ​min21​∥w∥2yi​(wTxi​+b)≥1​

对于一个新数据,可以使用如下判别方法:x→sgn(wTx+b)x \to sgn(w^{T}x+b)x→sgn(wTx+b)。其中,sgnsgnsgn为符号函数。

软间隔

实际应用中,上述硬间隔往往很难满足条件,因此这里引入一个松弛变量ξ≥0\xi \ge 0ξ≥0,且yi(wTxi+b)⩾1−ξiy_{i}\left(\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}_{i}+b\right) \geqslant 1-\xi_{i}yi​(wTxi​+b)⩾1−ξi​ (也就是说,允许一些样本在间隔之内,不必所有样本必须在间隔之外。)

根据上述松弛条件,软间隔的目标函数如下:

min⁡w,b,ξi12∥w∥2+C∑i=1nξis.t. yi(wTxi+b)⩾1−ξiξi⩾0,i=1,2,....,n\begin{aligned} & \min _{\boldsymbol{w}, b, \xi_{i}} \frac{1}{2}\|\boldsymbol{w}\|^{2}+C \sum_{i=1}^{n} \xi_{i} \\ \text { s.t. } & y_{i}\left(\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}_{i}+b\right) \geqslant 1-\xi_{i} \\ & \xi_{i} \geqslant 0, i=1,2, . . . ., \boldsymbol{n} \end{aligned}  s.t. ​w,b,ξi​min​21​∥w∥2+Ci=1∑n​ξi​yi​(wTxi​+b)⩾1−ξi​ξi​⩾0,i=1,2,....,n​

直观理解软间隔和硬间隔的差异:

核函数

这里不对SVM的求解过程进行详细介绍,我们试图对核函数的核心思想和求解过程进行直观理解.

如下图,kernel trick主要解决的是将线性不可分的问题映射到更高的维度,使其变成一个线性可分的问题。使用公式表达,即利用ϕ(x)\phi (x)ϕ(x)对xxx进行升维操作。

那么如何获取ϕ(x)\phi(x)ϕ(x)这个函数呢? 我们先不求ϕ(x)\phi(x)ϕ(x)本身,先看看将xxx升维之后求解www的过程发生了哪些变化:

升维之后,SVM的超平面方程如下:

wTϕ(x)+b=0w^{T}\phi(x) + b = 0 wTϕ(x)+b=0

要得到www和bbb,需要优化如下目标函数(具体推导过程参考 [2], 这里不作为重点):

min⁡λ[12∑i=1n∑j=1nλiλjyiyj(ϕ(xi)⋅ϕ(xj))−∑j=1nλi]s.t. ∑i=1nλiyi=0,λi≥0,C−λi−μi=0\begin{aligned} &\min _{\lambda}\left[\frac{1}{2} \sum_{i=1}^{n} \sum_{j=1}^{n} \lambda_{i} \lambda_{j} y_{i} y_{j}\left(\phi\left(x_{i}\right) \cdot \phi\left(x_{j}\right)\right)-\sum_{j=1}^{n} \lambda_{i}\right] \\ \text { s.t. } &\sum_{i=1}^{n} \lambda_{i} y_{i}=0, \quad \lambda_{i} \geq 0, \quad C-\lambda_{i}-\mu_{i}=0 \end{aligned}  s.t. ​λmin​[21​i=1∑n​j=1∑n​λi​λj​yi​yj​(ϕ(xi​)⋅ϕ(xj​))−j=1∑n​λi​]i=1∑n​λi​yi​=0,λi​≥0,C−λi​−μi​=0​

和原始SVM求解的差别在于,这里把原始SVM目标函数中的(xi⋅xj)(x_i \cdot x_j)(xi​⋅xj​)替换成了(ϕ(xi)⋅ϕ(xj))\left( \phi(x_i) \cdot \phi(x_j)\right)(ϕ(xi​)⋅ϕ(xj​)),其他地方不变。

然而,问题在于ϕ(xi)\phi(x_i)ϕ(xi​)和ϕ(xj)\phi(x_j)ϕ(xj​)的内积若直接求解不太好计算,所以这里提出了一种核技巧(kernel trick),目的是将映射之后的内积(ϕ(xi)⋅ϕ(xj))\left( \phi(x_i) \cdot \phi(x_j)\right)(ϕ(xi​)⋅ϕ(xj​))转化为原始空间中的某种计算κ(xi,xj)\kappa(x_i, x_j)κ(xi​,xj​)。这样,我们就可以极大的简化运算,同时我们还不用显式地求解ϕ(x)\phi(x)ϕ(x)是多少了。

常见的核函数κ(xi,xj)\kappa(x_i, x_j)κ(xi​,xj​)

  • 线性核函数
    k(xi,xj)=xiTxjk\left(x_{i}, x_{j}\right)=x_{i}^{T} x_{j} k(xi​,xj​)=xiT​xj​

  • 多项式核函数
    k(xi,xj)=(xiTxj)dk\left(x_{i}, x_{j}\right)=\left(x_{i}^{T} x_{j}\right)^{d} k(xi​,xj​)=(xiT​xj​)d

  • 高斯核函数
    k(xi,xj)=exp⁡(−∥xi−xj∥2δ2)k\left(x_{i}, x_{j}\right)=\exp \left(-\frac{\left\|x_{i}-x_{j}\right\|}{2 \delta^{2}}\right) k(xi​,xj​)=exp(−2δ2∥xi​−xj​∥​)

常用工具

Libsvm

SVM经典工具

LIBSVM – A Library for Support Vector Machines

sklearn svm

Support Vector Machines

小结

SVM的作为一种经典且性能良好的分类和(或)回归模型,其内容远不止上述这些。

但是掌握了这些基本概念之后相信再根据实际应用去学习其他方面的内容也不是太难。

这里我们没有介绍SVM的详细求解过程,更多的是对SVM的核心概念和思想进行学习。

这样,对于现有的svm工具包,我们就可以根据其原理和手中数据的特点确定调节超参数的方向。

参考文献

[1] https://en.wikipedia.org/wiki/Support-vector_machine

[2] 【机器学习】支持向量机 SVM(非常详细)

[3] R. O. Duda, P. E. Hart, and D. G. Stork, Pattern Classification. John Wiley & Sons, 2012.

[4] What is the kernel trick? Why is it important?

机器学习基础:支持向量机(Machine Learning Fundamentals: Support Vector Machine, SVM)相关推荐

  1. 机器学习算法系列(十四)-硬间隔支持向量机算法(Hard-margin Support Vector Machine)

    阅读本文需要的背景知识点:拉格朗日乘子法.KKT条件.一丢丢编程知识 一.引言   前面一节我们介绍了一种分类算法--朴素贝叶斯分类器算法,从概率分布的角度进行分类.下面我们会花几节来介绍另一种在分类 ...

  2. 机器学习算法系列(十五)-软间隔支持向量机算法(Soft-margin Support Vector Machine)

    阅读本文需要的背景知识点:硬间隔支持向量机.松弛变量.一丢丢编程知识 一.引言   前面一节我们介绍了一种最基础的支持向量机模型--硬间隔支持向量机,该模型能对线性可分的数据集进行分类,但现实中的数据 ...

  3. 机器学习算法系列(十六)-非线性支持向量机算法(Non-Linear Support Vector Machine)

    阅读本文需要的背景知识点:线性支持向量机.一丢丢编程知识 一.引言   前面我们用两节介绍了两种支持向量机模型--硬间隔支持向量机.软间隔支持向量机,这两种模型可以统称为线性支持向量机,下面来介绍另一 ...

  4. Task02——支持向量机(Support Vector Machine,SVM)

    支持向量机(Support Vector Machine,SVM) 本系列是2022年12月DataWhale组队学习中sklearn机器学习实战中的第二个学习任务--SVM,开源的在线学习地址 ,下 ...

  5. 李宏毅svm_【李宏毅机器学习笔记】 18、支持向量机(Support Vector Machine,SVM)...

    [李宏毅机器学习笔记]1.回归问题(Regression) [李宏毅机器学习笔记]2.error产生自哪里? [李宏毅机器学习笔记]3.gradient descent [李宏毅机器学习笔记]4.Cl ...

  6. 机器学习-62-Structured Learning-03-Structured Support Vector Machine(结构化学习-结构化支持向量机)

    文章目录 Structured Support Vector Machine Unified Framework(统一框架:两步走,三问题) two steps(两步) three problems( ...

  7. 机器学习实战(五)支持向量机SVM(Support Vector Machine)

    目录 0. 前言 1. 寻找最大间隔 2. 拉格朗日乘子法和KKT条件 3. 松弛变量 4. 带松弛变量的拉格朗日乘子法和KKT条件 5. 序列最小优化SMO(Sequential Minimal O ...

  8. 【机器学习算法】支持向量机(support Vector Machine,SVM)

    目录 支持向量机 支持向量机概述 线性可分及线性不可分的问题 线性可分的支持向量机 线性不可分的支持向量机 支持向量机与神经网络之间的关系 处理两类以上的分类问题. 我的主页:晴天qt01的博客_CS ...

  9. SVM 支持向量机算法(Support Vector Machine )【Python机器学习系列(十四)】

    SVM 支持向量机算法(Support Vector Machine )[Python机器学习系列(十四)] 文章目录 1.SVM简介 2. SVM 逻辑推导 2.1 Part1 化简限制条件 2.2 ...

  10. 机器学习之支持向量机: Support Vector Machines (SVM)

    机器学习之支持向量机: Support Vector Machines (SVM) 欢迎访问人工智能研究网 课程中心 网址是:http://i.youku.com/studyai 本篇博客介绍机器学习 ...

最新文章

  1. UCI计算机工程必修专业课,加州大学欧文分校(UCI)工程专业系将会在2012年首次录取中国高中毕业生。...
  2. oracle xe 连接数据库,【Oracle XE系列之二】PLSQL Developer 远程连接Oracle XE数据库-Go语言中文社区...
  3. Qt Designer 编辑Tab顺序
  4. LeetCode-best time to buy and sell stock 1 数组
  5. ubuntu安装python编译器_Ubuntu中安装VIM编辑器
  6. xcode4.3.2 arc模式下导入非arc的文件 转
  7. BZOJ5329:[SDOI2018]战略游戏(圆方树,虚树)
  8. rabbitmq接收不到消息_分布式消息队列:如何保证消息的可靠性传输
  9. [python] 将一个序列的排序方式扩展到其他序列
  10. CSS3 修改和去除移动端点击事件出现的背景框
  11. 汇编语言 emu8086 电子时钟 课程设计
  12. linux系统移植到arm芯片难吗,Linux操作系统怎么移植到ARM平台?
  13. Little happiness matters?蒙牛新广告语英文翻译引争议
  14. 服务器断开消息,Websockets - 断开服务器消息
  15. Ubuntu16.04安装搜狗拼音输入法(中文输入法)
  16. 手机硬件电路英文缩写
  17. modelica学习
  18. 模拟蒙蒂霍而悖论游戏——三门游戏python
  19. Linux环境下Python操作word
  20. 北欧计算机专业出国,留学北欧,哪个国家计算机专业比较好?

热门文章

  1. redis主从和集群搭建
  2. git获取特定的commit
  3. Webpack支持.vue文件的打包
  4. 56)函数模板的基本语法
  5. 笔记 Activator.CreateInstance(Type)
  6. 借款条和还款条的写法(附模板)
  7. 什么是互联网思维?给你最全面的解释
  8. VC++实现ip数据包分析
  9. Datagridview中的数据很多,加载完数据后滚动条自动到最下边,如何解决?
  10. 关于apache httpd.conf脚本的理解