支持向量机原理

2024-05-13 06:00

1. 支持向量机原理

支持向量机方法的基本思想是:定义最优线性超平面,并把寻找最优线性超平面的算法归结为求解一个凸规划问题。进而基于Mercer核展开定理,通过非线性映射φ,把样本空间映射到一个高维乃至于无穷维的特征空间(Hilbert空间),使在特征空间中可以应用线性学习机的方法解决样本空间中的高度非线性分类和回归等问题(Nello Cristianini,2005)。简单地说就是升维和线性化。一般的升维都会带来计算的复杂化。这里自然发生的两个问题是如何求得非线性映射φ和解决算法的复杂性。SVM方法巧妙地解决了这两个难题:由于应用了核函数的展开定理,所以根本不需要知道非线性映射的显式表达式;由于是在高维特征空间中应用线性学习机的方法,所以与线性模型相比不但几乎不增加计算的复杂性,而且在某种程度上避免了“维数灾”。另外,SVM是一种有坚实理论基础的新颖的小样本学习方法。它基本上不涉及概率测度的定义及大数定律等,因此不同于现有的统计方法。从本质上看,它避开了从归纳到演绎的传统过程,实现了高效的从训练样本到预报样本的“转导推理”(transductive inference),大大简化了通常的分类和回归等问题。SVM的最终决策函数只由少数的支持向量所确定,计算的复杂性取决于支持向量的数目,而不是样本空间的维数,这在某种意义上避免了“维数灾”。如果说神经网络方法是对样本的所有因子加权的话,SVM方法是对只占样本集少数的支持向量样本“加权”。当预报因子与预报对象间蕴涵的复杂非线性关系尚不清楚时,基于关键样本的方法可能优于基于因子的“加权”。少数支持向量决定了最终结果,这不但可以帮助我们抓住关键样本、“剔除”大量冗余样本,而且注定了该方法不但算法简单,而且具有较好的“鲁棒”性。由于有较为严格的统计学习理论做保证,应用SVM方法建立的模型具有较好的推广能力。SVM方法可以给出所建模型的推广能力的确定的界,这是目前其它任何学习方法所不具备的。
随着支持向量机理论的深入研究,出现了许多变种的支持向量机,如Sheng-wei Fe(2009)提出的两类重要的预测技术:分类和回归。其中分类问题预测要求观察值是离散的,而回归问题主要针对决策属性值是连续的情况,它通过学习训练样本集建立一个回归器,然后在条件属性给定的情况下进行预测。
支持向量机回归分为线性回归和非线性回归,其原理如下:
(1)支持向量机线性回归
设样本集为:(x1,y1),…,(xi,yi),x∈Rn,y∈R,回归函数用下列线性方程来表示:
f(x)=w·x+b (4.14)
假设所有训练数据在ε精度下如图4.5所示无误差地用线性函数拟合,即

基坑降水工程的环境效应与评价方法


图4.5 支持向量机回归

考虑到允许误差的情况,引入松弛因子ξi,  ,则式(4.13)变为

基坑降水工程的环境效应与评价方法

其中常数C>0,表示对超出误差ε的样本的惩罚程度,ξi,  为松弛变量的上限与下限。为此构造拉格朗日函数:

基坑降水工程的环境效应与评价方法

得到其对偶问题为:

基坑降水工程的环境效应与评价方法


基坑降水工程的环境效应与评价方法


基坑降水工程的环境效应与评价方法

可以得到回归函数为:
其中,αi,  将只有一小部分小为零,它们对应的样本就是支持向量。
(2)支持向量机非线性回归
以上讨论的是线性问题,对于非线性问题,把输入样本xi通过ψ:x→H映射到高维特征空间H(可能是无穷维)。当在特征空间中构造最优超平面时,实际上只需进行内积运算,而这种内积运算是可以用原空间中的函数来实现的,没有必要知道ψ的形式。因为只要核函数K(xi,xj)满足Mercer条件,它就对应某一变换空间的内积即K(xi,xj)=ψ(i)·ψ(xj)。这一点提供了可能导致的“维数灾难”问题解决方法。
由线性支持向量回归可知,二次规划的拉格朗日目标函数:

基坑降水工程的环境效应与评价方法

其对偶形式:

基坑降水工程的环境效应与评价方法

可以得到回归函数为:

基坑降水工程的环境效应与评价方法

传统的拟合方法通常是在线性方程后面加高阶项。由此增加的可调参数增加了过拟合的风险。支持向量回归用核函数即能作非线性回归,达到了“升维”的目的,增加的可调参数很少,过拟合仍能控制。

支持向量机原理

2. 支持向量机的基本原理

