支持向量机SVM简介

1. 定义及原理

        SVM是一种二分类模型,是定义在特征空间上的间隔最大化(分离超平面)的线性分类器,(间隔最大使它有别于感知机)。

1.1 SVM适合处理什么样的数据?

适合小样本(非线性、高维模式)学习。高维稀疏、样本少(参数只与sv有关,数量少,所以需要的样本少,由于参数跟维度没有关系,所以可以处理高维问题)。

1.2 原理

模型  ----->   分离超平面;    w^{*}\cdot x+b^{*}=0

策略  ----->   间隔最大化;(分类决策函数:f(x)=sign(w^{*}\cdot x+b^{*}))

学习算法  ----->   凸二次规划;

(1)当训练样本线性可分时,通过硬间隔最大化,学习一个线性分类器(线性可分SVM)。

(2)当训练样本近似线性可分时,引入松弛变量,通过软间隔最大化,学习一个线性分类器(线性SVM)。

(3)当训练数据线性不可分时,通过使用核技巧及软间隔最大化,学习非线性SVM。

1.3 函数间隔

因为一个点距离分离超平面的远近\left | w\cdot x+b \right |可以表示分类预测的确信程度,而w\cdot x+b的符号与类标记y的符号是否一致能够表示分类是否正确,所以可用y(w\cdot +b)来表示分类的正确性及确信度,即函数间隔\widehat{\gamma }=min y_{i}(w\cdot x_{i}+b)

1.4 几何间隔

又因为成比例地改变w和b,函数间隔也将以相应比例变化,这时对w规范化,使\left \| w \right \|=1,使得间隔是确定的,此时即几何间隔:

\gamma =\frac{\widehat{\gamma }}{\left \| w \right \|}=\min_{i=1,...,N} y_{i}(\frac{w}{\left \| w \right \|}\cdot x_{i}+\frac{b}{\left \| w \right \|})

2. 间隔最大化

2.1 SVM的基本思想

学习策略:间隔最大化,即求解能够正确划分训练数据集且几何间隔最大的分离超平面。

