重温经典之SVM

#1024程序员节|征文#

支持向量机(Support Vector Machine,简称SVM)是一种基于统计学习理论的监督学习模型,主要用于分类和回归分析。以下是对支持向量机算法原理及推导公式的详细解释:

一、支持向量机算法原理

SVM的基本原理是通过寻找一个超平面,将不同类别的样本分开,并最大化两个类别之间的边界(即间隔)。这个超平面由支持向量确定,这些支持向量是离超平面最近的样本点。

  1. 线性可分情况

    • 在n维空间中找到一个分类超平面,将空间上的点分类。可以通过一个直线(在二维空间中)或超平面(在高维空间中)将不同类别的样本分开。
    • 一般而言,一个点距离超平面的远近可以表示为分类预测的确信或准确程度。SVM的目标就是最大化这个间隔值,这样可以使得分类器对于新的、未见过的样本有更好的泛化能力。
    • 那些位于间隔边界上的点,即支持向量,对于确定分类超平面起着决定性的作用。
  2. 线性不可分情况

    • 当遇到线性不可分的样例时,通常的做法是将样例特征映射到高维空间中去。尽管这样做可能会导致维度变得非常高,但通过使用核函数,可以在低维空间进行计算,而将实质上的分类效果表现在高维空间,从而避免了直接在高维空间中的复杂计算。

二、支持向量机推导公式

步骤如下:

  1. 超平面方程

    • 给定数据集T={(x1,y1),(x2,y2),(x3,y3)…},找到一个可以分开数据集的超平面:w∗⋅x+b∗=0。此最优超平面应当使支持向量到超平面上的几何间隔d最大。
  2. 几何间隔与间隔的计算

    • 几何间隔d与间隔u可以用以下公式计算,其中(x, y)为样本点:d=y⋅(w∗⋅x+b∗)⋅1/∥w∥,u=y⋅(w∗⋅x+b∗)。
  3. 拉格朗日函数与对偶优化问题

    • 定义拉格朗日函数:L(w,b,λ)=1/2∥w∥²−∑Ni=1λiyi(w⋅xi+b)+∑Ni=1λi。
    • 根据拉格朗日对偶性,对偶问题是以下极大极小值问题:maxλminw,bL(w,b,λ)。
    • 可以分两步解决:首先求minw,bL(w,b,λ),然后对λ求极大值。
  4. 求解w和b

    • 通过拉格朗日函数分别对w,b求偏导,并令其等于0,整理后可得到w和b的表达式。
    • 最终带入超平面方程即可得到最终分类超平面。

2.1 非线性SVM算法原理

SVM学习的基本想法是求解能够正确划分训练数据集并且几何间隔最大的分离超平面。如下图所示, 

即为分离超平面,对于线性可分的数据集来说,这样的超平面有无穷多个(即感知机),但是几何间隔最大的分离超平面却是唯一的。

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

其中,    为第 i 个特征向量,  为类标记,当它等于+1时为正例;为-1时为负例。再假设训练数据集是线性可分的。

我们首先来考虑最简单的情况,即线性可分,也就是说所有样本都可以被正确的划分。这样划分出来得到的间隔是实实在在的,所以我们把线性可分的情况下的间隔称为硬间隔

首先我们先写出这个分隔平面的公式:

其中x表示一条n维的样本特征组成的向量,是平面的n维法向量,决定平面的方向。虽然从公式上来看和线性回归很像,但是它们之间的本质区别是线性回归是用来拟合label的,而SVM的平面方程是用来确定平面方向的。这里的b就是简单的偏移量,表示平面距离原点的距离。

对于给定的数据集 和超平面,定义超平面关于样本点 的几何间隔为

注:点到直线公式如下:

这里的\left \| \omega \right \|是一个L2范数,我们把它也展开可以写成:\left \| \omega \right \|\sqrt{\sum_{i=1}^{k} \omega {_{i}}^{2}}

 这里我们做一点假设,对于样本当中的点,在分隔平面上方的类别为1,在分隔平面下方的类别为-1。那么我们可以进一步得到wx_{i}+b应该和y_{i}同号**。所以我们可以写成:y_{i}(wx_{i}+b)>0

 我们来观察支持向量,也就是刚好在间隔边缘的点,它们到分割平面的距离刚好是间隔的一半。我们假设这个点的函数值是\gamma,我们把它表示出来可以得到:

我们令新的\omega\hat{}=\tfrac{\omega }{\gamma },新的b^{\hat{}}=\tfrac{b}{\gamma }。也就是说我们通过变形可以将函数值缩放到1,为了方便计算,我们选取恰当的参数,使得间隔刚好为1。既然如此,对于所有的样本点,我们都可以得到y_{i}(wx_{i}+b)\geqslant 1,对于支持向量来说y_{i}(wx_{i}+b)=1

利用这点,我们可以表示出间隔:

\frac{1}{\left \| \omega \right \|^{2}}是一个分数,我们要求它的最大值,也就是求\left \| \omega \right \|^{2}的最小值。我们想要在线性可分的基础上让这个间隔尽量大,所以这是一个带约束的线性规划问题,我们把整个式子写出来: 

 就是我们希望得到\left \| \omega \right \|最小,为什么不直接求\left \| \omega \right \|最小,而非要求\left \| \omega \right \|^{2}最小呢?原因就在它的解法上,因为我们要将它转化成一个凸二次规划问题(Quadratic Programming)。

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

首先,我们将有约束的原始目标函数转换为无约束的新构造的拉格朗日目标函数(通过拉格朗日函数将约束条件融合到目标函数里去,从而只用一个函数表达式便能清楚的表达出我们的问题)

其中 \alpha _{i}为拉格朗日乘子,且 \alpha _{i}\geq 0.现在我们令

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

此时,将 \alpha _{i} 设置为无穷大,则 \Theta \left ( \omega \right ) 也为无穷大。

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

 

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

 于是原约束问题就等价于

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

要有 ,需要满足两个条件:

① 优化问题是凸优化问题

② 满足KKT条件

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

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

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

 对\alpha的极大,即是对偶问题

把目标式子加一个负号,将求解极大转换为求解极小

 现在我们的优化问题变成了如上的形式。对于这个问题,我们有更高效的优化算法,即序列最小优化(SMO)算法。这里暂时不展开关于使用SMO算法求解以上优化问题的细节,下一篇文章再加以详细推导。

我们通过这个优化算法能得到 \alpha ^{*} ,再根据 \alpha ^{*},我们就可以求解出 \omega和 b,进而求得我们最初的目的:找到超平面,即”决策平面”。

另外,根据前面的推导,还有下面两个式子成立

由此可知在 \alpha ^{*}中,至少存在一个 \alpha _{j}^{*}>0(反证法可以证明,若全为0,则 \omega =0 ,矛盾),对此 j 有

 因此可以得到

对于任意训练样本 \left ( x^{_{i}},y_{j} \right ),总有 \alpha _{i}^{*}=0或者 y_{j}(\omega *x_{j} +b)=1 。若 \alpha _{i}^{*}=0,则该样本不会在最后求解模型参数的式子中出现。若 \alpha _{i}^{*}>0,则必有 y_{j}(\omega *x_{j} +b)=1 ,所对应的样本点位于最大间隔边界上,是一个支持向量。这显示出支持向量机的一个重要性质:训练完成后,大部分的训练样本都不需要保留,最终模型仅与支持向量有关。

到这里都是基于训练集数据线性可分的假设下进行的,但是实际情况下几乎不存在完全线性可分的数据,为了解决这个问题,引入了“软间隔”的概念,即允许某些点不满足约束

采用hinge损失,将原优化问题改写为

 其中 为“松弛变量”, ,即一个hinge损失函数。每一个样本都有一个对应的松弛变量,表征该样本不满足约束的程度。 C > 0称为惩罚参数, C 值越大,对分类的惩罚越大。跟线性可分求解的思路一致,同样这里先用拉格朗日乘子法得到拉格朗日函数,再求其对偶问题。

综合以上讨论,我们可以得到线性支持向量机学习算法如下:

2.2 非线性SVM算法原理

对于输入空间中的非线性分类问题,可以通过非线性变换将它转化为某个维特征空间中的线性分类问题,在高维特征空间中学习线性支持向量机。由于在线性支持向量机学习的对偶问题里,目标函数和分类决策函数都只涉及实例和实例之间的内积,所以不需要显式地指定非线性变换而是用核函数替换当中的内积。核函数表示,通过一个非线性转换后的两个实例间的内积。具体地, 

K(x,z)是一个函数,或正定核,意味着存在一个从输入空间到特征空间的映射 \phi (x)

 ,对任意输入空间中的 x,z,有

 

在线性支持向量机学习的对偶问题中,用核函数 K(x,z)替代内积,求解得到的就是非线性支持向量机 

综合以上讨论,我们可以得到非线性支持向量机学习算法如下:

 

三、支持向量

在支持向量机(SVM)中,支持向量是一个核心概念,它们对于确定分类超平面的位置至关重要。以下是对SVM中支持向量概念的详细解释:

3.1、支持向量的定义

支持向量是指在SVM中,距离分类超平面最近的那些训练样本点。这些点对于构建SVM模型具有关键作用,因为它们直接决定了分类超平面的位置和方向。在二分类问题中,支持向量通常位于两个类别的边界上,即分类超平面的两侧。

3.2、支持向量的特性

  1. 关键性:支持向量是SVM模型中的关键数据点,它们直接决定了分类超平面的位置。没有这些点,就无法确定分类超平面。
  2. 最近性:支持向量是距离分类超平面最近的点,这意味着它们对于分类的决策边界具有最大的影响力。
  3. 稀疏性:在大多数情况下,支持向量只占训练样本集的一小部分。这意味着SVM模型在训练过程中主要依赖于这些少量的关键数据点,而不是整个训练样本集。

3.3、支持向量与分类超平面的关系

SVM的目标是找到一个最优的分类超平面,使得不同类别的样本点被尽可能分开,并且分类间隔最大化。这个最优分类超平面是由支持向量确定的。具体来说,分类超平面会穿过或尽可能接近支持向量,并且与支持向量保持最大的间隔。这样,当新的样本点到来时,它们可以根据距离分类超平面的远近来判断所属的类别。

3.4、支持向量在SVM中的作用

  1. 确定分类边界:支持向量直接决定了SVM的分类边界,即分类超平面的位置和方向。
  2. 提高模型泛化能力:由于SVM主要依赖于支持向量进行分类决策,因此它对于噪声和异常点具有较好的鲁棒性。这有助于提高模型的泛化能力,使其能够在新的、未见过的样本上表现良好。
  3. 简化模型复杂度:由于支持向量只占训练样本集的一小部分,因此SVM模型在训练过程中可以更加高效地处理数据。这有助于降低模型的复杂度,提高计算效率。

综上所述,支持向量是SVM中的一个核心概念,它们对于确定分类超平面的位置和方向至关重要。通过利用支持向量的特性,SVM能够构建出具有高效、鲁棒和泛化能力的分类模型。

 四、核函数

支持向量机(SVM)是一种强大的监督学习算法,广泛应用于分类和回归任务中。在SVM中,核函数(Kernel Function)是一个核心概念,它允许SVM在高维特征空间中工作,从而有效处理非线性问题。

4.1基本概念

  1. 线性可分与线性不可分
    • 线性可分:数据点可以通过一个线性决策边界(即超平面)完全分开。
    • 线性不可分:数据点不能通过一个线性决策边界完全分开。
  2. 特征映射(Feature Mapping)
    • 在原始特征空间中,数据可能线性不可分。通过特征映射,数据点被映射到一个高维特征空间,在高维空间中数据可能变得线性可分。

4.2核函数的作用

核函数允许SVM在不显式计算特征映射的情况下,直接在输入空间中计算高维特征空间中的内积。这样,可以高效处理高维数据,同时避免显式计算高维特征向量,减少了计算复杂度和存储需求。