支持向量机的主要思想是:建立一个最优决策超平面,使得该平面两侧距离该平面最近的两类样本之间的距离最大化,从而对分类问题提供良好的泛化能力。
对于一个多维的样本集,系统随机产生一个超平面并不断移动,对样本进行分类,直到训练样本中属于不同类别的样本点正好位于该超平面的两侧,满足该条件的超平面可能有很多个,SVM正式在保证分类精度的同时,寻找到这样一个超平面,使得超平面两侧的空白区域最大化。
支持向量机中的支持向量是指训练样本集中的某些训练点,这些点最靠近分类决策面,是最难分类的数据点。SVM中最优分类标准就是这些点距离分类超平面的距离达到最大值;“机”是机器学习领域对一些算法的统称,常把算法看做一个机器,或者学习函数。
SVM是一种有监督的学习方法,主要针对小样本数据进行学习、分类和预测,类似的根据样本进行学习的方法还有决策树归纳算法等。

支持向量机的应用实例
支持向量机是一种监督模式识别和机器学习方法,采用最大分类间隔准则实现有限训练样本情况下推广能力的优化。
通过核函数间接实现非线性分类或函数回归,支持向量机通常简写作SVM。
支持向量机使用铰链损失函数计算经验风险并在求解系统中加入了正则化项以优化结构风险,是一个具有稀疏性和稳健性的分类器。
支持向量机可以通过核方法进行非线性分类,是常见的核学习方法之一。
支持向量机在人像识别、文本分类等模式识别问题中有得到应用。

3. 支持向量机原理

支持向量机原理SVM简介
支持向量机(support vector machines, SVM)是一种二分类模型,它的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大使它有别于感知机;SVM还包括核技巧,这使它成为实质上的非线性分类器。SVM的的学习策略就是间隔最大化,可形式化为一个求解凸二次规划的问题,也等价于正则化的合页损失函数的最小化问题。SVM的的学习算法就是求解凸二次规划的最优化算法。



SVM算法原理
SVM学习的基本想法是求解能够正确划分训练数据集并且几何间隔最大的分离超平面。如下图所示,  \boldsymbol{w}\cdot x+b=0  即为分离超平面,对于线性可分的数据集来说,这样的超平面有无穷多个(即感知机),但是几何间隔最大的分离超平面却是唯一的。


在推导之前,先给出一些定义。假设给定一个特征空间上的训练数据集

 T=\left\{ \left( \boldsymbol{x}_1,y_1 \right) ,\left( \boldsymbol{x}_2,y_2 \right) ,...,\left( \boldsymbol{x}_N,y_N \right) \right\} 

其中, \boldsymbol{x}_i\in \mathbb{R}^n  ,  y_i\in \left\{ +1,-1 \right\} ,i=1,2,...N  , x_i 为第  i  个特征向量,  y_i  为类标记,当它等于+1时为正例;为-1时为负例。再假设训练数据集是线性可分的。

几何间隔:对于给定的数据集  T  和超平面 w\cdot x+b=0 ,定义超平面关于样本点  \left( x_i,y_i \right)  的几何间隔为

 \gamma _i=y_i\left( \frac{\boldsymbol{w}}{\lVert \boldsymbol{w} \rVert}\cdot \boldsymbol{x}_{\boldsymbol{i}}+\frac{b}{\lVert \boldsymbol{w} \rVert} \right) 

超平面关于所有样本点的几何间隔的最小值为

 \gamma =\underset{i=1,2...,N}{\min}\gamma _i 

实际上这个距离就是我们所谓的支持向量到超平面的距离。

根据以上定义,SVM模型的求解最大分割超平面问题可以表示为以下约束最优化问题

 \underset{\boldsymbol{w,}b}{\max}\ \gamma 

 s.t.\ \ \ y_i\left( \frac{\boldsymbol{w}}{\lVert \boldsymbol{w} \rVert}\cdot \boldsymbol{x}_{\boldsymbol{i}}+\frac{b}{\lVert \boldsymbol{w} \rVert} \right) \ge \gamma \ ,i=1,2,...,N 

将约束条件两边同时除以  \gamma  ,得到

 y_i\left( \frac{\boldsymbol{w}}{\lVert \boldsymbol{w} \rVert \gamma}\cdot \boldsymbol{x}_{\boldsymbol{i}}+\frac{b}{\lVert \boldsymbol{w} \rVert \gamma} \right) \ge 1 

因为  \lVert \boldsymbol{w} \rVert \text{,}\gamma  都是标量,所以为了表达式简洁起见,令

\boldsymbol{w}=\frac{\boldsymbol{w}}{\lVert \boldsymbol{w} \rVert \gamma}

b=\frac{b}{\lVert \boldsymbol{w} \rVert \gamma} 

得到

y_i\left( \boldsymbol{w}\cdot \boldsymbol{x}_{\boldsymbol{i}}+b \right) \ge 1,\ i=1,2,...,N

又因为最大化  \gamma  ,等价于最大化  \frac{1}{\lVert \boldsymbol{w} \rVert} ,也就等价于最小化  \frac{1}{2}\lVert \boldsymbol{w} \rVert ^2  ( \frac{1}{2} 是为了后面求导以后形式简洁,不影响结果),因此SVM模型的求解最大分割超平面问题又可以表示为以下约束最优化问题

 \underset{\boldsymbol{w,}b}{\min}\ \frac{1}{2}\lVert \boldsymbol{w} \rVert ^2 

 s.t.\ \ y_i\left( \boldsymbol{w}\cdot \boldsymbol{x}_{\boldsymbol{i}}+b \right) \ge 1,\ i=1,2,...,N 

