当前位置:   article > 正文

经典机器学习算法之SVM算法

svm算法

本篇文章旨在让完全不懂的小伙伴对该算法有一个初步认识与理解,只适用于小白,如果想深入了解,可以参考本文的参考文章


一、算法介绍

1、SVM简介

SVM算法,全称支持向量机(Support Vector Machine,SVM)算法,他是一种强大的监督学习算法,广泛应用于分类和回归问题。它的独特之处在于其优化目标是找到一个能够最大化分类边界(或回归函数)与最近训练样本之间的间隔的超平面。
简单来说,就是寻找一个最优的决策边界(超平面),这个边界距离两个类别的最近的样本最远,使得间距最大化。

2、支持向量

样本中距离超平面最近的一些点,叫做支持向量,由于较远的点与不影响超平面的建立,其主要通过支持向量建立而来。如下图所示:
5a8532fa2b1ae82e8621f3aae2d1f71.jpg

二、算法分析

下面分两种不同的情况来介绍此算法

1、线性可分情况

① 线性可分的理解

线性可分就是可以用一个线性函数把两类样本分开,比如二维空间中的直线、三维空间中的平面以及高维空间中的线性函数。用二维空间举例,如下图就是一个线性可分的两类样本(蓝色球和红色球),我们可以找到一条直线,将两个类别分开:
image.pngimage.png

② 找到最优的超平面

理论上,我们可以找到很多可以将两类分开的超平面:
image.png
那么如何选择一条最合适的超平面,就是svm算法要解决的问题:
image.png

  • 求出数据集中每个样本 x ( n ) x^{(n)} x(n)到超平面的距离,其中 γ ( n ) γ^{(n)} γ(n)为整个数据集所有样本到超平面的距离:

image.png

  • 定义间隔 γ γ γ整个数据集所有样本到超平面的最短距离:

image.png

  • 根据最小距离最大的原则,寻找这个超平面的问题就可以转换成一个数学问题:在保证 γ ( n ) γ^{(n)} γ(n) γ γ γ的前提下,求 γ γ γ的最大值:

image.png

  • 利用拉格朗日乘数法,可以求得这个超平面:

1957177dba303c68a0df7cd2f3a0a66.jpg

2、线性不可分情况

① 线性不可分的理解

在现实世界的问题中,样本往往不是完全线性可分的,简单来说就是你一个数据集不可以通过一个线性分类器(直线、平面)来实现分类,例如如下图所示的情况,我们从二维空间,很难找到一个超平面,能将下图的红色方框和绿色小球分开
image.png

② 核函数

作用:
往往在低维空间中,样本是线性不可分问题,但在高维空间中,样本可能是线性可分的。根据这一思想,我们就可提升空间的维度。核函数可以将数据映射到一个更高维的特征空间,使得在这个新的空间中,数据可能变得线性可分。这样,我们就可以在这个新的空间中构建一个超平面来进行分类。
image.png
理解:
在低维空间中,我们有原始特征向量x和y。在高维空间中,我们用ϕ(x)和ϕ(y)表示高维空间的特征向量。
那么,高维空间中的决策函数可表示为:

f ( x ) = w ⋅ ϕ ( x ) + b f(x) = w · ϕ(x) + b f(x)=wϕ(x)+b

如果要显示的计算高维特征向量ϕ(x),会因复杂的计算导致计算效率变低,所以引入核函数K,它接受两个输入,并计算返回它们之间的相似度,目的是通过计算数据点之间的相似度来解决非线性分类问题,而无需显式地计算高维特征向量ϕ(x)。

K ( x , y ) = ϕ ( x ) T ϕ ( y ) K(x,y) = ϕ(x)^Tϕ(y) K(x,y)=ϕ(x)Tϕ(y)

f ( x ) = w ⋅ ϕ ( x ) + b = w ⋅ ( K ( x , x 1 ) , K ( x , x 2 ) , . . . , K ( x , x n ) ) + b f(x) = w · ϕ(x) + b = w · (K(x, x_1), K(x, x_2), ..., K(x, x_n)) + b f(x)=wϕ(x)+b=w(K(x,x1),K(x,x2),...,K(x,xn))+b

其中, x 1 , x 2 , . . . , x n x_1, x_2, ..., x_n x1,x2,...,xn是训练集中的样本点。

所以,决策函数为(以二分类为例):

f ( x ) = s i g n ( ∑ ( α i ∗ y i ∗ K ( x i , x ) ) + b ) f(x) = sign(∑(α_i * y_i * K(x_i, x)) + b) f(x)=sign((αiyiK(xi,x))+b)

其中:

  • α i α_i αi是支持向量的拉格朗日乘子( Lagrange multipliers),用于确定支持向量的权重;

  • y i y_i yi是对应于支持向量的类别标签;

  • x i x_i xi是支持向量;

  • b b b是偏置项;

  • K ( x i , x ) K(x_i, x) K(xi,x)是核函数,用于计算支持向量和新数据点x之间的相似度。

