支持向量机SVM基本理论

编程入门 行业动态 更新时间:2024-10-08 08:27:25

支持<a href=https://www.elefans.com/category/jswz/34/1768665.html style=向量机SVM基本理论"/>

支持向量机SVM基本理论

转自:.html

基本概念

  • SVM - Support Vector Machine。支持向量机,其含义是通过支持向量运算的分类器。其中“机”的意思是机器,可以理解为分类器。
    什么是支持向量呢?在求解的过程中,会发现只根据部分数据就可以确定分类器,这些数据称为支持向量。
    见下图,在一个二维环境中,其中点R,S,G点和其它靠近中间黑线的点可以看作为支持向量,它们可以决定分类器,也就是黑线的具体参数。

  • 分类器:就是分类函数。

  • 线性分类:可以理解为在2维空间中,可以通过一条直线来分类。在p维空间中,可以通过一个p-1维的超平面来分类。

  • 向量:有多个属性的变量。在多维空间中的一个点就是一个向量。比如  x=(x1,x2,...,xn) x=(x1,x2,...,xn)。下面的 w w也是向量。

  • 约束条件(subject to) : 在求一个函数的最优值时需要满足的约束条件。

  • 向量相乘:  xwT=∑ni=1wixi xwT=∑i=1nwixi

  • 内积:  ⟨x,y⟩=∑ni=1xiyi ⟨x,y⟩=∑i=1nxiyi

解决的问题:

  • 线性分类
    在训练数据中,每个数据都有n个的属性和一个二类类别标志,我们可以认为这些数据在一个n维空间里。我们的目标是找到一个n-1维的超平面(hyperplane),这个超平面可以将数据分成两部分,每部分数据都属于同一个类别。
    其实这样的超平面有很多,我们要找到一个最佳的。因此,增加一个约束条件:这个超平面到每边最近数据点的距离是最大的。也成为最大间隔超平面(maximum-margin hyperplane)。这个分类器也成为最大间隔分类器(maximum-margin classifier)。
    支持向量机是一个二类分类器。

  • 非线性分类
    SVM的一个优势是支持非线性分类。它结合使用拉格朗日乘子法和KKT条件,以及核函数可以产生非线性分类器。

  • 分类器1 - 线性分类器
    是一个线性函数,可以用于线性分类。一个优势是不需要样本数据。
    classifier 1:

    f(x)=xwT+b(1) (1)f(x)=xwT+b
    w w 和  b b 是训练数据后产生的值。

  • 分类器2 - 非线性分类器
    支持线性分类和非线性分类。需要部分样本数据(支持向量),也就是 αi≠0 αi≠0的数据。
    ∵ ∵
    w=∑ni=1αiyixi w=∑i=1nαiyixi
    ∴ ∴
    classifier 2:

    f(x)=∑ni=1αiyiK(xi,x)+bherexi : training data iyi : label value of training data iαi : Lagrange multiplier of training data iK(x1,x2)=exp(−∥x1−x2∥22σ2) : kernel function(2) (2)f(x)=∑i=1nαiyiK(xi,x)+bherexi : training data iyi : label value of training data iαi : Lagrange multiplier of training data iK(x1,x2)=exp(−∥x1−x2∥22σ2) : kernel function
    α α,  σ σ 和  b b 是训练数据后产生的值。
    可以通过调节 σ σ来匹配维度的大小, σ σ越大,维度越低。

核心思想

  • SVM的目的是要找到一个线性分类的最佳超平面  f(x)=xwT+b=0 f(x)=xwT+b=0。求  w w 和  b b。
  • 首先通过两个分类的最近点,找到 f(x) f(x)的约束条件。
  • 有了约束条件,就可以通过拉格朗日乘子法和KKT条件来求解,这时,问题变成了求拉格朗日乘子 αi αi 和  b b。
  • 对于异常点的情况,加入松弛变量 ξ ξ来处理。
  • 使用SMO来求拉格朗日乘子 αi αi和 b b。这时,我们会发现有些 αi=0 αi=0,这些点就可以不用在分类器中考虑了。
  • 惊喜! 不用求 w w了,可以使用拉格朗日乘子 αi αi和 b b作为分类器的参数。
  • 非线性分类的问题:映射到高维度、使用核函数。

详解

线性分类及其约束条件

SVM的解决问题的思路是找到离超平面的最近点,通过其约束条件求出最优解。

