SVM

English: en

分类SVM算法理论

1. 基本SVM

1.1. 问题描述

分类问题的核心在于找到一个能够有效分割不同类别样本的决策边界。在二维空间中,这个决策边界可以是一个线,三维空间中是一个平面,而在高维空间中则是一个超平面。对于线性可分的情况,假设数据集由两类标签组成,目标是找到一个最优超平面,将两类数据分开,并且尽可能增大两类样本到超平面的距离(即间隔)。这样不仅可以使分类更加准确,也增强了模型对噪声数据的鲁棒性。

1.2. SVM的工作原理

SVM的核心思想是在数据空间中寻找一个能够最大化间隔的超平面。该超平面由一组特定的样本点(即支持向量)定义,这些支持向量是离超平面最近的样本点。SVM的目标是最大化超平面与支持向量之间的距离(即间隔),从而使分类模型更具有泛化性。

假设数据集包含N 个样本点 (xi,yi),其中 xiRd 表示第 i 个样本的特征向量,yi{1,1} 表示样本的标签。SVM的目标是寻找一个线性决策函数:

f(x)=wx+b

其中,w 是权重向量,b 是偏置项,使得函数 f(x)=0 对应于分割超平面。对于满足线性可分的数据,SVM希望找到最优的wb,使得不同类别的样本点离分割超平面的间隔最大。

1.3. 优化目标

要实现间隔最大化,SVM构建的优化目标如下:

maximizeM=2w

即最大化超平面到支持向量的间隔M。通过适当的变换,SVM的优化问题可以被表示为一个约束条件下的二次优化问题:

min12w2
s.t.yi(wxi+b)1,i=1,2,,N

上式中,约束条件yi(wxi+b)1 表示所有样本点的类别在超平面的约束下得到正确分类,且距离不小于1。

1.4. SVM求解方法

SVM的求解方法通常使用拉格朗日乘子法和KKT(Karush-Kuhn-Tucker)条件,将约束优化问题转化为无约束优化问题。引入拉格朗日乘子αi 后,目标函数变为:

L(w,b,α)=12w2i=1Nαi[yi(wxi+b)1]

通过对L(w,b,α) 关于 wb 求偏导并令其为0,可以得到对偶问题。最终的对偶优化目标为:

maxi=1Nαi12i=1Nj=1Nαiαjyiyj(xixj)
s.t.i=1Nαiyi=0,αi0,i=1,2,,N

优化求解得到 α 后,权重向量w 和偏置 b 可以被计算出来:

w=i=1Nαiyixi

然后选取一个支持向量xk计算偏置:

b=ykwxk

一旦得到 wb,我们就可以通过分类决策函数f(x)=sign(wx+b)对新的数据点进行分类。

1.5. 总结

基本SVM的优化目标是找到一个最大化类别间隔的超平面,从而提高模型的鲁棒性和泛化能力。通过拉格朗日对偶问题的求解,SVM能够在训练过程中自动选择最有影响力的样本点(支持向量),最终得到一个分类超平面。

2. 软间隔SVM

在实际问题中,数据往往不是完全线性可分的,可能存在噪声点或重叠区域。为了解决这一问题,SVM引入了软间隔(Soft Margin)概念。软间隔SVM允许在分类边界周围存在一定的误分类样本点,从而平衡分类精度和模型的泛化能力。通过添加一个松弛变量ξ,软间隔SVM的目标函数可以表示为:

min12w2+Ci=1nξi

其中C 是惩罚参数,用于控制误分类的容忍度。较大的 C值意味着模型更重视分类准确性,尽量减少误分类,但可能导致过拟合;较小的 C 值则更倾向于增大间隔,允许更多误分类,从而增强模型的泛化能力。

3. 核技巧

对于非线性可分的数据,SVM使用核技巧(Kernel Trick)来将数据映射到高维空间,以实现线性可分。在高维空间中,SVM可以通过线性分离方法对复杂的非线性数据进行分类。常用的核函数包括线性核、多项式核、径向基函数(RBF)核和 Sigmoid 核。

核函数的引入允许 SVM 将非线性问题转化为线性问题,从而极大地扩展了 SVM 的应用范围。常用的核函数形式为:

K(xi,xj)=ϕ(xi)ϕ(xj)

