算法知识点——(3)监督学习——SVM

目录

一、支持向量机原理

1. SVM目标

2. 距离与数据定义

3. 目标函数推导

4. 目标函数求解

4.1 KKT条件

4.2 拉格朗日乘子法——强对偶性

4.3 拉格朗日乘子法—— 求解

4.4 SMO算法——求解max ()

5. 软间隔

6. SVM核变换

二、常见问题

1. LR和SVM区别

2. SVM损失函数

3. SVM的原理是什么?

4. 对偶计算的作用

5. 为什么SVM对缺失数据、噪声敏感

6. SVM如何处理多分类问题

7. SVM如何处理样本不平衡的问题

8. SVM用在大数据的缺陷

9. SVM优缺点


一、支持向量机原理

1. SVM目标

SVM可以用于二分类或多分类,此处以二分类为例。SVM的目标是寻找一个最优化超平面可以在空间中分割两类数据,这个最优化超平面需要满足的条件是:离其最近的点到其的距离最大化。

一句话解释:最大化离超平面最近点(支持向量)到该平面的距离。

2. 距离与数据定义

算法知识点——(3)监督学习——SVM_第1张图片

点x到空间直线w^Tx+b的距离为:

                                                                     d=\frac{|w^Tx+b|}{||w||}                                                 (1)

      y_{i}就是标签,假设这里是二分类问题,其值是1和-1,其保证了不论样本属于哪一类,最终值都保证是正数,则有:

                                                                        \large \left\{\begin{matrix} y(x_i)>0 \Leftrightarrow y_i=+1\\ y(x_i)<0 \Leftrightarrow y_i=-1 \end{matrix}\right.\\ \Rightarrow y_i(x^Tx+b)>0                             (2)

3. 目标函数推导

由1中的图可知,支持向量到达我们要优化的超平面 w^Tx+b=0的距离就是 \frac{1}{||w||},两侧的距离加起来就是\frac{2}{||w||}

则目标函数为:

                                                 \large argmax \quad \frac{1}{||w||}min[y_i\cdot (w^Tx_i+b)]                               (3)

其中min 为找最近的支持向量,argmax为找到什么样的w,b到平面的距离越远越好

假设支持向量到超平面的函数距离设为1,自然其他非最近点的函数距离便是大于1,于是得到不等式约束优化问题:

                                                      \large \left\{\begin{matrix} max \frac{2}{||w||}\\ s.t.\quad y_i(w^Tx_i+b)\geq 1 ,i=1,2,...,m \end{matrix}\right.                   (4)

4. 目标函数求解

由于最大值问题不好求解,因此将公式4转换为:                           

                                                               \large \left\{\begin{matrix} min\ \frac{1}{2}||w||^2\\ s.t.\quad y_i(w^Tx_i+b)\geq 1 ,i=1,2,...,m \end{matrix}\right.                     (5)

4.1 KKT条件

  1. \large \frac{\delta L}{\delta w}=0, \quad \frac{\delta L}{\delta b}=0, \quad \frac{\delta L}{\delta \lambda }=0

  2. \large \lambda _i[1-y_i(w^Tx_i+b)]=0

  3. \large \lambda _i\geq 0

  4. \large 1-y_i(w^Tx_i+b)\leqslant 0

4.2 拉格朗日乘子法——强对偶性

将带约束的优化问题(公式5)转换为不带约束的

                                              \large L(w,b,\alpha)= \frac{1}{2} ||w||^2 +\sum_{i=1}^{n}\alpha_i[1-y_i(w^Tx_i+b)]                              (6)

         分两种情况对公式(6)考虑

(1) \large 1-y_i(w^Tx_i+b)\geq 0时,\large max \ L(w,b,\alpha)为无穷大,无意义

(2)\large 1-y_i(w^Tx_i+b)\leq 0时,\large max \ L(w,b,\alpha)=\frac{1}{2}||w||^2

综上, min( 正无穷,\large \frac{1}{2}||w||^2) = \large \frac{1}{2}||w||^2

因此公式(6)可转换为(7):

根据KKT条件的强对偶性,转换为(8):

4.3 拉格朗日乘子法—— 求解min\ L(w,b,\alpha)

(1)令\large L(w,b,\alpha)分别对w,b求偏导,令其等于0:

算法知识点——(3)监督学习——SVM_第2张图片

(2)带入公式(6),得到:

算法知识点——(3)监督学习——SVM_第3张图片

问题变成(9):

算法知识点——(3)监督学习——SVM_第4张图片

4.4 SMO算法——求解max ()

(1)求解\alpha_i 

SMO的基本思路是先固定\alpha_i之外的参数,然后求\alpha_i上的极值。由于存在约束\small \sum_{i=1}^{m}\alpha_iy_i=0,若固定\alpha_i之外的其他变量,则\alpha_i可由其他变量导出。

SMO每次选择两个变量\alpha_i\alpha_j,并固定其他参数,这样,在参数初始化后,SMO不断执行如下两个步骤直至收敛:

  1. 选取一对需要更新的变量\alpha_i\alpha_j
  2. 固定\alpha_i\alpha_j之外的参数,更新\alpha_i\alpha_j

那么如何选取\alpha_i\alpha_j? SMO先选取违背KKT条件程度最大的变量,然后选取一个使目标函数值增长最快的变量。但由于比较各变量所对应的目标函数值增幅的复杂度过高,因此SMO采用了一个启发式:使选取的两变量所对应样本之间的间隔最大。原因是:这样两个变量有较大的差别,与对两个相似的变量进行更新对比,对他们进行更新会给目标函数更大的变化。

  SMO算法之所以高效,是因为固定其他参数后,仅优化两个参数的过程能做到十分高效。

可以将 \alpha_i\alpha_j消掉,只保留\alpha_i,公式(9)就变成了关于 \alpha_i的单变量二次规划问题,约束是 \alpha_i⩾0 ,有**闭式解**。

(2)求解b

对于任意支持向量都有 y_i*f(x_i)=1,即公式(11):

理论上,可通过任意支持向量利用式子11求解b,但常用算法:使用所有支持向量求解的平均值

(3)求解w

通过对w偏导公式可得:

至此,解完优化问题。

5. 软间隔

在现实中往往很难确定训练样本是否线性可分,即便恰好找到某个核函数使训练集在特征空间中线性可分,也很难判定这个结果是不是由于过拟合引起的。缓解该问题的一个办法是允许支持向量机在一些样本上出错,为此,引入“软间隔”。

前面的推导我们要求 y_i(w^Tx_i+b)\geq 1 ,现在,我们将条件放宽:

                                                                  y_i(w^Tx_i+b)\geq 1-\xi _i\quad i=1,2,...,m

得到新的目标函数

算法知识点——(3)监督学习——SVM_第5张图片

C>0为惩罚参数,代表对离群点的重视程度,C越大,越不想丢掉它们

C越大,对误分类的惩罚越大,分类越严格不能出错,\xi _i越小

C越小,对误分类的惩罚越小。有更大的错误容忍,\xi _i越大

得到新的目标函数:

6. SVM核变换

核函数的目标是,对于线性不可分函数,找到一种变换的方法,将其从原始特征空间映射到高维空间,则能线性可分。即计算由n维空间变为n*n维空间。

算法知识点——(3)监督学习——SVM_第6张图片

这样超平面变为:

                                                                                w^T{\color{Red} \Phi} {\color{Red} (x_i)}+b=0

常见的核函数有:

算法知识点——(3)监督学习——SVM_第7张图片

(1)线型核

当样本的特征很多且位数很高时可选用SVM的线型核函数。适用于线性可分的情形,参数少,速度快,对于一般数据,分类效果很理想。

(2)高斯核:

主要用于线性不可分的情形,参数多,分类结果非常依赖与参数,通常采用交叉检验确定最优参数,但是通常比较耗时。

会将原始空间映射为无穷维空间。若\sigma很大,则高次特征上的权重实际上衰减的非常快,相当于一个低维子空间;若\sigma很小,可将任意数据映射为线性可分,但是随之而来的可能是严重过拟合。通过调整\sigma,高斯核具有较高的灵活性

当样本的数量可观且维度不高时,一般优先使用高斯核函数,因为高斯核函数为一种局部性较强的核函数,无论对于大样本还是小样本均有较好的性能且相对于多项式核函数有较小的参数

 σ较大,导致高偏差,高次特征衰减越快,偏线性(高斯分布太平滑);

 σ较小,导致高方差。无穷维,可解决任何数据,但易过拟合(高斯分布瘦长)

(3)多项式核函数

适合于正交归一化后的数据

如何选择核函数:

(1)可利用先验知识确定问题是否线性可分

  1. 特征数近似等于样本数量:线型核
  2. 特征小,样本数正常:高斯核
  3. 特征少,样本很大,需要手工添加特征变成第一种情况

(2)交叉验证,尝试不通核函数,找到误差最小的即为效果最好的核函数

(3)混合核函数,将不同核函数结合起来

二、常见问题

1. LR和SVM区别

联系

  1. LR和SVM都可以处理分类问题,且一般都用于处理线性二分类问题(在改进的情况下可以处理多分类问题) 
  2. 如果不考虑核函数,LR和SVM都是线性分类算法,也就是说他们的分类决策面都是线性的
  3. LR和SVM都是监督学习算法。
  4. LR和SVM都是判别模型。

区别

  1. LR是参数模型,SVM是非参数模型。
  2. 从目标函数来看,逻辑回归采用的是Logistical Loss,SVM采用的是hinge loss. 这两个损失函数的目的都是增加对分类影响较大的数据点的权重,减少与分类关系较小的数据点的权重。SVM的处理方法是只考虑Support Vectors,也就是和分类最相关的少数点,去学习分类器。而逻辑回归通过非线性映射,大大减小了离分类平面较远的点的权重,相对提升了与分类最相关的数据点的权重。 
  3. 逻辑回归相对来说模型更简单,好理解,特别是大规模线性分类时比较方便。而SVM的理解和优化相对来说复杂一些,SVM转化为对偶问题后,分类只需要计算与少数几个支持向量的距离。在解决非线性问题时,支持向量机采用核函数的机制,而LR通常不采用核函数的方法。
  4. 线性SVM依赖数据表达的距离测度,所以需要对数据先做normalization,LR不受其影响。
  5. SVM的损失函数就自带正则(损失函数中的1/2||w||^2项),这就是为什么SVM是结构风险最小化算法的原因。而LR必须另外在损失函数上添加正则项。

在统计学中,参数模型通常假设总体(随机变量)服从某一个分布,该分布由一些参数确定(比如正太分布由均值和方差确定),在此基础上构建的模型称为参数模型;非参数模型对于总体的分布不做任何假设,只是知道总体是一个随机变量,其分布是存在的(分布中也可能存在参数),但是无法知道其分布的形式,更不知道分布的相关参数,只有在给定一些样本的条件下,能够依据非参数统计的方法进行推断。

经验风险最小化:关于训练样本集的平均损失最小

结构风险最小化:为防止过拟合提出,等同于正则化,在经验风险基础上加上表示模型复杂度的正则项

2. SVM损失函数

3. SVM的原理是什么?

SVM是一种二类分类模型。它的基本模型是在特征空间中寻找间隔最大化的分离超平面的线性分类器。(间隔最大是它有别于感知机)

(1)当训练样本线性可分时,通过硬间隔最大化,学习一个线性分类器,即线性可分支持向量机;

(2)当训练数据近似线性可分时,引入松弛变量,通过软间隔最大化,学习一个线性分类器,即线性支持向量机;

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

注:以上各SVM的数学推导应该熟悉:硬间隔最大化(几何间隔)---学习的对偶问题---软间隔最大化(引入松弛变量)---非线性支持向量机(核技巧)。

4. 对偶计算的作用

  1. 对偶问题将原始问题中的约束转为了对偶问题中的等式约束

    是对偶问题往往更易求解(当我们寻找约束存在时的最优点的时候,约束的存在虽然减小了需要搜寻的范围,但是却使问题变得更加复杂。为了使问题变得易于处理,我们的方法是把目标函数和约束全部融入一个新的函数,即拉格朗日函数,再通过这个函数来寻找最优点。)

  2. 方便核函数的引入,进而推广到非线性分类问题
  3. 改变了问题的复杂度。原问题的求解复杂度与特征的维数相关,而转成对偶问题后只与问题的变量个数有关。通过拉格朗日算子法使带约束的优化目标转为不带约束的优化函数,使得W和b的偏导数等于零,带入原来的式子,再通过转成对偶问题。由求特征向量w转化为求比例系数a,在原始问题下,求解的复杂度与样本的维度有关,即w的维度。
  4. 求解更高效,因为只用求解比例系数a,而比例系数a只有支持向量才为非0,其他全为0.

5. 为什么SVM对缺失数据、噪声敏感

(1)缺失数据

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

(2)噪声数据

SVM的目的是求出与支持向量由最大化距离的直线,以每个样本为圆心,该距离为半径做圆,可近似认为圆内的点与该样本属于相同分类。若出现噪声,那么这个噪声所带来的的错误分类也将最大化,所以SVM对噪声敏感。即一个噪声样本会影响以其到分类超平面的距离为半径的圆内的所有数据的分类效果

6. SVM如何处理多分类问题

(1)直接法

直接在目标函数上修改,将多个分类面的参数求解合并到一个最优化问题里面。看似简单但是计算复杂度非常大,实现起来较为困难,只适用于小型问题中。

(2)间接法一对多

对每个类都训练出一个分类器,设定目标类为一类,其余类为另外一类。这样针对k个类可以训练出k个分类器,当有一个新的样本来的时候,用这k个分类器来测试,那个分类器的概率高,那么这个样本就属于哪一类。这种方法效果不太好,bias比较高。

(3)间接法一对一

针对任意两个类训练出一个分类器,如果有k类,一共训练出\small C_{n}^{2}个分类器,这样当有一个新的样本要来的时候,用这\small C_{n}^{2}个分类器来测试,每当被判定属于某一类的时候,该类就加一,最后票数最多的类别被认定为该样本的类。这种方法虽好,但是需要\small C_{n}^{2}个分类器代价太大。

(4)层次支持向量机

层次分类法首先将所有类别分成两个子类,再将子类进一步划分成为两个次级子类,如此循环,直到得到一个单独的类别为止

7. SVM如何处理样本不平衡的问题

(1)调整惩罚因子

给样本数量少的负类更大的惩罚因子,表示重视这部分样本

(2)调整样本

欠采样、过采样

8. SVM用在大数据的缺陷

SVM的空间消耗主要是存储训练样本核矩阵,由于SVM是借助二次规划来求解支持向量,而求解二次规划将涉及m阶矩阵的计算(m为样本的个数),当m很大时该矩阵的存储和计算将耗费大量的机器内存和运算时间。若数据量较大,SVM训练时间就会较长。

9. SVM优缺点

优点:

  1. 使用核函数可以向高维空间进行映射,解决非线性的分类
  2. 分类思想简单,将样本与决策面的间隔最大化
  3. 分类效果较好

缺点:

  1. 对大规模数据训练比较困难,因为是二次规划求解
  2. 无法支持多分类,但是可以使用间接方法做
  3. 对缺失数据敏感,对核函数选择敏感,对离群点敏感

参考文献:

1. svm原理详细推导

2. 机器学习】支持向量机SVM原理及推导

3. 机器学习:支持向量机SVM原理与理解

4. 支持向量机原理(三)线性不可分支持向量机与核函数

5. 《机器学习》 周志华

6.数据挖掘(机器学习)面试--SVM面试常考问题

你可能感兴趣的:(算法知识点)