支持向量机(SVM)内容概述

一、SVM 的核心目标与理想超平面

SVM 的基本需求是在样本空间中找到一个 "划分超平面",将不同类别的样本准确分离。这里的 "超平面" 是根据样本空间维度变化的子空间 ------ 比如二维空间中是直线,三维空间中是平面,更高维空间中则是 n-1 维的抽象子空间。

而 "理想超平面" 有一个关键特性:对训练样本的局部扰动 "容忍性" 最好。简单来说,就是超平面与两类样本中 "离它最近的点"(即 "支持向量")的距离最大,这些支持向量是支撑超平面的关键样本,其他样本不会影响超平面的位置。SVM 的核心目标就是最大化超平面与支持向量之间的 "间隔"(两类支持向量到超平面的距离之和),以此提升模型对新样本的泛化能力。

二、SVM 的数学逻辑与优化方向

为实现 "最大化间隔" 的目标,PPT 先明确了样本标签规则 ------ 将正例样本标记为 + 1,负例标记为 - 1,同时定义了判断样本类别的决策方程(可对样本进行特征映射以适配复杂数据)。

随后,通过几何逻辑将 "最大化间隔" 转化为可求解的优化问题:由于间隔大小与超平面的参数相关,最终目标转化为 "最小化超平面参数的复杂度",同时保证所有样本都能被正确分类(即样本代入决策方程后,结果需满足一定约束条件)。

三、SVM 的求解过程(拉格朗日乘子法)

由于 SVM 的优化问题是 "带约束的规划问题",PPT 引入拉格朗日乘子法进行求解,核心思路是将原始的 "极小化目标 + 约束条件" 转化为对偶问题,降低求解难度。

具体步骤包括:构建拉格朗日函数(引入乘子将约束融入目标),对超平面参数求偏导并令其为 0,得到参数与样本、乘子之间的关系,再代入原函数得到对偶问题的目标函数。最终通过求解对偶问题,确定关键的拉格朗日乘子(仅支持向量对应的乘子非零),进而计算出超平面的参数。PPT 还通过具体数值实例演示了这一过程,从化简目标函数到验证约束条件,最终得到超平面方程,让抽象的数学求解更易理解。

四、SVM 的进阶优化(软间隔与核变换)

  1. 软间隔(应对噪声样本)

原始 SVM 要求 "完全分离所有样本"(硬间隔),但实际数据中常存在噪声样本(异常点),硬间隔会导致超平面过度偏向噪声,影响泛化能力。为此,PPT 引入 "松弛因子",放松分类约束 ------ 允许部分样本分类偏差或错误,同时将 "最小化偏差" 纳入目标函数。

还定义了惩罚系数 C:C 越大,对分类错误的惩罚越重,接近硬间隔;C 越小,对错误的容忍度越高,可避免过度拟合噪声。

  1. 核变换(应对低维不可分)

当样本在低维空间中无法用线性超平面分离时(如环形分布数据),PPT 提出 "核变换" 思路:将样本映射到更高维的特征空间,使高维空间中样本可线性分离。

为避免 "维度灾难"(高维计算量暴增),引入核函数 ------ 无需直接计算高维特征的内积,只需通过低维样本的计算就能间接得到高维内积结果,大幅降低计算成本。PPT 以具体例子验证了核函数的有效性,并介绍了常用的核函数类型(如线性核、高斯核),其中高斯核可适配多数低维不可分场景,应用广泛。

五、整体总结

本次学习 以 "问题 - 目标 - 求解 - 优化" 为逻辑线,完整呈现了 SVM 的核心脉络:从解决 "样本分类" 的基本问题出发,通过定义理想超平面明确目标,用拉格朗日乘子法实现数学求解,再针对实际数据的噪声、不可分问题,用软间隔和核变换进行优化,最终形成一套兼顾理论严谨性与工程实用性的分类算法,为理解和应用 SVM 提供了清晰的框架。

实践代码:

复制代码
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC  # 导入支持向量机分类器
from sklearn.preprocessing import StandardScaler  # SVM也需要特征标准化

# 1. 加载数据
data = pd.read_csv("D:\\pythonProject\\heart.csv")

# 2. 拆分特征与目标值
X = data.drop('target', axis=1)  # 特征
y = data['target']  # 目标值(0=无心脏病,1=有心脏病)

# 3. 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# 4. 特征标准化(SVM对特征尺度敏感,必须标准化)
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)  # 训练集拟合并标准化
X_test_scaled = scaler.transform(X_test)        # 测试集使用相同的标准化参数

# 5. 训练支持向量机模型
# 可以通过调整kernel参数尝试不同的核函数:linear(线性), rbf(径向基), poly(多项式)等
model = SVC(kernel='rbf', random_state=42, gamma='scale')  # rbf是默认核函数
model.fit(X_train_scaled, y_train)

# 6. 预测与评估
accuracy = model.score(X_test_scaled, y_test)
print(f"支持向量机模型准确率:{accuracy:.4f}")

结果如下所示:

支持向量机模型准确率:0.8242

相关推荐
ifeng091815 分钟前
HarmonyOS实战项目:AI健康助手(影像识别与健康分析)
人工智能·华为·wpf·harmonyos
Aevget16 分钟前
界面控件Telerik UI for WPF 2025 Q3亮点 - 集成AI编码助手
人工智能·ui·wpf·界面控件·ui开发·telerik
ccLianLian19 分钟前
计算机视觉·TagCLIP
人工智能·算法
aneasystone本尊25 分钟前
重温 Java 21 之虚拟线程
人工智能
geneculture26 分钟前
官学商大跨界 · 产学研大综合:融智学新范式应用体系
大数据·人工智能·物联网·数据挖掘·哲学与科学统一性·信息融智学
这张生成的图像能检测吗29 分钟前
(综述)基于深度学习的制造业表面缺陷检测图像合成方法综述
人工智能·计算机视觉·图像生成·工业检测·计算机图像学
草莓熊Lotso31 分钟前
C++ 继承特殊场景解析:友元、静态成员与菱形继承的底层逻辑
服务器·开发语言·c++·人工智能·经验分享·笔记·1024程序员节
安如衫31 分钟前
【学习笔记更新中】Deeplearning.AI 大语言模型后训练:微调与强化学习导论
人工智能·llm·sft·后训练·deepseek
IT_陈寒42 分钟前
5个Python 3.12新特性让你的代码效率提升50%,第3个太实用了!
前端·人工智能·后端
love is sour43 分钟前
理解全连接层:深度学习中的基础构建块
人工智能·深度学习