其中 ϕ(x) 是将原始特征空间映射到高维空间的映射函数。核技巧不需要显式计算高维映射,只需通过核函数直接计算特征之间的相似度,因此计算效率较高。

核函数的选择和参数的设置将直接影响SVM分类模型的表现,需要根据具体问题的分布特点来调整。

在支持向量机中,核函数的主要作用是将数据从低维空间映射到高维空间,从而使非线性可分的数据在高维空间中变得线性可分。核函数的选择对于模型的性能有重要影响,不同的核函数适用于不同的数据分布和特征。以下是几种常见的核函数及其适用场景:

3.1. 线性核(Linear Kernel)

表达式K(xi,xj)=xixj

适用场景 线性核是最简单的核函数,适用于线性可分的数据集。在低维空间或者特征数远大于样本数的场景下,线性核表现良好。例如,文本分类、图像分类等高维稀疏特征数据通常适合使用线性核。在这些应用中,数据的类别边界往往接近线性分布,因而线性核能够有效且高效地进行分类。

优缺点

3.2. 多项式核(Polynomial Kernel)

表达式K(xi,xj)=(xixj+c)d

其中,c 是常数项,d 是多项式的阶数。

适用场景 多项式核适用于那些具有复杂交互关系的数据,但数据的非线性不明显。通过调整多项式的阶数 d 和常数项 c,多项式核可以在较低维度上处理具有一定非线性的分类问题。它常用于图像处理和自然语言处理中,例如词向量间复杂关系的建模。

优缺点

3.3. 径向基核(RBF核)或高斯核(Gaussian Kernel)

表达式K(xi,xj)=exp(xixj22σ2)

其中,σ 是用于调节分布范围的参数。

适用场景 RBF核是最常用的核函数,适用于大部分非线性分类问题,尤其在特征空间较为复杂的场景中表现出色。它具有局部化特性,对相似性较高的数据点具有较强的响应。RBF核常用于生物信息学、图像识别和手写数字识别等需要捕捉复杂边界的领域。

优缺点

3.4. Sigmoid核

表达式K(xi,xj)=tanh(αxixj+c)

其中,αc 为常数,tanh 是双曲正切函数。

适用场景 Sigmoid核在某些方面类似于神经网络的激活函数,适用于具有神经网络特性的分类问题。它在二类分类任务中使用较多,适合小规模、非线性不特别显著的分类任务,且数据分布较规则。Sigmoid核可用于识别二类模式或特定分类问题的初步实验,但其表现通常不如RBF核或多项式核。

优缺点

3.5. 拉普拉斯核(Laplacian Kernel)

表达式K(xi,xj)=exp(xixjσ)

适用场景 拉普拉斯核与RBF核相似,但它使用L1距离而不是L2距离,适用于一些具有局部相似性且数据噪声较多的场景。其在信号处理、图像分割等需要对局部特征敏感的应用中更为常见。

优缺点

核函数的选择需要根据数据的分布情况和问题的特性进行调整。在实际应用中,可从简单的核函数(如线性核)开始,如果发现模型表现不佳,则尝试更为复杂的核(如RBF核、多项式核),并结合交叉验证来优化核函数的参数。

回归SVM算法理论

1. 基本回归SVM

1.1 问题描述

回归问题的目标是通过学习训练数据中的模式,预测连续的数值输出。在支持向量回归(Support Vector Regression, SVR)中,模型拟合的目标是找到一个函数,使得绝大多数数据点的预测误差不超过指定的容忍范围 ϵ。与分类SVM不同,SVR不再关注将数据分为不同类别,而是构建一个容忍误差的“间隔管道”,使绝大部分样本点都位于此管道内,并通过优化使模型对噪声和异常点的影响最小化。

在数学表示上,给定数据集 (xi,yi),SVR尝试找到一个线性函数:

f(x)=wx+b

使得对于绝大部分样本点 (xi,yi),预测值 f(xi) 和真实值 yi 之间的差值不超过容忍范围 ϵ。这意味着模型允许一定程度的误差,但超出该容忍区间的误差会被惩罚。

1.2 SVR的工作原理

SVR的工作原理核心在于构建一个 ϵ-不敏感区间(epsilon-insensitive zone),即一个允许一定误差的间隔。这个间隔称为“间隔管道”或“回归带”。在该区间内,预测误差被忽略(即不计算损失),而超出此范围的误差则会受到惩罚。