对于训练数据集T,其数据可以分为两类C1和C2。
对于函数: f(x)=xwT+b f(x)=xwT+b
对于C1类的数据  xwT+b⩾1 xwT+b⩾1。其中至少有一个点 xi xi,  f(xi)=1 f(xi)=1。这个点称之为最近点。
对于C2类的数据  xwT+b⩽−1 xwT+b⩽−1。其中至少有一个点 xi xi,  f(xi)=−1 f(xi)=−1。这个点称也是最近点。
上面两个约束条件可以合并为:
yif(xi)=yi(xiwT+b)⩾1 yif(xi)=yi(xiwT+b)⩾1。
yi yi是点 xi xi对应的分类值(-1或者1)。
求 w w和 b b.
则超平面函数是 xwT+b=0 xwT+b=0。
为了求最优的f(x), 期望训练数据中的每个点到超平面的距离最大。
(解释1: 这里需要理解一个事情,根据上图,我们可以给每个点做一条平行于超平面的平行线(超平行面),因此,这个最大化相当于求最近点到超平面距离的最大化。)

总结,现在我们的公式是:
Formula 6.1

f(x)=xwT+bsubject toyif(xi)=yi(xiwT+b)⩾1,i=1,...,n(3) (3)f(x)=xwT+bsubject toyif(xi)=yi(xiwT+b)⩾1,i=1,...,n

几个训练脑筋的小问题:

  • Q: y是否可以是其它非{-1, 1}的值?
    A: 将y值定义为{-1, 1}是最简化的方案。你的分类可以是cat和dog,只要将cat对应到1, dog对应到-1就可以了。你也可以将y值定义为其它数比如: -2, 2或者2, 3之类的,但是这样就需要修改超平面函数和约束条件,增加了没必要的繁琐,实际上和y值定义为{-1, 1}是等价的。

  • Q: 如果两组数据里的太近或者太远,是不是可能就找不到 xwT+b=1 xwT+b=1 和 xwT+b=−1 xwT+b=−1的这两个点?
    A: 不会。假设可以找到 xiwT+b=c xiwT+b=c 和  xjwT+b=−c xjwT+b=−c.  c>0andc<>1 c>0andc<>1。其超平面函数为 xwT+b=0 xwT+b=0.
    上面公式左右同时除以c, 则:
    xiwT/c+b/c=1 xiwT/c+b/c=1
    xjwT/c+b/c=−1 xjwT/c+b/c=−1
    令:
    w′=w/c w′=w/c
    b′=b/c b′=b/c
    有:
    xiw′T+b′=1 xiw′T+b′=1
    xjw′T+b′=−1 xjw′T+b′=−1
    可以找到超平面函数:
    xwT+b′=0 xwT+b′=0
    因此,总是可以找到y是{-1, 1}的超平面,如果有的话。

最大几何间隔(geometrical margin)

f(x) f(x)为函数间隔 γ γ。
如果求 max yf(x) max yf(x),有个问题,就是w和b可以等比例增大,导致 yf(x) yf(x)的间隔可以无限大。因此需要变成求等价的最大几何间隔:

γ¯=yf(x)∥w∥subject toyif(xi)=yi(xiwT+b)⩾1,i=1,...,n(4) (4)γ¯=yf(x)∥w∥subject toyif(xi)=yi(xiwT+b)⩾1,i=1,...,n
∥w∥ ∥w∥ : 二阶范数,也就是各项目平方和的平方根。  ∑ni=1w2i−−−−−−−√ ∑i=1nwi2

根据上面的解释,这个问题可以转变为:

max 1∥w∥subject toyi(xiwT+b)⩾1,i=1,...,n(5) (5)max 1∥w∥subject toyi(xiwT+b)⩾1,i=1,...,n

再做一次等价转换:
Formula 6.2

min 12∥w∥2subject toyi(xiwT+b)⩾1,i=1,...,n(6) (6)min 12∥w∥2subject toyi(xiwT+b)⩾1,i=1,...,n

求解问题 w,b⇔αi,b w,b⇔αi,b

我们使用拉格朗日乘子法和KKT条件来求 w w和 b b,一个重要原因是使用拉格朗日乘子法后,还可以解决非线性划分问题。
拉格朗日乘子法和KKT条件可以解决下面这个问题:

  1. 求一个最优化问题  f(x) f(x)
    刚好对应我们的问题: min12∥w∥2 min12∥w∥2
  2. 如果存在不等式约束 gk(x)<=0,k=1,…,q gk(x)<=0,k=1,…,q。
    对应  subject to 1−yi(xiwT+b)<=0,i=1,...,n subject to 1−yi(xiwT+b)<=0,i=1,...,n
  3. F(x)必须是凸函数。这个也满足。

