1、支持向量机算法介绍
支持向量机(Support Vector Machine,SVM)是一种基于统计学习理论的模式识别方法, 属于有监督学习模型,主要用于解决数据分类问题。SVM将每个样本数据表示为空间中的点,使不同类别的样本点尽可能明显地区分开。通过将样本的向量映射到高维空间中,寻找最优区分两类数据的超平面,使各分类到超平面的距离最大化,距离越大表示SVM的分类误差越小。通常SVM用于二元分类问题,对于多元分类可将其分解为多个二元分类问题,再进行分类,主要的应用场景有图像分类、文本分类、面部识别、垃圾邮件检测等领域。
☀关于支持向量机的理解,有3个问题,请进一步解释。
☀(1)空间中的点,这个空间是什么?
在支持向量机(SVM)的语境中,这个“空间”是特征空间。假设我们有一个数据集,每个样本有多个特征。例如,在一个简单的二维数据集(如判断一个水果是苹果还是橙子),我们可能有两个特征:水果的大小和颜色深浅。如果把水果的大小作为x轴,颜色深浅作为y轴,那么每个水果样本就可以用这个二维平面(空间)中的一个点来表示。
当有更多的特征时,比如再加上水果的甜度、硬度等特征,这个空间就会变成三维、四维甚至更高维度。这个空间的维度取决于数据集中样本的特征数量。一般来说,空间中的每个维度对应着一个特征,这样就可以通过这些维度来定位样本在这个空间中的位置,也就是用空间中的点来表示样本数据。
☀(2)怎么将样本的向量映射到高维空间中,高维空间是什么?
①高维空间的概念:高维空间是相对于我们日常所熟悉的二维或三维空间而言的。在SVM中,高维空间是一个数学抽象概念。以一个简单的例子来说明,如果我们在二维平面中有一些线性不可分的数据,比如一个圆内的点属于一类,圆外的点属于另一类。在二维空间中,很难找到一个直线(超平面)来划分这两类数据。但是如果我们把这些数据映射到三维空间,通过一个合适的函数(比如),在三维空间中这些数据可能就变得线性可分了。高维空间就是具有更多维度的空间,其维度数量取决于我们使用的映射函数和数据的特性。
②映射方法:通常使用核函数(Kernel Function)来将样本向量映射到高维空间。常见的核函数有线性核函数、多项式核函数、高斯径向基核函数(RBF)等。对于线性核函数,它在一定程度上可以看作是一种简单的映射,在某些线性可分的数据情况下可以很好地工作。而对于高斯径向基核函数,它能够将数据映射到一个无穷维的空间。这个函数通过计算两个样本点之间的距离,将其转换为一个新的表示形式,从而实现了从低维空间到高维空间(这里是无穷维)的映射。
☀(3)什么是超平面,如何寻找 ?
①超平面的概念:在二维空间中,超平面是一条直线,它可以将平面分成两个部分。例如,对于一个简单的二元分类问题,在平面上的直线就是一个超平面,直线一侧的点可以被归为一类,另一侧的点归为另一类。在三维空间中,超平面是一个平面,如。一般地,在维空间中,超平面是一个维的子空间。它的方程可以写成,其中是权重向量,是样本向量,是偏置项。
②寻找超平面的方法:SVM的目标是找到一个最优的超平面,使得两类数据之间的间隔(Margin)最大化。这个间隔是指从超平面到最近的样本点(支持向量)的距离。通过求解一个优化问题来找到这个超平面。具体来说,我们要最小化,同时满足约束条件。这个优化问题可以通过一些优化算法,如序列最小优化(Sequential Minimal Optimization,SMO)算法来求解,从而得到最优的超平面。
2、支持向量机算法实现
支持向量机模型由简单到复杂分为以下三种:
①线性可分支持向量机(Linear Support Vector Machine In Linearly Separable Case),有一些苹果和橙子,把它们的大小、颜色深浅当作特征,在二维平面上,能找到一条直线将苹果和橙子完全分开,每个水果都能精准归类,这就是线性可分,这条直线就是分类超平面,此为硬间隔最大化,这便是线性可分支持向量机的作用。
②线性支持向量机(Linear Support Vector machine),有一堆水果,多数苹果和橙子能用一条直线大致分开,但有几个坏果混在对面堆里。这时引入松弛因子,允许少量分错,找到一条尽量分对多数水果的直线,实现软间隔最大化,得到的就是线性支持向量机,应对近似线性可分样本。
③非线性支持向量机(Non-Linear Support Vector Machine),看一群形状各异的云朵和飞鸟,在平面上画直线根本分不开。利用核技术,将它们 “变” 到高维空间,在那可能云朵聚一堆、飞鸟聚一堆,再用软间隔最大化找到个曲面分开它们,这就是非线性支持向量机,处理非线性可分样本。
在实际应用中很少有线性问题,支持向量机模型应用最多的是第三种模型。然而,复杂模型是简单模型的改进,而且通过核函数映射就能将低维的非线性问题转化为高维空间的线性问题。
(1)线性可分支持向量机
首先假设有两分类数据,如下图所示。
现在要找出一条最佳的分割线,将两类数据分隔开。对于线性可分两分类数据,支持向量机就是条直线,对于高维数据点就是一个超平面,下图所示的三条直线都可以将上图中的两类数据分开。
除了a、b、c外还有无数条分割线,那么,在这些分割线中哪条是最完美的呢?目标是选择一条具有较强分类能力的直线,即较稳定的分类结果和较强的抗噪声能力。
假如在上图中又增加了一些数据,如下图所示。
由于新增了样本数据,相对于直线b而言,直线a与c对样本变化的适应性变差,使用直线a进行分类,标记的圆形点会被分到三角形中,使用直线c进行分类,标记的三角形点会被分到圆形中。 如何找到最优分类数据的分割线,使得具有最优的数据分类能力呢?这条分界线要尽可能地远离两类数据点,即数据集的边缘点到分界线的距离d最大,这里虚线穿过的边缘点就叫作支持向量,分类间隔2d,如下图所示。
(下图中,虚线共穿过了3个点,那么共有3个支持向量)
这里的数据点到超平面的距离就是间隔(margin),当间隔越大,这条分割线(分类器)也就越健壮,当有新的数据点的时候,使用这条分割线得到的分类结果也就越可信。
假设b为最优分割线,那么此分割线方程为:
转化成向量形式:
只是在二维形式上的表示,如果扩展到n维,那么将变成:
①x代表样本的特征向量,n表示特征的数量,不同的应用场景下特征的数量和具体内容会有所不同。
②w代表权重向量,这些权重值反映了各个特征在分类决策中的重要程度。
③γ是偏置项,用于调整超平面的位置,使得超平面能够更好地对不同类别的样本进行分类。
可以将超平面方程写成更一般的表达形式:
本次线性可分支持向量机的内容已讲解完毕,下次继续支持向量机知识点的讲解。