优化问题的目标是最小化模型的复杂度(通过控制 w 的大小),并将大部分样本点包含在 ϵ-不敏感区间内。具体地,优化问题的表示为:

min12w2
s.t.|yi(wxi+b)|ϵ

该约束条件表明所有数据点都尽量位于误差小于 ϵ 的区间内。为了进一步处理那些超出容忍区间的样本点,SVR引入了松弛变量 ξξ 来表示正、负方向上的偏差:

s.t.yi(wxi+b)ϵ+ξi
(wxi+b)yiϵ+ξi

最终,SVR的优化目标变为:

min12w2+Ci=1n(ξi+ξi)

其中 C 为惩罚参数,控制模型对超出 ϵ-不敏感区间的误差的容忍度。较大的 C 值使模型更倾向于减少误差,但可能导致对噪声的过度拟合;较小的 C 值则允许更多误差,提升模型的泛化能力。

1.3 SVR求解方法

SVR求解的核心是通过拉格朗日对偶方法将约束优化问题转化为无约束优化问题。通过引入拉格朗日乘子 αα,可以构建对偶问题,从而简化计算。优化过程的最终结果是通过支持向量计算出权重向量 w 和偏置 b,得到的回归模型可用于预测新的样本点。

2. 核技巧在回归中的应用

在实际应用中,许多数据集并非线性可分,即数据与输出之间的关系不是简单的线性关系。为了解决这一问题,SVR可以使用核函数(Kernel Function)将数据映射到高维空间,使得在该高维空间中回归问题变得接近线性可分。这种通过核函数映射实现的高效运算方式,避免了直接计算高维空间坐标,从而减少计算复杂度。

常见的核函数包括:

核函数的选择直接影响模型的表现,需要结合数据的特点和具体任务进行选择与调优。径向基核(RBF)通常是默认的选择,因为其非线性特性适合多数实际应用。

3. 参数选择和调优

SVR的主要参数包括:

在实际使用中,这些参数通常需要通过交叉验证来选择,找到最优组合以获得最佳的回归效果。

 

手动实现SVM算法

在本节中,我们将分步骤手动实现分类SVM和回归SVM算法,分别针对分类任务和回归任务的需求进行代码编写。实现中不使用任何机器学习库,仅依靠基础数值计算库来手动构建算法流程,帮助理解SVM算法的核心原理和计算过程。

1. 分类SVM实现

分类SVM的目标是找到一个最佳分隔超平面,以最大化间隔的方式将不同类别的样本分开。以下为实现步骤及代码:

1.1. 初始化参数和核函数

1.2. 计算核矩阵并初始化拉格朗日乘子

1.3. 优化拉格朗日乘子(SMO简化实现)

1.4. 计算偏置项

1.5. 预测函数

完整代码如下:

2. 回归SVM实现

回归SVM的目标是拟合一个函数,以使绝大多数数据点在 ( \epsilon ) 不敏感区间内。以下是实现步骤:

2.1. 核函数和初始化

2.2. 初始化拉格朗日乘子和核矩阵

2.3. 更新拉格朗日乘子

2.4. 计算偏置项

2.5. 预测函数

完整代码如下:

 

 

实验方法

1. iris数据集

iris数据集是一个有150条4种特征的3类别平衡数据集。首先我们对其进行可视化以考察其线性可分性。可视化得到:

iris

可以看到这里的数据还是具有很好的线性可分性的,但是在边界处具有一些交叉(versicolor和virginica),因此我们适用软间隔SVC来处理这个问题,对于分类策略使用'ovr',评判指标采用Precision,Recall,F1-Score等。结果在下一节阐述。

 

2. ice-cream

ice-cream数据集是只包含一个连续特征的回归任务。可视化两个变量的数据得到:

ice-cream

可以看到数据呈现出很强的线性特性。则可以用线性核的SVC来做这个任务,评判指标采用MSE以及R2。具体结果在下一节阐述。

3. wine-quality

这是一个有许多特征的单变量回归数据集。我们可以通过对每一个特征对因变量的变化作图。得到:

可见数据的线性可分性并不是很好,所以可能需要适用一些非线性核,比如高斯核。评价指标和iris一样。