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

引言

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

在这里插入图片描述

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

方法

简单推导

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

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

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

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

任意一点 x i x_i xi到这个超平面的距离为:

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

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

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

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

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

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

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

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

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

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

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

min ⁡ 1 2 ∣ ∣ w ∣ ∣ 2 \min \frac{1}{2}||w||^2 min21w2

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

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

w T x i + b > 1 w^{T}x_{i}+b > 1 wTxi+b>1 y i = 1 y_{i} = 1 yi=1

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

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

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

在这里插入图片描述

硬间隔 (Hard Margin)

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

硬间隔的目标函数如下:

min ⁡ 1 2 ∥ w ∥ 2  s.t.  y i ( w T x i + 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. min21w2yi(wTxi+b)1

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

软间隔

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

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

min ⁡ w , b , ξ i 1 2 ∥ w ∥ 2 + C ∑ i = 1 n ξ i  s.t.  y i ( w T x i + 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,ξimin21w2+Ci=1nξiyi(wTxi+b)1ξiξi0,i=1,2,....,n

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

在这里插入图片描述

核函数

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

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

在这里插入图片描述

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

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

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

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

min ⁡ λ [ 1 2 ∑ i = 1 n ∑ j = 1 n λ i λ j y i y j ( ϕ ( x i ) ⋅ ϕ ( x j ) ) − ∑ j = 1 n λ i ]  s.t.  ∑ i = 1 n λ i y i = 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[21i=1nj=1nλiλjyiyj(ϕ(xi)ϕ(xj))j=1nλi]i=1nλiyi=0,λi0,Cλiμi=0

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

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

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

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

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

  • 高斯核函数
    k ( x i , x j ) = exp ⁡ ( − ∥ x i − x j ∥ 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δ2xixj)

常用工具

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?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

此人姓于名叫罩百灵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值