SVM的问题满足使用拉格朗日乘子法的条件。因此问题变成:
Formula 6.3

maxα W(α)=L(w,b,α)=12∥w∥2−∑ni=1αi(yi(xiwT+b)−1)subject toαi>=0,i=1,...,n∑ni=1αiyi=01−yi(xiwT+b)<=0,i=1,...,nw=∑ni=1αiyixihereαi : Lagrange multiplier of training data i(7) (7)maxα W(α)=L(w,b,α)=12∥w∥2−∑i=1nαi(yi(xiwT+b)−1)subject toαi>=0,i=1,...,n∑i=1nαiyi=01−yi(xiwT+b)<=0,i=1,...,nw=∑i=1nαiyixihereαi : Lagrange multiplier of training data i

消除 w w之后变为:
Formula 6.4

maxα W(α)=L(w,b,α)=∑ni=1αi−12∑ni,j=1αiαjyiyjxTixjsubject toαi>=0,i=1,...,n∑ni=1αiyi=0αi(1−yi(∑nj=1αjyj⟨xj,xi⟩+b))=0,i=1,...,n(8) (8)maxα W(α)=L(w,b,α)=∑i=1nαi−12∑i,j=1nαiαjyiyjxiTxjsubject toαi>=0,i=1,...,n∑i=1nαiyi=0αi(1−yi(∑j=1nαjyj⟨xj,xi⟩+b))=0,i=1,...,n
⟨xj,xi⟩ ⟨xj,xi⟩是 xj xj 和  xi xi的内积,相当于 xixTj xixjT。
可见使用拉格朗日乘子法和KKT条件后,求 w,b w,b的问题变成了求拉格朗日乘子 αi αi和 b b的问题。
到后面更有趣,变成了不求 w w了,因为 αi αi可以直接使用到分类器中去,并且可以使用 αi αi支持非线性的情况( xwT+b xwT+b是线性函数,支持不了非线性的情况哦)。

以上的具体证明请看:
解密SVM系列(二):SVM的理论基础
关于拉格朗日乘子法和KKT条件,请看:
深入理解拉格朗日乘子法(Lagrange Multiplier)和KKT条件

处理异常点(outliers)


如上图:点w是一个异常点,导致无法找到一个合适的超平面,为了解决这个问题,我们引入松弛变量(slack variable) ξ ξ。
修改之间的约束条件为: xiwT+b>=1–ξifor all i = 1, …, n xiwT+b>=1–ξifor all i = 1, …, n
则运用拉格朗日乘子法之后的公式变为:
Formula 6.5

maxα W(α)=L(w,b,α)=∑ni=1αi−12∑ni,j=1αiαjyiyjxjxTisubject to0⩽αi⩽C,i=1,...,n∑ni=1αiyi=0αi(1−yi(∑nj=1αjyj⟨xj,xi⟩+b))=0,i=1,...,n(9) (9)maxα W(α)=L(w,b,α)=∑i=1nαi−12∑i,j=1nαiαjyiyjxjxiTsubject to0⩽αi⩽C,i=1,...,n∑i=1nαiyi=0αi(1−yi(∑j=1nαjyj⟨xj,xi⟩+b))=0,i=1,...,n
输入参数:

  • 参数 C C,越大表明影响越严重。 C C应该一个大于0值。其实 C C也不能太小,太小了就约束 αi αi了,比如200。
  • 参数 ξ ξ,对所有样本数据起效的松弛变量,比如:0.0001。
    具体证明请看:
    解密SVM系列(二):SVM的理论基础

求解 α α - 使用SMO方法

1996年,John Platt发布了一个称为SMO的强大算法,用于训练SVM。SMO表示序列最小优化(Sequential Minimal Optimization)。
SMO方法:
概要:SMO方法的中心思想是每次取一对 αi αi和 αj αj,调整这两个值。
参数: 训练数据/分类数据/ C C/ ξ ξ/最大迭代数
过程:

初始化 α α为0;
在每次迭代中 (小于等于最大迭代数),
- 找到第一个不满足KKT条件的训练数据,对应的 αi αi,
- 在其它不满足KKT条件的训练数据中,找到误差最大的x,对应的index的 αj αj,
-  αi αi和 αj αj组成了一对,根据约束条件调整 αi αi,  αj αj。

不满足KKT条件的公式:
Formula 6.6

(1) yi(ui−yi)⩽ξ and αi<C(2) yi(ui−yi)⩾ξ and αi>0hereui=∑nj=1αjyjK(xj,xi)+bK(x1,x2)=⟨x1,x2⟩ξ : slack variable(10) (10)(1) yi(ui−yi)⩽ξ and αi<C(2) yi(ui−yi)⩾ξ and αi>0hereui=∑j=1nαjyjK(xj,xi)+bK(x1,x2)=⟨x1,x2⟩ξ : slack variable
调整公式:
Formula 6.7
αnew2=αold2−y2(E1−E2)ηαnew1=αold1+y1y2(αold2−αnew2)b1=bold−E1−y1(αnew1−αold1)K(x1,x1)−y2(αnew2−αold2)K(x1,x2)b2=bold−E2−y1(αnew1−αold1)K(x1,x2)−y2(αnew2−αold2)K(x2,x2)b=⎧⎩⎨⎪⎪b1b2b1+b22if 0⩽αnew1⩽Cif 0⩽αnew2⩽CotherwisehereEi=ui−yiη=2K(x1,x2)−K(x1,x1)−K(x2,x2)ui=∑nj=1αjyjK(xj,xi)+bK(x1,x2)=⟨x1,x2⟩(11) (11)α2new=α2old−y2(E1−E2)ηα1new=α1old+y1y2(α2old−α2new)b1=bold−E1−y1(α1new−α1old)K(x1,x1)−y2(α2new−α2old)K(x1,x2)b2=bold−E2−y1(α1new−α1old)K(x1,x2)−y2(α2new−α2old)K(x2,x2)b={b1if 0⩽α1new⩽Cb2if 0⩽α2new⩽Cb1+b22otherwisehereEi=ui−yiη=2K(x1,x2)−K(x1,x1)−K(x2,x2)ui=∑j=1nαjyjK(xj,xi)+bK(x1,x2)=⟨x1,x2⟩
具体证明请参照:
解密SVM系列(三):SMO算法原理与实战求解

最后一步:解决非线性分类

根据机器学习的理论,非线性问题可以通过映射到高维度后,变成一个线性问题。
比如:二维下的一个点 <x1,x2> <x1,x2>, 可以映射到一个5维空间,这个空间的5个维度分别是: x1,x2,x1x2,x12,x22 x1,x2,x1x2,x12,x22。
映射到高维度,有两个问题:一个是如何映射?另外一个问题是计算变得更复杂了。
幸运的是我们可以使用核函数(Kernel function)来解决这个问题。
核函数(kernel function)也称为核技巧(kernel trick)。
核函数的思想是:

仔细观察Formula 6.6 和 Formula 6.7,就会发现关于向量 x x的计算,总是在计算两个向量的内积 K(x1,x2)=⟨x1,x2⟩ K(x1,x2)=⟨x1,x2⟩。
因此,在高维空间里,公式的变化只有计算低维空间下的内积 ⟨x1,x2⟩ ⟨x1,x2⟩变成了计算高维空间下的内积 ⟨x′1,x′2⟩ ⟨x1′,x2′⟩。
核函数提供了一个方法,通过原始空间的向量值计算高维空间的内积,而不用管映射的方式。
我们可以用核函数代替 K(x1,x2) K(x1,x2)。

核函数有很多种, 一般可以使用高斯核(径向基函数(radial basis function))
Formula 6.8

K(x1,x2)=exp(−∥x1−x2∥22σ2)(12) (12)K(x1,x2)=exp(−∥x1−x2∥22σ2)
可以通过调节 σ σ来匹配维度的大小, σ σ越大,维度越低,比如10。
可以参照:
解密SVM系列(四):SVM非线性分类原理实验
支持向量机通俗导论(理解SVM的三层境界)

如何解决多类分类问题

支持向量机是一个二类分类器。基于SVM如何构建多类分类器,建议阅读C. W. Huset等人发表的一篇论文"A Comparison of Methods for Multiclass Support Vector Machines"。需要对代码做一些修改。


更多推荐

支持向量机SVM基本理论

本文发布于:2024-02-06 02:14:20,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1745969.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:向量   基本理论   SVM

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!