这是一个含有不等式约束的凸二次规划问题,可以对其使用拉格朗日乘子法得到其对偶问题(dual problem)。

首先,我们将有约束的原始目标函数转换为无约束的新构造的拉格朗日目标函数

L\left( \boldsymbol{w,}b,\boldsymbol{\alpha } \right) =\frac{1}{2}\lVert \boldsymbol{w} \rVert ^2-\sum_{i=1}^N{\alpha _i\left( y_i\left( \boldsymbol{w}\cdot \boldsymbol{x}_{\boldsymbol{i}}+b \right) -1 \right)} 

其中  \alpha _i  为拉格朗日乘子,且  \alpha _i\ge 0  。现在我们令

 \theta \left( \boldsymbol{w} \right) =\underset{\alpha _{_i}\ge 0}{\max}\ L\left( \boldsymbol{w,}b,\boldsymbol{\alpha } \right) 

当样本点不满足约束条件时,即在可行解区域外:

 y_i\left( \boldsymbol{w}\cdot \boldsymbol{x}_{\boldsymbol{i}}+b \right) <1 

此时,将 \alpha _i  设置为无穷大,则  \theta \left( \boldsymbol{w} \right)  也为无穷大。

当满本点满足约束条件时,即在可行解区域内:

y_i\left( \boldsymbol{w}\cdot \boldsymbol{x}_{\boldsymbol{i}}+b \right) \ge 1 

此时,  \theta \left( \boldsymbol{w} \right)  为原函数本身。于是,将两种情况合并起来就可以得到我们新的目标函数

 \theta \left( \boldsymbol{w} \right) =\begin{cases} \frac{1}{2}\lVert \boldsymbol{w} \rVert ^2\ ,\boldsymbol{x}\in \text{可行区域}\\ +\infty \ \ \ \ \ ,\boldsymbol{x}\in \text{不可行区域}\\ \end{cases} 

于是原约束问题就等价于

 \underset{\boldsymbol{w,}b}{\min}\ \theta \left( \boldsymbol{w} \right) =\underset{\boldsymbol{w,}b}{\min}\underset{\alpha _i\ge 0}{\max}\ L\left( \boldsymbol{w,}b,\boldsymbol{\alpha } \right) =p^* 

看一下我们的新目标函数,先求最大值,再求最小值。这样的话,我们首先就要面对带有需要求解的参数  \boldsymbol{w}  和  b 的方程,而  \alpha _i 又是不等式约束,这个求解过程不好做。所以,我们需要使用拉格朗日函数对偶性,将最小和最大的位置交换一下,这样就变成了:

 \underset{\alpha _i\ge 0}{\max}\underset{\boldsymbol{w,}b}{\min}\ L\left( \boldsymbol{w,}b,\boldsymbol{\alpha } \right) =d^* 

要有  p^*=d^*  ,需要满足两个条件:

① 优化问题是凸优化问题

② 满足KKT条件

首先,本优化问题显然是一个凸优化问题,所以条件一满足,而要满足条件二,即要求

 \begin{cases} \alpha _i\ge 0\\ y_i\left( \boldsymbol{w}_{\boldsymbol{i}}\cdot \boldsymbol{x}_{\boldsymbol{i}}+b \right) -1\ge 0\\ \alpha _i\left( y_i\left( \boldsymbol{w}_{\boldsymbol{i}}\cdot \boldsymbol{x}_{\boldsymbol{i}}+b \right) -1 \right) =0\\ \end{cases} 

为了得到求解对偶问题的具体形式,令  L\left( \boldsymbol{w,}b,\boldsymbol{\alpha } \right)  对  \boldsymbol{w} 和  b  的偏导为0,可得

\boldsymbol{w}=\sum_{i=1}^N{\alpha _iy_i\boldsymbol{x}_{\boldsymbol{i}}} 

\sum_{i=1}^N{\alpha _iy_i}=0 

将以上两个等式带入拉格朗日目标函数,消去  \boldsymbol{w} 和  b  , 得

 L\left( \boldsymbol{w,}b,\boldsymbol{\alpha } \right) =\frac{1}{2}\sum_{i=1}^N{\sum_{j=1}^N{\alpha _i\alpha _jy_iy_j\left( \boldsymbol{x}_{\boldsymbol{i}}\cdot \boldsymbol{x}_{\boldsymbol{j}} \right)}}-\sum_{i=1}^N{\alpha _iy_i\left( \left( \sum_{j=1}^N{\alpha _jy_j\boldsymbol{x}_{\boldsymbol{j}}} \right) \cdot \boldsymbol{x}_{\boldsymbol{i}}+b \right) +}\sum_{i=1}^N{\alpha _i} 

