支持向量机(Support Vector Machine,SVM)是机器学习中经典的分类算法,凭借严格的数学理论支撑、优秀的小样本学习能力和抗过拟合特性,在分类任务中占据重要地位。
目前机器学习已经算是一个比较老的算法了,目前在机器学习算法当中,也就随机森林和SVM支持向量机用的比较多了。
一、SVM 的基础数学模型
1.1 超平面方程
SVM 的核心是寻找最优超平面,超平面是高维空间中线性分隔的 “面”,对应不同维度的形式如下:



统一简写形式:
其中ω为超平面的法向量,决定超平面的方向;b为偏置项,决定超平面的位置;Φ(x)可简单看作原始数据x。
1.2 标签与决策函数
SVM 中不用 0/1 区分类别,而是用 +1(正例)-1(负例),让分类判定更严格。
决策函数:
其中符号函数sign(x)的定义为:

分类正确的判定条件:对于任意样本
,满足
。
- 正例
,sign结果为 1,乘积 > 0; - 负例
,sign结果为 – 1,乘积 > 0。
1.3 点到超平面的距离
要实现最大间隔,首先需要定义样本点到超平面的距离,这是 SVM 最优化的核心指标。
n 维空间中,点
到超平面
的距离公式为:

其中
,是法向量ω的 L2 范数。
结合分类正确性,将距离公式改进为带类别判定的确信度:

这里的y(xi)同时体现分类正确性
和间隔大小(距离越大,值越大)。
二、寻找最优超平面:最优化目标与求解
SVM 的目标是让离超平面最近的样本点,到超平面的距离最大化,这一目标可拆解为两步:

![max_{w,b}[y(x_{i})]](https://www.171host.com/wp-content/uploads/2026/03/20260304013345-69a78bf9d81dc.png)
2.1 最优化目标的简化
为了方便求解,对目标做放缩变换:令离超平面最近的样本点满足
,此时所有样本点的约束条件变为:

此时最优化目标可简化为:
![]()
由于
最大化等价于
最小化(单调递减),为了后续求导方便,将目标进一步转化为最小化问题:

2.2 拉格朗日乘子法求解有约束极值
上述问题是带不等式约束的凸二次规划问题,需要用拉格朗日乘子法将约束条件融入目标函数,转化为无约束极值问题。
2.2.1 构造拉格朗日函数
定义拉格朗日乘子
,构造拉格朗日函数:

约束条件:
且
。
2.2.2 对偶问题转化
根据强对偶性,原问题
等价于对偶问题
,通过求解对偶问题可简化计算。
求解
:对ω和b分别求偏导并令其为 0。


将上述结果代入拉格朗日函数,化简后得到对偶问题的目标函数:

约束条件:

为了求解方便,将最大化转化为最小化:

三、SVM 的重要扩展:软间隔
实际场景中,数据往往存在噪音点,如果严格要求所有样本都满足
,会导致过拟合,因此 SVM 引入软间隔,允许个别样本点出现在间隔带内。
3.1 松弛因子的引入
定义松弛因子ξi≥0,将严格的约束条件放松为:

:样本点在间隔带外,满足硬间隔约束;
:样本点在间隔带内 / 另一侧,存在分类误差,
越大,误差越大。
4.2 软间隔的目标函数
软间隔的目标函数需要同时考虑间隔最大化和分类误差最小化,因此加入惩罚因子C:

约束条件:
且
。
惩罚因子C的意义:
- C越大:对分类误差的惩罚越重,越接近硬间隔,容易过拟合;
- C越小:对分类误差的惩罚越轻,分类更宽松,容易欠拟合。
4.3 软间隔的求解
与硬间隔类似,构造拉格朗日函数并利用对偶性求解,最终得到的约束条件新增:
,其余求解过程与硬间隔一致,最终仍通过
求解
和
。
四、SVM 的灵魂:核函数
硬间隔和软间隔都是针对线性可分的数据,而实际场景中大部分数据是线性不可分的。SVM 解决线性不可分问题的核心是核函数,通过核函数将低维线性不可分的数据映射到高维空间,使其在高维空间线性可分。
4.1 核函数的核心思想
低维空间线性不可分的数据,在高维空间中往往存在线性分隔的超平面。但直接将数据映射到高维空间会带来维度爆炸,计算复杂度急剧增加。
核函数的巧妙之处在于:不需要显式地将数据映射到高维空间,而是在低维空间中直接计算高维空间的内积
,大幅降低计算复杂度。
核函数的定义:存在映射
,使得对任意低维样本、,满足
,则
为核函数。
4.2 常用核函数
SVM 中常用的核函数有以下三种,适用于不同的数据集分布:
4.2.1 线性核函数
适用于线性可分的数据,是最简单的核函数,本质就是原始空间的内积。

4.2.2 多项式核函数
适用于低维空间中数据呈多项式分布的线性不可分场景,可通过调整参数n控制映射维度。
其中
为核系数,
为常数,
为多项式次数。
特例:当
、
、
时,
,可将二维数据映射到三维空间。
4.2.3 高斯核函数(RBF 核,径向基函数)
应用最广泛的核函数,适用于任意线性不可分的场景,可将数据映射到无穷维空间,是解决非线性问题的首选。
![]()
高斯核参数γ的意义:
越小:正态分布越 “胖”,映射后的高维空间越平缓,泛化能力强,易欠拟合;
越大:正态分布越 “瘦”,映射后的高维空间越复杂,拟合能力强,易过拟合。
五、SVM 的优缺点与适用场景
5.1 优点
5.2 缺点
六,项目示例
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC
from sklearn.metrics import classification_report, confusion_matrix, accuracy_score
iris = datasets.load_iris()
X = iris.data
y = iris.target
feature_names = iris.feature_names
target_names = iris.target_names
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.3, random_state=42, stratify=y
)
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
svm_model = SVC(kernel='rbf', C=1.0, gamma='scale', random_state=42)
svm_model.fit(X_train_scaled, y_train)
y_pred = svm_model.predict(X_test_scaled)
print("SVM模型评估结果")
accuracy = accuracy_score(y_test, y_pred)
print(f"准确率:{accuracy:.4f}")
print("混淆矩阵:")
cm = confusion_matrix(y_test, y_pred)
print(cm)
print("分类报告:")
print(classification_report(y_test, y_pred, target_names=target_names))



