机器学习系列——(十)支持向量机

一、背景

支持向量机(Support Vector Machine,SVM)是一种用于分类、回归和离群点检测等领域的监督学习方法。它最初由Vapnik和Cortes在1995年提出,被认为是机器学习领域中最成功的算法之一。

二、原理

2.1 线性SVM

我们先从最简单的线性支持向量机(Linear SVM)开始。对于一个二分类问题,假设训练数据集为D={(x1​,y1​),(x2​,y2​),...,(xn​,yn​)},其中xi​∈Rd表示第i个样本的d个特征值,yi​∈{−1,1}表示第i个样本的类别标签。我们的目标是构建一个分类器f(x),将样本x划分为正类或负类。线性支持向量机的基本思想是在特征空间中找到一个超平面,将不同类别的样本分开,并且使得超平面与离其最近的样本点之间的距离最大。这个距离也称为"间隔"(Margin)。

其中,w是超平面的法向量,b是截距,x+​和x−​分别表示正类和负类样本离超平面最近的点。它们满足以下条件:

将两式相减可得:

因此,超平面到离其最近的两个点的距离为:

SVM的目标就是最大化这个距离。同时,我们希望超平面能够将不同类别的样本分开,即对于所有i∈1,n,有:

这个条件可以理解为对于任意一个样本,如果它被正确分类,则它在超平面两侧的距离之和必须大于等于22。这个条件也称为"硬间隔"(Hard Margin)。

但是,在实际问题中,有些样本可能无法被线性分开。

这种情况下,我们可以通过引入松弛变量(Slack Variable)ξi​≥0来允许部分样本分类错误,同时惩罚这些错误分类的样本。具体地,对于样本i,我们希望:

同时,我们最小化所有ξi​的和,即∑i=1n​ξi​。这个条件也称为"软间隔"(Soft Margin)。

综上所述,线性支持向量机的目标就是最小化以下函数:

其中,C是一个超参数,用于平衡较大的间隔和较小的误分类损失。

2.2 非线性SVM

上面介绍了如何使用线性超平面将不同类别的样本分开。但是,如果样本在特征空间中的分布非线性,则无法通过简单的线性超平面进行分割。

这个时候,我们可以使用核函数(Kernel Function)将样本从原始特征空间映射到高维特征空间,然后在高维特征空间中找到一个线性超平面,将不同类别的样本分开。常用的核函数包括线性核、多项式核、径向基函数(Radial Basis Function,RBF)核等。以RBF核为例,它的定义如下:

其中,γ是一个超参数,控制了映射到高维空间后的数据分布。使用核函数的非线性支持向量机的目标可以表示为:

其中,ϕ(x)表示将样本x映射到高维特征空间后的结果。

2.3 求解

上面介绍了支持向量机的基本原理,但是如何求解最优超平面呢?这个问题可以通过拉格朗日对偶性(Lagrange Duality)来解决。具体地,我们可以将优化问题转化为对偶问题,然后通过对偶问题的求解来得到最优超平面的参数。

以线性支持向量机为例,它的对偶问题可以表示为:

其中,α=α1​,α2​,...,αn​是拉格朗日乘子向量。通过求解上述对偶问题,我们可以得到最优的α,然后利用以下公式计算权重向量w和截距b:

其中,S表示支持向量的集合。

2.4 核方法

当使用核函数进行非线性分类时,我们需要在高维空间中计算数据点之间的内积,这个计算量很大,不利于模型的实际应用。但是,由于核函数的形式比较简单,我们可以使用核技巧(Kernel Trick)来避免直接计算内积,而是通过计算核函数的值来间接计算内积。具体地,我们将样本集中的每个样本映射到高维特征空间中,并计算它们之间的内积,这样就可以得到核矩阵(Kernel Matrix),然后在求解对偶问题时使用核矩阵代替内积即可,从而避免了直接进行昂贵的高维计算。

三、应用

支持向量机在分类、回归和离群点检测等领域中有着广泛的应用。在分类问题中,SVM被广泛应用于图像分类、文本分类、生物信息学等领域。在回归问题中,SVM可以用于预测连续值的变量,例如房价预测、股票价格预测等。此外,由于支持向量机具有好的泛化性能和鲁棒性,在离群点检测等场景中也经常被使用。

四、总结

支持向量机是一种优秀的监督学习方法,其基本思想是在特征空间中找到一个超平面,将不同类别的样本分开,并且使得超平面与离其最近的样本点之间的距离最大。通过引入松弛变量和核函数等技巧,SVM可以处理线性和非线性分类问题。由于支持向量机具有好的泛化性能和鲁棒性,在实际应用中得到了广泛的应用。

相关推荐
凌波粒24 分钟前
LeetCode--108.将有序数组转换为二叉搜索树(二叉树)
算法·leetcode·职场和发展
liulilittle25 分钟前
KCC:在 BBR 思路上的一次探索
网络·tcp/ip·算法·bbr·通信·拥塞控制·kcc
浦信仿真大讲堂1 小时前
达索系统SIMULIA Abaqus 2026接触和约束的增强新功能介绍
人工智能·python·算法·仿真软件·达索软件
点云侠1 小时前
PCL 生成三棱锥点云
c++·算法·最小二乘法
兰令水1 小时前
leecodecode【面试150】【2026.6.13打卡-java版本】
java·算法·leetcode
临沂堇1 小时前
刷题日志 | Leetcode Hot 100 哈希
算法·leetcode·哈希算法
安逸sgr2 小时前
《图解机器学习-第四章》:损失函数和梯度下降:模型是怎么被训练出来的?
人工智能·机器学习·图解机器学习
玉小格2 小时前
一次关于Python的总结
算法
伊甸32 小时前
从企业级项目学敏感词过滤:DFA算法与双层缓存实战
java·算法·缓存
bIo7lyA8v2 小时前
算法中的随机化思想及其复杂度收益评估的技术8
算法