SVM(支持向量机)的基本原理
支持向量机(Support Vector Machine, SVM)是一种监督学习算法,主要用于分类和回归任务。其核心思想是在高维空间中寻找一个最优超平面,以最大化不同类别数据点之间的间隔。在二分类问题中,SVM试图找到一个超平面,使得两类数据点分别位于该超平面的两侧,并且超平面到两类数据中最近点的距离(即间隔)最大。这种最大化间隔的策略有助于增强模型的泛化能力,减少过拟合的风险。
SVM的基本步骤
- 数据映射:首先,将输入数据映射到一个高维特征空间中。这一步是可选的,但在处理非线性问题时尤其重要。
- 寻找超平面:在高维特征空间中,寻找一个能够将不同类别数据点尽可能分开的超平面。这个超平面是由支持向量(即离超平面最近的那些数据点)定义的。
- 优化间隔:通过调整超平面的位置,使得支持向量到超平面的距离(即间隔)最大化。这通常转化为一个凸优化问题,可以通过求解拉格朗日对偶问题来高效求解。
- 分类决策:训练完成后,SVM模型可以用于对新样本进行分类。新样本被映射到高维特征空间中,并根据其位置与超平面的关系来判断其所属类别。
SVM的优点
- 高效性:SVM通过求解凸优化问题来找到最优解,这保证了算法的收敛性和高效性。
- 泛化能力强:SVM通过最大化间隔来减少过拟合的风险,使得模型在未知数据上的表现更加稳定。
- 适用于高维数据:SVM能够处理高维数据,并且可以通过核函数技巧避免在高维空间中直接进行复杂计算。
遇到线性不可分怎么办?
在实际应用中,很多数据集都是线性不可分的,即无法在原始特征空间中找到一个线性超平面来完美分隔两类数据点。为了处理这类问题,SVM引入了核函数(Kernel Function)的概念。
核函数的作用
核函数是一种计算两个输入向量之间相似度或内积的函数。在SVM中,核函数的主要作用是将输入数据从原始空间映射到一个更高维度的特征空间(也称为核空间),使得原本线性不可分的数据在新的空间中变得线性可分。这样,SVM就可以在这个新的特征空间中寻找一个最优超平面来分隔数据点。
常用的核函数
-
线性核(Linear Kernel):
- 表达式:K(x,y)=x⋅yK(x, y) = x \cdot yK(x,y)=