赞
踩
本篇文章旨在让完全不懂的小伙伴对该算法有一个初步认识与理解,只适用于小白,如果想深入了解,可以参考本文的参考文章
SVM算法,全称支持向量机(Support Vector Machine,SVM)算法,他是一种强大的监督学习算法,广泛应用于分类和回归问题。它的独特之处在于其优化目标是找到一个能够最大化分类边界(或回归函数)与最近训练样本之间的间隔的超平面。
简单来说,就是寻找一个最优的决策边界(超平面),这个边界距离两个类别的最近的样本最远,使得间距最大化。
样本中距离超平面最近的一些点,叫做支持向量,由于较远的点与不影响超平面的建立,其主要通过支持向量建立而来。如下图所示:
下面分两种不同的情况来介绍此算法
线性可分就是可以用一个线性函数把两类样本分开,比如二维空间中的直线、三维空间中的平面以及高维空间中的线性函数。用二维空间举例,如下图就是一个线性可分的两类样本(蓝色球和红色球),我们可以找到一条直线,将两个类别分开:
理论上,我们可以找到很多可以将两类分开的超平面:
那么如何选择一条最合适的超平面,就是svm算法要解决的问题:
在现实世界的问题中,样本往往不是完全线性可分的,简单来说就是你一个数据集不可以通过一个线性分类器(直线、平面)来实现分类,例如如下图所示的情况,我们从二维空间,很难找到一个超平面,能将下图的红色方框和绿色小球分开
作用:
往往在低维空间中,样本是线性不可分问题,但在高维空间中,样本可能是线性可分的。根据这一思想,我们就可提升空间的维度。核函数可以将数据映射到一个更高维的特征空间,使得在这个新的空间中,数据可能变得线性可分。这样,我们就可以在这个新的空间中构建一个超平面来进行分类。
理解:
在低维空间中,我们有原始特征向量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(∑(αi∗yi∗K(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之间的相似度。
这样一来我们就避开了直接在高维空间中进行计算,并且可以用线性可分的优化思路去解决问题。
常用核函数分类:
通过上述介绍可知,SVM适用于线性可分问题和非线性可分问题,可以应用在许多实际场景中,以下是几个具体的实际应用场景,以及相应的数据说明:
文本分类:SVM可用于将文本数据进行分类,例如将电子邮件分类为垃圾邮件或非垃圾邮件。数据集可以包含已标记的电子邮件,每个电子邮件都有一些特征(如词频、词向量等)和相应的标签(垃圾邮件或非垃圾邮件)。
数据示例:
图像分类:SVM可用于图像分类任务,例如将图像分为不同的类别,如动物、车辆、建筑等。数据集可以包含图像样本及其相应的特征向量,这些特征向量可以是从图像中提取的特征,如颜色直方图、纹理特征等。
数据示例:
生物医学数据分析:SVM在生物医学领域中也有广泛应用,例如基因表达数据的分类和预测。数据集可以包含基因表达数据样本及其对应的分类标签(如肿瘤类型)。基因表达数据通常以基因表达水平的数值表示,可以是来自基因芯片或测序技术的数据。
数据示例:
金融风险评估:SVM可用于金融领域中的风险评估,例如将信贷申请进行分类,判断是否接受或拒绝申请。数据集可以包含申请人的各种特征,如收入、信用历史、债务情况等,以及相应的标签(接受或拒绝)。
数据示例:
虽然SVM是一种强大的分类算法,但也存在一些情况下不适用的场景。以下是一些常见的情况:
优点: SVM在处理高维数据和样本量较小的情况下表现良好,具有较强的泛化能力;通过使用核函数,SVM可以解决非线性分类问题;通过间隔最大化,SVM对噪声数据具有较好的鲁棒性。
缺点: SVM在处理大规模数据时计算复杂度较高;对于大规模数据集,训练时间较长;SVM对于参数的选择和核函数的选择比较敏感,需要进行调优。
[1] 支持向量机通俗导论(理解SVM的三层境界)
[2] 详解支持向量机(Support Vector Machines, SVM)
[3] svm算法 最通俗易懂讲解
[4] 机器学习算法(一)SVM
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。