\ \ \ \ \ \ \ \ \ \ \ =-\frac{1}{2}\sum_{i=1}^N{\sum_{j=1}^N{\alpha _i\alpha _jy_iy_j\left( \boldsymbol{x}_{\boldsymbol{i}}\cdot \boldsymbol{x}_{\boldsymbol{j}} \right)}}+\sum_{i=1}^N{\alpha _i} 

即
\underset{\boldsymbol{w,}b}{\min}\ L\left( \boldsymbol{w,}b,\boldsymbol{\alpha } \right) =-\frac{1}{2}\sum_{i=1}^N{\sum_{j=1}^N{\alpha _i\al

支持向量机原理

4. 支持向量机的基本原理是什么?

  
  支持向量机回归分为线性回归和非线性回归,其原理如下:
  (1)支持向量机线性回归
  设样本集为:(x1,y1),…,(xi,yi),x∈Rn,y∈R,回归函数用下列线性方程来表示:
  f(x)=w·x+b(4.14)
  假设所有训练数据在ε精度下如图4.5所示无误差地用线性函数拟合,即
  基坑降水工程的环境效应与评价方法
  图4.5支持向量机回归
  考虑到允许误差的情况,引入松弛因子ξi,
  ,则式(4.13)变为
  基坑降水工程的环境效应与评价方法
  其中常数C>0,表示对超出误差ε的样本的惩罚程度,ξi,
  为松弛变量的上限与下限。为此构造拉格朗日函数:
  基坑降水工程的环境效应与评价方法
  得到其对偶问题为:
  基坑降水工程的环境效应与评价方法
  基坑降水工程的环境效应与评价方法
  基坑降水工程的环境效应与评价方法
  可以得到回归函数为:
  其中,αi,
  将只有一小部分小为零,它们对应的样本就是支持向量。
  (2)支持向量机非线性回归
  以上讨论的是线性问题,对于非线性问题,把输入样本xi通过ψ:x→H映射到高维特征空间H(可能是无穷维)。当在特征空间中构造最优超平面时,实际上只需进行内积运算,而这种内积运算是可以用原空间中的函数来实现的,没有必要知道ψ的形式。因为只要核函数K(xi,xj)满足Mercer条件,它就对应某一变换空间的内积即K(xi,xj)=ψ(i)·ψ(xj)。这一点提供了可能导致的“维数灾难”问题解决方法。
  由线性支持向量回归可知,二次规划的拉格朗日目标函数:
  基坑降水工程的环境效应与评价方法
  其对偶形式:
  基坑降水工程的环境效应与评价方法
  可以得到回归函数为:
  基坑降水工程的环境效应与评价方法
  传统的拟合方法通常是在线性方程后面加高阶项。由此增加的可调参数增加了过拟合的风险。支持向量回归用核函数即能作非线性回归,达到了“升维”的目的,增加的可调参数很少,过拟合仍能控制。

5. 支持向量机

 支持向量机(Suport Vector Machine,常简称为SVM),是一个监督式学习的方式。支持向量机属于一般化线性分类器,这类分类器的特点是能够同时最小化经验误差与最大化几何边缘区,因此支持向量机机也被称为最大边缘区分类器。
     
                                             
     
                                             
   蓝色和红色的线圈出来的点就是所谓的支持向量,离分界线最近的点,如果去掉这些点,直线多半要改变位置。Classifier Boundary就是决策函数f(x),在两个类的中间。红色和蓝色之间的间隙就是我们要的最大化分类的间隙。
   有拉格朗日乘子法的地方,必然是一个组合优化问题。比如     
   这是一个带等式约束的优化问题,有目标值,有约束条件,不能直接求导。可以使用拉格朗日方法,把这个约束乘以一个系数加到目标函数中去,这样相当与既考虑了原目标函数,也考虑了约束条件。然后分别对x求导等于0,        把它带点菜约束条件中去,可以看到,2个变量两个等式,最终可再带回去求x就可以了。更高一层,带有不等式的约束问题怎么办?需要用更一般化的拉格朗日乘子法,即KKT条件,来求解这个问题。
   任何原始问题约束条件无非最多三种,等式约束,大于号约束,小于号约束,而这三种最终通过将约束方程简化成两类:约束方程等于0和约束方程小于0。
   假设原始问题约束条件为下例所示:        那么把约束条件变个样子        现在拿到目标函数中去变成     
   那么KKT条件的定理是什么呢?就是如果一个优化问题在转变成        其中g是不等式约束,h是等式约束。那么KKT条件就是函数的最优值,它必定满足下面条件:
   这三个等式很好理解,重点是第三个句子不好理解,因为我们知道在约束条件变完或,所有的  ,且求和还要为0。那么为什么KKT的条件是这样的呢?
   某次的g(x)在为最优解起作用,那么它的系数值(可以)不为0,如果某次g(x)没有为下一次的最优解起作用,那么它的系数就必须为0。
    函数间隔    对于给定的训练数据集T合超平面(w,b),定义超平面(w,b)关于样本点  的函数间隔为  
   函数间隔可以表示分类预测的正确性及确信度。但是选择超平面时,只有函数间隔是不够的,因子只要成比较改变  和b,超平面并没有改变,但函数间隔却扩大了。
    几何间隔    对于给定的训练数据集T和超平面  ,定义超平面  关于样本点  的几何间隔为  ,其中  为  的  范数。
   如果  ,那么函数间隔和几何间隔相等。如果超平面参数  成比例地改变(超平面没有改变),函数间隔也成比例改变,而几何间隔不变。
   支持向量机的基本想法是求解能够正确分训练数据集并且几何间隔最大的分离超平面。对线性可分的训练数据集而言,线性可分分离超平面有无穷多个(等价于感知机),但是几何间隔最大的分离超平面时唯一的。这里的间隔最大化被称为硬间隔最大化。
   间隔最大化的直观解释是:对训练数据集找到几何间隔最大的超平面意味着以充分大的确信度对训练数据进行分类。也就是说,不仅将正负实例点分开,而且对最难分的实例点(离超平面最近的点)也有足够大的确信度将他们分开。这样的超平面应该对未知的新实例有很好的分类预测能力。
   下面考虑如何求一个几何间隔最大的分离超平面,即最大间隔分离超平面。具体地,这个问题可以表示为下面的约束最优化问题:        即我们希望最大化超平面  关于训练数据集的集合间隔  ,约束条件表示的是超平面  关于每个训练样本点的集合间隔至少是  
   考虑几何间隔和函数间隔的关系式,可将这个问题改成为        函数间隔  并不影响最优化问题的解。事实上,假设将  成比例改变为  ,这时函数间隔变成  。函数间隔的改变对最优化问题的不等式约束没有影响,对目标函数的优化也没有影响,也就事实说,它产生一个等价的最优化问题。这样,就可以取  。将  代入上面的最优化问题。注意最大化  和最小化  是一样的。
   于是就得到下面的线性可分支持向量机学习的最优化问题        这是一个凸二次规划问题(contex quadratic programming)问题。   凸优问题是指约束最优化问题        其中,目标函数  和约束函数  都是  上的可连续可微的凸函数,约束函数  是  的仿射函数。当木匾函数是  是二次函数且约束函数  是仿射函数时,上述的凸优化问题成为凸二次规划问题。   如果求出约束最优化问题的解  ,那么就可以得出最大间隔分离超平面  及决策函数  ,即线性可分支持向量机模型。
   为了求解线性可分支持向量机的最优化问题,将它作为原始最优化问题,应用到拉格朗日对偶性,通过求解对偶问题得到原始问题的最优解,这就是线性可支持向量机的对偶算法(dual algorithm)。这样做的优点,一是对偶问题往往根据容易求解;二是自然引入核函数,进而推广到非线性可分类问题。
   首先构建拉格朗日函数(Lagrange function)。为此,对每一个不等式约束引入拉格朗日乘子(Lagrange multiplier)  定义拉格朗日函数:        其中  为拉格朗日乘子向量。
   根据拉格朗日对偶性,原始问题的对偶问题是极大极小问题  
   为了得到对偶函数问题的解,需要先求  对  的极小,再求  的极大   (1)求     将拉格朗日函数  分别对  求偏导数并令其等于0     
   将(1)代入拉格朗日函数,并利用(2),即可得        即        (2)求  对  的极,即对偶问题             将公式(3)的目标函数由极大值转换成求极小,就得到下面与之等价的对偶最优化问题          
   (3)解     假设  是对偶最优化问题的解,则存在下标使得  ,并求按下式求得原始最优化的解  
   根据KKT条件成立,即得        因此          ,且至少存在一个  ,假设  ,那么  不是原始问题的解,所以     
   那么分离的超平面可以写成        决策函数可以写成     
   由此可以看出,分类决策函数只依赖于输入x和训练样本输入的内积,式(8)称为线性可分支持向量机的对偶形式。
    案例    训练数据正例点是  ,负例点是  ,试用线性可分支持向量机   解:根据所给数据,对偶问题是     
   解这一优化问题,将  代入目标函数并记为     
   对  求偏导令其为0,易知  处取极值,该点不满足约束条件  ,所以最小值应在边界上达到。
   当  ,当  ,于是  
   这样,  对应的实例点  是支持向量,计算可得  ,  
   分离超平面为     分离决策函数为  
   线性可分问题的支持向量机学习方法,对线性不可分训练数据是不适用的,因为这时上述方法中的不等式约束不能都成立。 线性不可分意味着不能满足函数间隔大于等于1的约束条件 。为了解决这个问题,对每个样本点  都引入一个松弛变量  ,使得函数间隔加上变量大于等于1,这样约束条件变为        同时对于每个松弛变量  ,支付一个代价  ,目标函数由原来的  变成        C>0为惩罚参数,一般由应用问题解决,C值大时对误分类的惩罚增大,C值小时对误分类的惩罚减小。最小化木匾函数有2层意思:使得  尽量小,即间隔尽量大,同时使误分类点的个数尽量小,C是调和两者的系数
   非线性分类问题是指通过非线性模型才能很好地进行分类的问题。非线性问题往往不好求解,希望通过线性分类问题的方法解决这个问题,所采取的方法是进行一个非线性变换,将非线性问题变成线性问题,通过解变换后的线性问题的方法求解原来的非线性问题。
   用线性分类方法求解非线性分类问题分两步:首先使用一个变换将原来空间的数据映射到新空间;然后在新空间里用线性分类学习方法从训练数据中学习分类模型。核技巧就属于这样的方法。
   设X是输入空间(欧氏空间  的子集或离散集合),又设H为特征向量(希伯而空间H),如果存在一个从X到H的映射        使得对所有  ,函数  满足条件        则称K(x,z)为核函数,  为映射函数,  。通常计算K(x,z)比较容易,而通话  计算K(x,z)并不容易。
     是输入空间到特征空间的迎神,特征空间一般是高维的,甚至是无穷维,可以看到,对于给定的核K(x,z),特征空间H和映射函数  的取法并不唯一,可以取不同的特征空间,即便是在同一特征空间也可以取不同的映射。
   在对偶目标函数中的内积  可以用核函数  来代替,此时对偶问题的目标函数成为        这等价于经过映射函数  将原来的输入空间变换到一个新的特征空间,将输入空间中的内积  变换成特征空间中的内积  ,在新的特征空间里从训练样本中学习线性支持向量机。学习是隐式地在特征空间进行的,不需要显式地定义特征空间和营业日函数。在实际应用中,往往依赖领域知识直接选择核函数。
        对应的支持向量机是一个p次多项式分类器,在此情形下,分类决策函数成为     
        对应的支持向量机是高斯径向基函数(radial basis function)分类器。在此情形下,分类决策函数成为     
   核函数不仅可以定义在欧式空间,还可以定义在离散数据的集合上。比如,字符串核函数是定义在字符串集合上的核函数。字符串核函数在文本分类、信息检索、生物信息学等方面都有应用。
   两个字符串s和t上的字符串核函数是基于映射  的特征空间中的内积:             字符串核函数  给出了字符串s和t中长度等于n的所有子串组成的特征向量的余弦相似度。直观上看,两个字符串相同的字串越多,它们就越相似,字符串核函数的值就越大。字符串核函数可以由动态规划快速地计算。
   支持向量机的学习问题可以形式化为求解凸二次规划问题,这样的凸二次规划问题具有全局最优解,并且有许多最优化算法可以用于这一问题的求解。但是当训练样本容量很大时,这些算法往往变得非常低效,以至无法使用。
   序列最小最优化(sequential minimal optimization,SMO)算法,是一种启发式算法,其基本思路是:如果所有变量的解都满足此最优化问题的KKT条件,那么这个最优化问题的解就得到了。因为KKT条件是该最优化问题的充分必要条件。否则,选择两个变量,固定其他变量,针对这两个变量构建一个二次规划问题。这个二次规划问题的目标是使函数值变得更小。重要的是,这时子问题可以通过解析方法求解,这样就可以大大提高整个算法的计算速度。子问题有两个变量,一个是违反KKT条件最严重的那一个,另一个由约束条件自动确定。如此,SMO算法将原问题不断分解为子问题并对子问题求解,进而达到求解原问题的目的。
   假设两个变量是  ,其他变量  是固定的,于是SNO的最优化问题的子问题可以写成。
        其中,  是常数,目标函数中省略不含  的常数项。
   为了求解两个变量的二次规划问题,约束可以用二维空间中的图形表示
                                           不等式约束(7.3)使得  在盒子[0,C] [0,C]内,等式约束(7.2)使  在平行于盒子[0,C] [0,C]的对角线的直线上。因此要求的是目标函数在一条平行于对角线的线段上最优值。这使得两个变量的最优化问题成为实质上的单变量最优化文图,不访考虑为变量  的最优化问题。
   假设初始化可行解为  ,最优化解为  ,并且假设沿着约束方向未经剪辑时  的最优解为  
   由于  需满足不等式约束(7.3),所以最优值  的取值范围必须满足条件        其中,L与H是  所在对角线段端点的界,如果          如果  ,则     
   下面首先要求沿着约束方向未经剪辑即未考虑不等式约束(7.3)时  的最优解  ,然后在解决剪辑后  的解  ,我们用定理来描述这个结果        令     
   当i=1,2时,  为函数g(x)对输入  的预测值与真实输出  之差
    定理  最优化问题(7.1)~(7.3)沿着约束方向未经剪辑时的解是        其中       是输入空间到特征空间的映射
   经剪辑后的  的解是        由  是     

支持向量机

6. 支持向量机(三)——线性支持向量机

支持向量机(Support Vector Machine,SVM)是监督学习中非常经典的算法。笔者主要参考学习的是李航老师《统计学习方法(第二版)》[1]和周志华老师的西瓜书《机器学习》[2]。
    
 一方面,线性可分支持向量机只适用于线性可分的训练数据集,对于线性不可分的训练数据集则是无能为力的。
  
 另一方面,即使训练数据集线性可分,线性可分支持向量机强依赖于离分类超平面最近的样本[3],过拟合的风险很大。
  
 这时候就需要有一定容错能力的分类模型,线性支持向量机,或者叫软间隔支持向量机,就可以做到这样的容错性。
  
 这里我采用周志华老师西瓜书[2]的思路来整理这部分。
  
 对于线性可分支持向量机,要求所有样本满足以下约束
  
   
  
 而软间隔则允许某些样本不满足这样的约束。
  
 在最大化间隔的同时,不满足约束的样本要尽量少。此时,优化目标可以写为
  
   
  
 其中,  是一般化的损失函数,  被称作惩罚参数,调节间隔最大化和参数惩罚这二者关系。
  
 我们先看惩罚参数  。当  值较大时对误分类惩罚较大,特别地,当C取无穷大时,所有样本都要满足式  约束,模型等价于线性可分支持向量机[3];当  取有限值时,模型允许一些样本不满足约束。
  
 接下来讨论损失函数  。当  使用不同的损失函数时的模型状态,周志华老师的西瓜书[2]有简单讨论。当  是合页损失函数时,模型就是线性支持向量机。李航老师《统计学习方法(第二版)》[1]的相关章节证明了线性支持向量机和基于合页损失函数的优化问题的等价性。合页损失函数如下
                                          
 图1[2]
  
 当  时,式  可重写为
  
   
  
 引入松弛变量  ,将上式再重写为
  
   优化问题一:  
  
   
  
 与线性可分支持向量机类似,线性支持向量机(式  )的拉格朗日对偶函数如下
  
   
  
 原问题(式  )是凸优化问题,则优化问题  与原问题等价。
  
  第一步, 求  对  的极小值。
  
   
  
   
  
   
  
 得
  
   
  
   
  
   
  
 将式  代入式  ,可得
  
   
  
  第二步, 求  对  的极大值,即得对偶问题。
  
 这里需要注意,式  等号右边表达式没有  ,直接求解对  的极大值即可。对偶问题如下
  
   
  
 上式中,因为  不在最优化表达式中,可以利用等式约束消去,简化约束。再把求极大转换成求极小,得到对偶问题如下
  
   优化问题二:  
  
   
  
  第三步, 求解分类超平面和分类模型。
  
 对于已求解出优化问题二(式  )的最优解  ,则类似于线性可分支持向量机[3]的推导过程。
  
 原问题(式  )是凸优化问题,则满足KKT条件的点是原问题和对偶问题的最优解(具体请参见[4])
  
   
  
 根据式  可得
  
   
  
 观察式  、  和  ,先看式  ,当  时,有
  
   
  
 再看式  ,当  时,有   
  
 此时再看式  ,当  时,必有  ,综上讨论,当  时,有
  
   
  
 再将式  代入上式,并于式  联立,可得线性支持向量机的最优分类超平面参数为
  
   
  
 这里需要注意,在李航老师《统计学习方法(第二版)》[1]相关章节中,和式  相同表达的式子是不严谨的,如果没看到这一段,这句话略过。
  
 线性支持向量机的支持向量会复杂一些。如下图
                                          
  首先, 定义  的样本点  为支持向量。
  
  其次, 每个支持向量  到其对应的间隔边界的距离为  。推导过程如下。
  
 点到超平面的距离公式为:  
  
 先看正类,正类的间隔边界超平面为:  ,对应的点到间隔边界超平面的距离公式为:  。对于正例的支持向量,有  ,根据式  ,有  ,代入距离公式,即可到结论。
  
 负类推导过程类似。
  
  再次, 根据以上结论,分析支持向量。
  
 根据上面式  和  ,消去  ,则有
  
   
  
  第一种情况, 当  时,则  ,则此支持向量到对应间隔边界的距离  ,即此支持向量在间隔边界超平面上。
  
  第二种情况, 当  且  时,此支持向量到对应间隔边界的距离  ,此支持向量分类正确,在间隔边界与分离超平面之间。
  
  第三种情况, 当  且  时,此支持向量到对应间隔边界的距离  ,此支持向量在分离超平面上。
  
  第四种情况, 当  且  时,此支持向量到对应间隔边界的距离  ,此支持向量分类错误。
  
 这里需要注意,有没有  和  同时成立的点,这里没有找到确定或否定的证据。如果谁有这方面的资料,还烦请告知笔者,先行谢过,联系邮箱:hpfhepf@gmail.com。
  
 [1]、《统计学习方法(第二版)》,李航著,清华大学出版社
  
 [2]、《机器学习》,周志华著,清华大学出版社
  
 [3]、 《支持向量机(一)——线性可分支持向量机导出》 
  
 [4]、 《凸优化(八)——Lagrange对偶问题》 
  
 B、相关目录
  
 [a]、 支持向量机(一)——线性可分支持向量机导出 
  
 [b]、 支持向量机(二)——线性可分支持向量机求解 
  
 [c]、支持向量机(三)——线性支持向量机
  
 [d]、 支持向量机(四)——核方法 
  
 [e]、 支持向量机(五)——SMO算法

7. 支持向量机

 
                                                                                   
    定义拉格朗日函数      ,    KKT条件 为:        求极值,则令             得到:             代入  消去  和  ,得到原问题的 对偶问题 为              由KKT条件得到:对于任意训练样本  总有  或  ,这就意味着当  时,该样本并不会对  产生而任何影响,当  时,此时意味着训练样本在最大间隔的边界上,该样本点称之为支持向量。 
   **
   假设样本线性可分,即存在一个超平面对样本进行分类。而实际任务中,样本往往是非线性可分。此时,我们将  映射到高维特征空间,在特征空间中找到超平面使得样本线性可分,记  为  映射到高维特征空间所对应的特征向量。   因此,对应的模型可以表示为        实际只需要求解如下函数:             对偶问题为:             当特征空间维度很高时,计算  困难,故定义核函数  使得  ,   则对偶问题重写为:             求解该对偶问题得到          
                                           由于  非凸、非连续,常用其他损失函数替代,如下图所示:   
                                                     
                   采用拉格朗日乘子法      ,求极值,令                  带入L得到原问题的对偶问题为:                   KKT条件要求 :        由此可得:
   (1)考虑  与  最多允许有  的误差   (2)构建宽度为  的间隔带,如图:   
                                                                                                                                                                                                                                                   
   **

支持向量机

8. 支持向量机

支持向量机可以用于分类、回归与异常点检测,它有以下优势:
  
 1、对高维数据集十分有效。
  
 2、当p>n时,依然有效。
  
 3、高效利用内存。
  
 4、不同的核函数与决策函数一一对应。
  
 缺点如下:
  
 1、当p>>n时,需要合理选用核函数以避免过拟合。
  
 2、由于支持向量机不直接提供概率估计,需要经过五折交叉验证计算得到,所以它较慢。
  
 SVC、NuSVC和LinearSVC能够实现多元分类。SVC与NuSVC十分相似,不同之处在于NuSVC引入了一个新的超参数v,它可以控制支持向量的数量和训练误差。LinearSVC是另一个实现线性核函数的支持向量分类,所以它不接受关键词kernel,也没有所谓的支持向量。
  
 支持向量的解释:支持向量本质上就是一个向量,而且是离间隔边界最近的向量,也就是这些向量支撑了整个间隔边界,支持向量的名字由来就是这样。
  
 多元分类在分类中主要有两种方法:one-vs-one和one-vs-rest。
  
 one-vs-one:假设有n个类别,则会针对两两类别建立二项分类器,得到k=n*(n-1)/2个分类器。对新数据进行分类时,依次使用这k个分类器进行分类,每次分类相当于一次投票,分类结果是哪个就相当于对哪个类投了一票。在使用全部k个分类器进行分类后,相当于进行了k次投票,选择得票最多的那个类作为最终分类结果​。
  
 one-vs-rest:假设有n个类别,那么就会建立n个二项分类器,每个分类器针对其中一个类别和剩余类别进行分类。进行预测时,利用这n个二项分类器进行分类,得到数据属于当前类的概率,选择其中概率最大的一个类别作为最终的预测结果。
  
 其中,one-vs-rest更加受到青睐,因为它更快并且结果也很不错。
  
 在内核岭回归中我们有谈到过支持向量回归,支持向量分类与支持向量回归都是只依赖于训练集的子集,因为构建模型的代价函数忽略任何接近于模型预测的训练数据。支持向量回归也有三种不同的形式:SVR、NuSVR和LinearSVR。
  
 OneClassSVM实现了一个用于无监督的孤立点检测。
  
 支持向量机是个强大的工具,不过它的计算和存储空间要求也会随着要训练向量的数目增加而快速增加。 SVM的核心是一个二次规划问题,是将支持向量和训练数据的其余部分分离开来。一般情况下复杂度为  ~  。
  
 惩罚系数C的设置:C定义了你对噪声的重视程度,如果数据中有很多噪声,我们应该减小C,防止模型过拟合。
  
 gamma的设置:gamma 定义了单一 训练样本能起到多大的影响,这样就会导致只有某些训练样本就能占领主导地位,对于训练集可能效果会很好,但是对于测试集效果很差,即会导致过拟合,降低gamma能有效降低过拟合的风险,与C一样。
  
 推荐一个网站,作者将SVM讲述的很好:   SVM入门(一)至(三)Refresh - Jasper's Java Jacal - BlogJava 
  
 参考:《Scikit-Learn官方API》
  
 如有错误,请指正;如有疑问,请留言。