\left\{\begin{matrix} \underset{w,b}{max} \gamma \\ s.t. y_{i}(\frac{w}{\left \| w \right \|}\cdot x_{i}+\frac{b}{\left \| w \right \|})\geq \gamma \end{matrix}\right.

几何间隔--->函数间隔

\left\{\begin{matrix} \underset{w,b}{max} \frac{\widehat{\gamma }}{\left \| w \right \|} \\ s.t. y_{i}(w\cdot x_{i}+b)\geq \widehat{\gamma } \end{matrix}\right.

因为函数间隔\widehat{\gamma }的取值并不影响最优化问题的解,令\widehat{\gamma }=1,并将max\frac{1}{\left \| w \right \|}-->min\frac{1}{2}\left \| w \right \|^{2}

原始问题(最优化)

\left\{\begin{matrix} \underset{w,b}{min} \frac{1}{2} \left \| w \right \|^{2}-----------(1) \\ s.t. y_{i}(w\cdot x_{i}+b)-1 \geq 0-----(2) \end{matrix}\right.

在线性可分情况下,训练数据集的样本点中与分离超平面距离最近的样本点的实例称为支持向量,满足y_{i}(w\cdot x_{i}+b)=\pm 1

在决定分离超平面时只有支持向量起作用,而其他实例点并不起作用。SV的个数一般很少,所以SVM由很少的“重要的”训练样本确定。

线性不可分意味着某些样本点outliers(x_{i},y_{i}),不能满足函数间隔>=1的约束条件,为此可对每个样本点引进一个松弛变量\xi _{i}\geq 0,使函数间隔加上\xi _{i}\geq 1。即

\underset{w,b,\xi }{min}\frac{1}{2}\left \| w \right \|^{2}+C\sum_{i=1}^{N}\xi _{i}

s.t.    \left\{\begin{matrix} y_{i}(w\cdot x_{i}+b)\geq 1-\xi _{i} \\ 0\leq \xi _{i} \leq C \end{matrix}\right.

其中C(>0)为惩罚参数,C值大时对误差分数的惩罚增大。

最小目标函数即(1),使间隔尽量大(2),使误分类点个数尽量小。

2.1 SVM为什么采样间隔最大化?

当训练数据线性可分时,存在无穷个分离超平面可以将两类数据正确分开。

线性可分SVM利用间隔最大化求得最优分离超平面,这时解是唯一的;

另一方面,此时的分隔超平面所产生的分类结果是最鲁棒的,对未知实例的泛化能力最强。

并说明几何间隔、函数间隔及从函数间隔\frac{1}{\left \| W \right \|}到求解\frac{1}{2}\left \| w \right \|^{2}时的w,b(即最大间隔的由来)。

3. 线性可分SVM的对偶算法

3.1 为什么将原始问题转换为对偶问题?

1. 对偶问题往往更容易求解;(结合拉格朗日和KKT条件)

2. 自然引入核函数,进而推广到非线性分类问题。(拉格朗日表达式中有内积,而核函数也是通过内积进行映射的。)

3.2 对偶问题

针对原始问题,应用拉格朗日对偶性,通过求解对偶问题得到原始问题的最优解。

优点:

1. 对偶问题往往更容易求解;

2. 自然引入核函数,进而推广到非线性分类问题。

为每一个不等式约束(2),引进拉格朗日乘子\alpha _{i}>=0

定义拉格朗日函数:------(3)

L(w,b,\alpha )=\frac{1}{2}||w||^{2}-\sum_{i=1}^{N}\alpha _{i}y_{i}(w*x_{i}+b)+\sum_{i=1}^{N}\alpha _{i}

                  =\frac{1}{2}||w||^{2}-\sum_{i=1}^{N}\alpha _{i}(y_{i}(w*x_{i}+b)-1)

根据拉格朗日对偶性,原始问题的对偶问题是极大极小问题。

\underset{\alpha }{max}\underset{w,b}{min}L(w,b,\alpha )

\underset{w,b}{min}L(w,b,\alpha )

KKT条件

\bigtriangledown _{w}L(w^{*},b^{*},\alpha ^{*})=w^{*}-\sum_{i=1}^{N}\alpha _{i}^{*}y_{i}x_{i}=0                 ------------ (1)

\bigtriangledown _{b}L(w^{*},b^{*},\alpha ^{*})=-\sum_{i=1}^{N}\alpha _{i}^{*}y_{i}=0                           ------------ (2)

\alpha _{i}^{*}(y_{i}(w^{*}\cdot x_{i}+b^{*})-1)=0                                    ------------ (3)

y_{i}(w^{*}\cdot x_{i}+b^{*})-1>=0                                         ------------ (4)

\alpha _{i}^{*}>=0                                                                       ------------ (5)

由(3)得:

b^{*}=y_{i}-w^{*}x_{i}

其中

y_{i}=\pm 1

由以上得:

w^{*}=\sum_{i=1}^{N}\alpha _{i}^{*}y_{i}x_{i}

b^{*}=y_{j}-\sum_{i=1}^{N}\alpha _{i}^{*}y_{i}(x_{i}\cdot x_{j})

将以上带入(3)得:

\underset{w,b}{min}L(w,b,\alpha )=-\frac{1}{2}\sum_{i=1}^{N}\sum_{j=1}^{N}\alpha _{i}\alpha _{j}y_{i}y_{j}(x_{i}\cdot x_{j})+\sum_{i=1}^{N}\alpha _{i}

再求\underset{\alpha }{max}\underset{w,b}{min}L(w,b,\alpha )即是对偶问题:

\underset{\alpha }{max}(-\frac{1}{2}\sum_{i=1}^{N}\sum_{j=1}^{N}\alpha _{i}\alpha _{j}y_{i}y_{j}(x_{i}\cdot x_{j})+\sum_{i=1}^{N}\alpha _{i}) <=> \underset{\alpha }{min}(\frac{1}{2}\sum_{i=1}^{N}\sum_{j=1}^{N}\alpha _{i}\alpha _{j}y_{i}y_{j}(x_{i}\cdot x_{j})-\sum_{i=1}^{N}\alpha _{i})

s.t. \left\{\begin{matrix} \sum_{i=1}^{N}\alpha _{i}y_{i}=0 \\ \alpha _{i}\geq 0 \end{matrix}\right.

由上得svm的对偶形式为:

f(x)=W^{T}x+b=\sum_{i=1}^{m}\alpha _{i}y_{i}(x_{i}\cdot x)+b

SMO(启发式算法):

        如果所有变量的解都满足此最优化问题的KKT条件,那么这个最优化问题的解就得到了。因为KKT条件是该最优化问题的充要条件。

SMO算法包括两个部分:

(1)求解两个变量二次规划的解析方法;

(2)选择变量的启发式方法。

        SMO算法是支持向量机学习的一种快速算法,其特点是不断地将原二次规划问题分解为只有两个变量的二次规划子问题,并对子问题进行解析求解,直到所有变量满足KKT条件为止。这样通过启发式的方法得到原二次规划问题的最优解。因为子问题有解析解,所以每次计算子问题都很快,虽然计算子问题次数很多,但在总体上还是高效的。

4. 有哪些核函数

4.1 为什么要引入核函数?

当样本在原始空间线性不可分时,可将样本从原始空间映射到一个更高维的特征空间,使得样本在这个特征空间内线性可分。

K(x,y)=<\phi (x),\phi (y)>

在特征空间的内积=它们在原始样本空间中通过K计算的结果。

\underset{\lambda }{max} -\frac{1}{2}\sum_{i=1}^{N}\sum_{j=1}^{N}\lambda _{i}\lambda _{j}y_{i}y_{j}\phi ^{T}(x_{i})\phi(x_{j})+\sum_{i=1}^{N}\lambda _{i}

s.t. \sum_{i=1}^{N}\lambda _{i}y_{i}=0

0\leqslant \lambda _{i}\leqslant C, i=1,2,...,N

特征空间维数可能很高,甚至可能是无穷维,因此直接计算\phi(x)\cdot \phi(y)是比较困难的。

在学习预测中,只定义核函数K(x,y),而不显示定义\phi

4.2 有哪些核函数?

1. 多项式核函数

K(x_{1},x_{2})=(r<x_{1},x_{2}>+c)^{n}

2. 高斯核函数

又叫径向基核函数(RBF核)

K(x_{1},x_{2})=exp(-\frac{||x_{1}-x_{2}||^{2}}{2\sigma ^{2}})

        Gauss径向基函数是局部性强的核函数,其外推为随着\sigma增大而减弱,这个核会将原始空间映射为无穷维。若\sigma很大,高次特征上的权重实际上衰减的非常快,相当于一个低维的子空间;若\sigma很小,此时泰勒展开式中有效的项将变得非常多,那么就相当于映射到了一个无穷维的空间,任意数据都将变得线性可分,但可能会带来严重的过拟合。

3. 字符串核函数

        字符串核是定义在字符串集合上的核函数(核函数不仅可以定义在欧氏空间上,还可以定义在离散数据的集合上),一般应用在文本分类、信息检索、生物信息学等方面。

4. 线性核函数

K(x_{1},x_{2})=<x_{1},x_{2}>

5. 拉普拉斯核函数

K(x_{1},x_{2})=exp(-\frac{||x_{1}-x_{2}||}{\sigma})

6. sigmoid核函数

K(x_{1},x_{2})=tanh(r<x_{1},x_{2}>+c)

4.3 核函数的选择

线性核的训练速度快,一般情况下效果还不错,在高维情况下,其他核需要调参(CV),速度慢。

高斯核必然映射到无穷维,因为核函数的泰勒展开有无穷多项。

径向基RBF核需要计算e的幂,比较耗时。

多项式核参数众多,难调,但其结果更加直观,可解释性强,所以如果对数据有一定的了解,可以考虑使用多项式核。

5. LR与SVM的选择

(1)特征数量很大,与样本数量差不多时(此时特征够用了,很大可能是线性问题,没必要映射到高维空间),选用LR或Linear核的SVM。

(2)特征数量比较小,样本数量一般(不算大也不算小),选用SVM+高斯核。

(3)特征数量比较小,而样本数量很多,需要手工添加一些特征,变为第一种情况。

6. 一些问题

6.1 为什么SVM对缺失数据敏感?

此处的缺失数据指缺失某些特征的数据,即向量数据不完整。SVM没有处理缺失值的策略(决策树有),而SVM希望样本在特征空间中线性可分,所以缺失数据将影响训练结果的好坏。

解决方法:

1. 对多数类和少数类采用不同的惩罚因子;

2. 采用既能代表多数类样本分布的特征,又能对分类界面有一定影响的样本特征欠抽样方法。

6.2 SVM如何处理多分类问题?

对训练器进行组合,一对一,一对多,...

1. 一对多(one-vs-all)

针对每个类都训练出一个分类器(该类为正类,其余类为负类),这样针对k个类可以训练出K个分类器,当有一个新样本时,用着k个分类器来预测,哪个分类器的概率高,样本就属于哪一类。缺点是偏差高

2. 一对一(one-vs-one)

针对任意两个类训练出一个分类器,若有k类,需训练出C_{k}^{2} (k(k-1)/2)个分类器,当有一个新样本时,用这C_{k}^{2}个分类器来预测,每当被判定为某一类时,该类就加一,最后票数最多的类别被认定为该样本的类。libsvm是这么做的,虽然分类器多,但训练速度要比一对多快,因为训练复杂度与样本数量有关。

6.3 libsvm都使用哪些参数,如何调参?

使用RBF核,调整C和Y(使用交互验证),RBF参数少(样本数量>>特征数量),模型简单。

6.4 数据不规范化对svm的影响?

大值特征会掩盖小值特征(内积计算),对偶问题的优化目标函数中有向量的内积计算,RBF中也有向量的距离计算,小值特征会被忽略,影响算法的精度。

6.5 为什么要选择最大间隔分类?

几何间隔与样本的误分类次数间存在关系:

误分类次数<=\left ( \frac{2R}{\delta } \right )^{2},其中\delta为样本分类间隔距离;R为所有样本中的最长向量值。

7. 优缺点

7.1 优点

1. 可用于线性分类、非线性分类以及回归问题;

2. 低泛化误差;

3. 容易解释(思想简单,将样本与决策面的间隔最大化),分类效果好;

4. 计算复杂度较低。

7.2 缺点

1. 对参数和核函数比较敏感;

2. 原始的SVM只比较擅长处理二分类问题;

3. 对大规模数据训练比较困难。

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值