4.3常见的核函数

  1. 线性核(Linear Kernel)
    K(x,y)=x⋅y
    • 直接使用输入空间的内积,适用于线性可分问题。
  2. 多项式核(Polynomial Kernel)
    K(x,y)=(γx⋅y+c)d
    • 将输入映射到多项式特征空间,适用于非线性可分但具有多项式关系的问题。
  3. 径向基函数核(RBF Kernel,也称为高斯核)
    K(x,y)=exp(−γ∥x−y∥2)
    • 将数据映射到无限维特征空间,通过调整参数 γ 可以控制模型的复杂度,适用于大多数非线性问题。
  4. Sigmoid核(Sigmoid Kernel)
    K(x,y)=tanh(γx⋅y+c)
    • 类似于神经网络中的激活函数,适用于某些特定类型的非线性问题。

4.4核函数的选择

选择合适的核函数及其参数对于SVM的性能至关重要。通常,选择核函数时需要考虑以下因素:

  • 数据特性:根据数据的分布和特征选择合适的核函数。
  • 模型复杂度:不同核函数和参数会导致不同的模型复杂度,需要权衡过拟合和欠拟合。
  • 计算效率:不同核函数的计算复杂度不同,需要选择计算效率高的核函数。

4.5核技巧(Kernel Trick)

核技巧是SVM的核心思想之一,它允许SVM在高维特征空间中工作,而不需要显式计算特征映射。具体来说,通过核函数,可以直接计算高维特征空间中的内积,从而避免了显式地计算特征映射和存储高维特征向量。

4.6总结

核函数是SVM中的核心概念,它允许SVM在高维特征空间中处理非线性问题。通过选择合适的核函数和参数,可以显著提高SVM的性能。在实际应用中,需要根据数据特性和模型需求来选择合适的核函数。

五、超平面

在支持向量机(SVM)中,超平面是一个核心概念,它用于在样本空间中划分不同类别的数据点。以下是对SVM中超平面概念的详细解释:

5.1、超平面的定义

超平面是n维欧氏空间中余维度等于一的线性子空间,也就是(n-1)维的线性子空间。在二维空间中,超平面就是一条直线;在三维空间中,超平面就是一个平面;当维度大于三维时,我们才称之为超平面。超平面由法向量W和偏移量b决定,其公式表示为:W·x + b = 0,其中W是超平面的法向量,决定了超平面的方向;x是样本空间中的点;b是一个实数,代表超平面到原点的距离(但需注意,在某些定义下,超平面可能不过原点)。

5.2、超平面在SVM中的作用

在SVM中,超平面用于划分不同类别的数据点。SVM的目标是找到一个最优的超平面,使得不同类别的数据点尽可能地被正确地划分到超平面的两侧。这个最优的超平面被称为最大间隔超平面,因为它能够最大化两类数据点到超平面的距离(即间隔)。

5.3、最大间隔超平面的求解

为了找到最大间隔超平面,SVM采用了以下策略:

  1. 定义间隔:对于任意一个数据点,其到超平面的距离可以表示为点到超平面的距离公式。SVM通过最大化这个距离来找到最优的超平面。
  2. 优化问题:SVM将寻找最大间隔超平面的问题转化为一个凸二次规划问题。这个优化问题的目标是最大化间隔,同时满足所有数据点都被正确分类的约束条件。
  3. 支持向量:在求解优化问题的过程中,我们会发现只有少数几个数据点(即支持向量)对最优超平面的位置有影响。这些支持向量是距离超平面最近的数据点,它们决定了超平面的位置和方向。

5.4、核函数与超平面的关系

在SVM中,核函数用于将原始输入空间中的数据点映射到一个高维特征空间。在这个高维特征空间中,原本线性不可分的数据点可能变得线性可分。因此,核函数允许SVM在更高维的空间中找到一个最优的超平面来划分数据点。需要注意的是,虽然核函数改变了数据的表示方式,但最终的决策边界(即超平面)仍然是在原始输入空间中定义的。

综上所述,超平面在SVM中扮演着至关重要的角色。它是划分不同类别数据点的关键工具,也是SVM算法的核心概念之一。通过最大化间隔和引入核函数等技术手段,SVM能够高效地处理各种分类问题。

