SL Scikit-Learn Learn机器学习教程

Lesson 11

支持向量机:最大间隔分类

SVM 寻找使两类之间间隔最大的超平面。本章讲解最大间隔直觉、支持向量的含义、核技巧如何处理非线性、以及 C 和 gamma 的调参策略。

  • 预计时长55 分钟
  • 难度进阶
  • 前置章节第 10 章

本章细分学习地图

模块拆细学习单元完成后应产出掌握标准
最大间隔间隔、超平面、支持向量。最大间隔的几何直觉。能说清为什么间隔越大越好。
软间隔允许误分类、C 的偏差-方差权衡。C 对决策边界的影响。能判断 C 偏大或偏小的后果。
核技巧线性核、RBF 核、多项式核、gamma。不同核的对比。能根据数据选择核函数。
实战SVC 手写数字识别、GridSearchCV 调参。完整分类代码。能用网格搜索找最佳 C 和 gamma。

学习目标

SVM 核心概念

1找超平面
2最大化间隔
3核映射(非线性)
4分类预测

本章完成度

已完成 0/4

最大间隔分类

SVM 不是随便找一个能分开两类的超平面,而是找间隔最大的那个——离最近的训练样本尽可能远。

间隔 = 2 / ‖w‖ 间隔与权重向量的模成反比

支持向量

距离超平面最近的训练样本。只有它们决定超平面的位置,其他样本可以删掉不影响结果。

为什么间隔越大越好

更大的间隔意味着更强的泛化能力——新样本更不容易落在错误的一侧。

软间隔与参数 C

真实数据很少完全线性可分。软间隔 SVM 允许一些样本违反间隔,用参数 C 控制容忍程度。

C 值效果偏差-方差
C 很大几乎不容忍误分类,间隔小。低偏差,高方差(过拟合风险)。
C 适中平衡误分类数和间隔大小。通常最佳泛化。
C 很小容忍较多误分类,间隔大。高偏差,低方差(欠拟合风险)。

核技巧

核函数把原始特征隐式映射到高维空间,让线性不可分的数据在高维空间变得线性可分——而不需要真的计算高维坐标。

核函数特点关键参数
linear线性超平面,速度快。只有 C。
rbf(默认)无限维映射,能拟合任意形状。C 和 gamma。
poly多项式映射,介于 linear 和 rbf 之间。C、degree、coef0。
gamma 的含义

gamma 控制单个训练样本的影响半径。gamma 大 → 每个样本只影响近邻 → 决策边界复杂(过拟合);gamma 小 → 影响范围广 → 决策边界平滑(欠拟合)。

sklearn 实战:手写数字识别

from sklearn.datasets import load_digits
from sklearn.svm import SVC
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import Pipeline
from sklearn.model_selection import train_test_split, GridSearchCV

X, y = load_digits(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.2, random_state=42, stratify=y
)

pipe = Pipeline([
    ("scaler", StandardScaler()),
    ("svc", SVC(kernel="rbf", random_state=42)),
])

# 网格搜索 C 和 gamma
param_grid = {
    "svc__C": [0.1, 1, 10],
    "svc__gamma": ["scale", 0.01, 0.001],
}
grid = GridSearchCV(pipe, param_grid, cv=5, scoring="accuracy", n_jobs=-1)
grid.fit(X_train, y_train)

print(f"最佳参数: {grid.best_params_}")
print(f"CV 准确率: {grid.best_score_:.4f}")
print(f"测试准确率: {grid.score(X_test, y_test):.4f}")
SVM 的优势SVM 的局限
在中小数据集上表现优秀。大数据集训练慢(O(n²~n³))。
核技巧处理非线性,不需手动构造特征。对特征缩放敏感,必须先 StandardScaler。
只依赖支持向量,鲁棒性好。超参数多(C, gamma, kernel),调参成本高。

练习题

第 1 题:什么是支持向量?删掉非支持向量会影响决策边界吗?

参考思路:支持向量是距离超平面最近的训练样本。删掉非支持向量不会改变决策边界——只有支持向量决定超平面位置。

第 2 题:gamma=100 和 gamma=0.001 分别对应什么样的决策边界?

参考思路:gamma=100 → 影响半径极小 → 决策边界极复杂(过拟合);gamma=0.001 → 影响半径极大 → 决策边界平滑(可能欠拟合)。

检查点

离开本章前,请确认:

  • 能解释最大间隔和支持向量的几何含义。
  • 能用 C 参数权衡间隔大小和误分类容忍。
  • 能解释核技巧如何处理非线性,以及 gamma 的影响。
  • 能用 Pipeline + GridSearchCV 完成 SVC 实战和调参。