支持向量机 SVM · 深度手册
分类:聚类分类 | 难度:★★★ 高阶 | 编号:
svm
一、这是什么(一句话用途)
小样本高维分类 / 回归(边界清晰)
二、核心思想
支持向量机(SVM)追求的是"最稳健"的分类边界:在两类样本之间找一条间隔(margin)最大的超平面,这样新样本即使有噪声也不容易跨越边界被判错。对于线性不可分的数据,SVM 用"核技巧"把样本隐式映射到高维空间,使原本纠缠的两类在高维里线性可分——而计算上只需核函数,无需显式高维表示。它在小样本、高维(如文本、基因)场景表现优异,但对核与参数(C、γ)较敏感,且大规模数据训练较慢。
三、数学原理与推导
硬间隔:设超平面 ,两类满足 。最大化间隔等价于最小化 :
写成对偶(用核技巧):
为核函数(如 RBF )。仅支持向量()决定边界。软间隔引入松弛 与惩罚 :,平衡间隔与误分。
四、建模 / 求解步骤
- 特征标准化
- 选核(RBF / 线性)与 C
- 训练找支持向量
- 分类 / 回归预测
- 调 γ/C
五、关键公式速查
max 间隔 ⇔ min ‖w‖²/2 s.t. y_i(w·x_i+b)≥1
六、典型示例
二分类(合格 / 不合格)小样本高维特征。
完整算例(数字演示,照着算一遍)
场景:2 维两类点,线性可分。正类 (2,2),(3,3),负类 (1,1),(0,2)。
最大间隔:超平面 x1−x2=0,支持向量为 (2,2),(1,1),间隔 2/√2≈1.41。
结论:SVM 找最大间隔超平面,仅支持向量决定边界。
七、Python 实现示例
import os, numpy as np
import pandas as pd
HERE = os.path.dirname(os.path.abspath(__file__))
df = pd.read_csv(os.path.join(HERE,"..","datasets","svm.csv"))
X = df[["x1","x2"]].to_numpy(dtype=float)
y = df["label"].to_numpy(dtype=float)*2-1
X=(X-X.mean(0))/X.std(0)
rng=np.random.default_rng(7); w=rng.normal(0,1,2); b=0
for _ in range(2000):
for xi,yi in zip(X,y):
if yi*(xi@w+b)<1:
w+=0.01*(yi*xi-2*w); b+=0.01*yi
else:
w-=0.01*2*w
print("权重 w:", np.round(w,3), "b=%.3f"%b)
配套文件:
py_svm.py(需 numpy / pandas;与下方数据集配套练习)
八、MATLAB 实现示例
%% SVM(线性, 合页损失)示例(MATLAB/Octave)
df = readtable('..\datasets\svm.csv');
X = table2array(df(:,1:2)); y=table2array(df(:,3))*2-1;
X=(X-mean(X,1))./std(X,1); rng(7); w=randn(2,1); b=0;
for i=1:2000
for k=1:height(X)
if y(k)*(X(k,:)*w+b)<1, w=w+0.01*(y(k)*X(k,:)'-2*w); b=b+0.01*y(k);
else w=w-0.01*2*w; end
end
end
disp(w);
配套文件:
m_svm.m(基础 MATLAB / Octave 即可运行)
九、练手数据集(可下载)
2 个特征与二分类标签的 50 组样本(两类近似线性可分)。用于线性 SVM 训练分类边界。
- 字段:x1, x2, label
- 行数:50 行
- 下载:
svm.csv
十、常见误区与避坑清单
- 必标准化
- 核与 C/γ 敏感
- 多分类是一对多 / 一对一
十一、结果怎么解读
支持向量决定边界;看间隔与准确率。
十二、常与谁搭配
非线性用核技巧。
十三、论文写作技巧(怎么把它写进论文)
把 支持向量机 SVM 写进论文,核心不是堆公式,而是讲清「为什么用它、结果怎么呈现、如何对比」三件事。
1. 动机怎么写(为什么用它而不是别的)
区分你要的是无监督划分(聚类)还是有监督判别(分类)。说明特征维度与样本量,以及为什么选 支持向量机 SVM(如非线性边界用核方法、高维稀疏用线性、需概率输出用贝叶斯)。
2. 结果怎么写(图表与指标)
聚类给散点图着色 + 轮廓系数 / 肘部图;分类给混淆矩阵 + 准确率 / F1 / ROC 曲线。特征重要性图能加分。
3. 可直接套用的写作话术
- 中文模板:针对<问题>,本文采用 支持向量机 SVM 进行小样本高维分类 / 回归(边界清晰)。该方法能够自动刻画<优势>,在处理<场景>时相较<对比方法>更具<特点>。
- 英文模板:To address
, we adopt 支持向量机 SVM to 小样本高维分类 / 回归(边界清晰). Benefiting from its ability to , it outperforms on .
4. 同类易踩的写作坑
聚类要说明簇数怎么定(不是拍脑袋);分类要交代训练 / 测试划分与交叉验证,避免过拟合误报高精度。
5. 典型论文段落范例(可直接参考 / 改写)
下面是一段可直接套用的论文表述,已按本算法定制,填空处(…)替换成你的真实数值即可。
为揭示客户群体的内在结构,本文采用 支持向量机 SVM 将 1,200 条样本划分为 4 类(轮廓系数=0.61),各类在消费频次与客单价上差异显著,为精准营销提供依据。
To reveal the intrinsic structure of customers, we apply 支持向量机 SVM to partition 1,200 samples into 4 clusters (silhouette=0.61); the groups differ markedly in purchase frequency and average order value, supporting targeted marketing.
十四、相关手册(延伸阅读)
(暂无直接关联手册,可前往手册库浏览其它算法)
十五、本手册导航
本手册由「算法深度手册生成器」自动产出,配套提供 Python / MATLAB 双版本示例与可下载练手数据集。