六、软间隔

在支持向量机(SVM)中,软间隔是一个相对于硬间隔而言的概念,它允许在训练过程中某些样本不完全满足分类要求,从而提高了模型的灵活性和适应性。以下是对SVM中软间隔概念的详细解释:

6.1、软间隔的定义

软间隔是指在SVM的训练过程中,允许部分样本在超平面附近有一定的偏差,即不完全满足函数间隔大于等于1的约束条件。这种偏差是通过引入松弛变量来实现的,松弛变量为每个样本点引入了一个可以容忍的误差范围。在优化函数中,除了考虑点到平面的间隔距离外,还考虑了误分类的损失个数,这个损失个数就是通过松弛变量来衡量的。

6.2、软间隔的适用场景

  1. 训练数据近似线性可分:当数据集线性不可分时,通过核函数将数据映射到高维空间,使其在较高维度的空间中呈现线性可分状态。在这种场景下,软间隔可以最大化分类间隔,提高分类准确性。
  2. 训练数据线性不可分:当数据集线性不可分时,硬间隔支持向量机无法解决问题。此时,软间隔允许部分样本在超平面附近有一定的偏差,从而使模型在训练数据上表现出更好的拟合效果。
  3. 复杂数据集分类:软间隔支持向量机适用于中小型复杂数据集的分类任务。通过引入软间隔,可以提高模型的泛化能力,降低过拟合的风险。

6.3、软间隔与惩罚系数的关系

在软间隔支持向量机中,惩罚系数(C)是一个重要的参数。惩罚系数用于平衡分类间隔与误分类代价之间的关系。较大的惩罚系数会导致更严格的分类边界,从而减少误分类的代价;而较小的惩罚系数则允许样本在超平面附近有一定的偏差,提高模型的灵活性。通过调整惩罚系数,可以实现不同程度的精度与泛化能力之间的平衡。

6.4、软间隔的优化问题

软间隔的优化问题是一个凸二次规划问题,其目标函数包括两部分:一部分是点到平面的间隔距离(即硬间隔部分),另一部分是误分类的损失个数(即软间隔部分)。在优化过程中,需要找到一组最优的解,使得目标函数达到最小值,同时满足所有约束条件。这个最优解对应的就是最优超平面和最优的松弛变量。

6.5、软间隔的优缺点

优点

  • 提高了模型的灵活性和适应性,能够处理线性不可分问题。
  • 通过调整惩罚系数,可以实现不同程度的精度与泛化能力之间的平衡。

缺点

  • 相对于硬间隔而言,软间隔可能会引入一些误分类的样本,导致分类精度略有下降。
  • 惩罚系数的选择对模型性能有较大影响,需要仔细调整。

综上所述,软间隔是SVM中一个重要的概念,它允许在训练过程中部分样本不完全满足分类要求,从而提高了模型的灵活性和适应性。通过调整惩罚系数和引入松弛变量等技术手段,SVM能够高效地处理各种分类问题。

参考:​​​​​​

  1. https://zhuanlan.zhihu.com/p/213778201
  2. https://zhuanlan.zhihu.com/p/257866920
  3. https://zhuanlan.zhihu.com/p/199224848
  4. 【超详细】支持向量机(SVM)数学推导_支持向量机推导-CSDN博客
  5. 机器学习之支持向量机(SVM)原理详解、公式推导(手推)、面试问题、简单实例(sklearn调包)_sklearn svm-CSDN博客
  6. 支持向量机(SVM)——原理篇
  7. Python3《机器学习实战》学习笔记(八):支持向量机原理篇之手撕线性SVM_python蓝色w-CSDN博客
  8. 支持向量机通俗导论(理解SVM的三层境界)-CSDN博客
  9. C++版OpenCV使用支持向量机svm进行mnist手写数字识别-腾讯云开发者社区-腾讯云
  10. https://zhuanlan.zhihu.com/p/60370241

猜你喜欢

转载自blog.csdn.net/a8039974/article/details/143190527