这样一来我们就避开了直接在高维空间中进行计算,并且可以用线性可分的优化思路去解决问题。

常用核函数分类:
image.png

三、应用分析

1、适用场景

通过上述介绍可知,SVM适用于线性可分问题和非线性可分问题,可以应用在许多实际场景中,以下是几个具体的实际应用场景,以及相应的数据说明:

  1. 文本分类:SVM可用于将文本数据进行分类,例如将电子邮件分类为垃圾邮件或非垃圾邮件。数据集可以包含已标记的电子邮件,每个电子邮件都有一些特征(如词频、词向量等)和相应的标签(垃圾邮件或非垃圾邮件)。

    数据示例:

    • 特征:电子邮件的词频向量,每个维度表示一个词在邮件中的出现次数。
    • 标签:垃圾邮件(1)或非垃圾邮件(-1)。
  2. 图像分类:SVM可用于图像分类任务,例如将图像分为不同的类别,如动物、车辆、建筑等。数据集可以包含图像样本及其相应的特征向量,这些特征向量可以是从图像中提取的特征,如颜色直方图、纹理特征等。

    数据示例:

    • 特征:从图像中提取的特征向量,如颜色直方图、纹理特征等。
    • 标签:图像所属的类别,如动物(1)、车辆(2)、建筑(3)等。
  3. 生物医学数据分析:SVM在生物医学领域中也有广泛应用,例如基因表达数据的分类和预测。数据集可以包含基因表达数据样本及其对应的分类标签(如肿瘤类型)。基因表达数据通常以基因表达水平的数值表示,可以是来自基因芯片或测序技术的数据。

    数据示例:

    • 特征:基因表达水平的数值,表示基因在样本中的表达量。
    • 标签:样本所属的肿瘤类型,如乳腺癌(1)、肺癌(2)等。
  4. 金融风险评估:SVM可用于金融领域中的风险评估,例如将信贷申请进行分类,判断是否接受或拒绝申请。数据集可以包含申请人的各种特征,如收入、信用历史、债务情况等,以及相应的标签(接受或拒绝)。

    数据示例:

    • 特征:申请人的各种特征,如收入、信用历史、债务情况等。
    • 标签:申请的结果,接受(1)或拒绝(-1)。
      这些是仅举几个例子,实际上SVM在许多领域中都有应用,包括图像处理、自然语言处理、生物信息学、推荐系统等。根据具体的应用领域和问题,数据的特征和标签会有所不同,但SVM的基本原理和方法都可以应用于这些领域。

2、不适用场景

虽然SVM是一种强大的分类算法,但也存在一些情况下不适用的场景。以下是一些常见的情况:

  1. 大规模数据集:当数据集非常大时,SVM的计算复杂度会随着数据量的增加而显著增加。由于SVM需要解决二次规划问题,对于大规模数据集,计算时间和内存要求可能会非常高,导致训练时间过长甚至无法完成。
  2. 高维稀疏数据:当数据集的特征维度非常高,并且大部分特征都是稀疏的(即大部分特征值为零)时,SVM的性能可能下降。由于高维稀疏数据的特点,SVM的计算复杂度会进一步增加,并且可能导致模型过拟合。
  3. 数据集包含噪声和重叠样本:当数据集中存在大量噪声或类别重叠的样本时,SVM的分类性能可能会下降。SVM的目标是找到一个最优的超平面,将不同类别的样本分开,但如果存在噪声或类别重叠,可能会导致决策边界不稳定或错误分类。
  4. 快速增长的数据集:如果数据集在训练过程中不断增长,SVM无法直接适应新数据的增加。每当新数据加入时,通常需要重新训练整个模型,这在大规模数据集上是低效的。
  5. 类别不平衡问题:当数据集中不同类别的样本数量严重不平衡时,SVM的表现可能受到影响。由于SVM追求最大间隔的目标,可能对样本数量较少的类别给予较少的关注,导致分类器对少数类别的预测效果较差。
    总的来说,SVM在处理大规模数据集、高维稀疏数据、噪声和重叠样本、快速增长的数据集以及类别不平衡问题时可能不适用。在这些情况下,其他算法或技术可能更适合处理这些问题。

3、优缺点

优点: SVM在处理高维数据和样本量较小的情况下表现良好,具有较强的泛化能力;通过使用核函数,SVM可以解决非线性分类问题;通过间隔最大化,SVM对噪声数据具有较好的鲁棒性。
缺点: SVM在处理大规模数据时计算复杂度较高;对于大规模数据集,训练时间较长;SVM对于参数的选择和核函数的选择比较敏感,需要进行调优。

参考

[1] 支持向量机通俗导论(理解SVM的三层境界)
[2] 详解支持向量机(Support Vector Machines, SVM)
[3] svm算法 最通俗易懂讲解
[4] 机器学习算法(一)SVM

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/140912
推荐阅读
相关标签
  

闽ICP备14008679号