——支持向量机)
本文依照《机器学习从原理到应用》卿来云、黄庆明编著人民邮电出版社2020 年第一版的目录顺序整理为期末复习系列的第三篇覆盖非线性模型中的支持向量机。SVM 是本章课程中理论性最强、考试分量最重的部分之一本文按原理 → 推导主线 → 工程扩展三个层次梳理。〇、本章知识地图SVM 的完整知识体系由三个层次构成考试也大致按此递进第一层线性可分情形间隔与支持向量 → 最大间隔原理 → 原始优化问题第二层数学工具拉格朗日乘子法 → 对偶问题 → KKT 条件支持向量的严格定义第三层工程扩展软间隔容忍误分→ 核技巧处理非线性→ SMO高效求解→ SVR回归核心思想一句话概括在特征空间中寻找间隔最大的分离超平面并通过核技巧将这一思想推广到非线性情形。一、间隔与支持向量1.1 分离超平面二分类问题中SVM 的模型是特征空间中的一个超平面决策规则为。能分开两类样本的超平面通常有无穷多个SVM 要回答的问题是哪一个最好1.2 函数间隔与几何间隔函数间隔表示分类的确信程度。缺陷将同倍缩放函数间隔任意改变而超平面不变无法用作优化目标几何间隔即样本点到超平面的真实距离缩放不变是良好定义的度量。支持向量距离超平面最近的那些样本点。SVM 的解只由这些点决定与其余样本无关——这是 SVM 名称的由来也是最高频考点。1.3 最大间隔原理SVM 的准则选择使最近样本的几何间隔最大的超平面。直觉解释间隔越大分类的容错空间越大对新样本的泛化能力越强可联系该系列机器学习(1) 的结构风险最小化思想。令所有样本满足通过缩放总可以做到此时最近点的函数间隔为 1则几何间隔为最大化它等价于这是一个凸二次规划问题目标为凸二次函数约束为线性不等式。这三行是 SVM 的原始问题务必能默写。二、拉格朗日对偶与 KKT 条件2.1 为什么要引入对偶问题原始问题直接求解不方便且解中无法体现只依赖支持向量的结构。引入拉格朗日乘子构造拉格朗日函数并转化为对偶问题后问题变为仅关于的凸优化更易求解SMO 算法即针对对偶问题目标函数中样本只以内积形式出现——这为核技巧埋下伏笔是关键考点。对偶问题形式2.2 KKT 条件与支持向量的严格刻画最优解满足 KKT 条件其中最关键的是互补松弛条件其含义对每个样本要么该样本对解无贡献要么该样本恰好落在间隔边界上。后者正是支持向量——只有支持向量对应。这从数学上严格证明了SVM 的解只依赖支持向量。求得后回代预测时同样只需支持向量参与计算。三、软间隔容忍误分的 SVM3.1 动机现实数据很少完全线性可分存在噪声、异常点硬间隔约束可能无解或过拟合。3.2 软间隔模型为每个样本引入松弛变量允许一定程度违反间隔约束惩罚参数 C 的作用高频考点C 大 → 对误分惩罚重 → 间隔窄、力求训练集分对 → 趋向过拟合C 小 → 容忍更多误分 → 间隔宽 → 趋向欠拟合。C 是 SVM 最重要的超参数其调节本质仍是该系列机器学习(1) 中的偏差—方差权衡。四、核技巧从线性到非线性4.1 动机线性不可分的数据可映射到高维特征空间使其线性可分低维纠缠的数据在高维可能舒展。4.2 核技巧的关键观察对偶问题与预测公式中样本只以内积形式出现。若映射为只需计算。核函数直接给出这一内积值无需显式构造映射计算在高维空间进行代价却留在原空间——这就是核技巧。4.3 常用核函数必背表核函数表达式特点与适用线性核不升维适合特征多、近似线性可分多项式核d 为阶数阶数越高越易过拟合高斯核RBF最常用大 → 影响范围小 → 过拟合Sigmoid 核与神经网络有联系实际少用选型经验不确定时用 RBF 核样本量很大或特征维度高时先试线性核速度快且不易过拟合。五、求解与扩展5.1 SMO 算法对偶问题含约束无法单变量更新。SMO序列最小优化的策略每次选取两个变量,更新其余固定把大问题分解为一系列可解析求解的二元子问题反复迭代直至收敛。理解其化整为零的思想即可不要求推导。5.2 支持向量回归SVR将分类思想推广到回归以预测曲线为中心构造宽度为的间隔带带内误差不计、带外误差受罚。同样可引入核函数处理非线性回归。六、SVM 优缺点总结优点缺点解只依赖支持向量模型简洁对大规模样本训练慢核矩阵为核技巧灵活处理非线性对参数 C 与核参数敏感需要调参小样本下表现优异原生只支持二分类多分类需组合有坚实的统计学习理论基础输出是硬分类不直接给出概率附代码实践动手 10 分钟片段 1三种核函数的对比——对应 4.3 节核函数表。from sklearn.datasets import load_breast_cancer from sklearn.svm import SVC from sklearn.pipeline import make_pipeline from sklearn.preprocessing import StandardScaler from sklearn.model_selection import train_test_split X, y load_breast_cancer(return_X_yTrue) X_train, X_test, y_train, y_test train_test_split(X, y, random_state0) for kernel in [linear, poly, rbf]: clf make_pipeline(StandardScaler(), SVC(kernelkernel, C1.0)) clf.fit(X_train, y_train) n_sv clf.named_steps[svc].n_support_.sum() print(fkernel{kernel:7} 测试准确率{clf.score(X_test, y_test):.3f} 支持向量数{n_sv})预期现象三者准确率接近但支持向量数量不同——模型只由这些样本决定正是 2.2 节 KKT 结论的工程体现。片段 2惩罚参数 C 的影响——对应 3.2 节。for C in [0.01, 1, 100]: clf make_pipeline(StandardScaler(), SVC(kernelrbf, CC)) clf.fit(X_train, y_train) print(fC{C:6} 训练准确率{clf.score(X_train, y_train):.3f} f测试准确率{clf.score(X_test, y_test):.3f})预期现象C 增大时训练准确率上升、训练与测试的差距拉大直观验证C 大 → 过拟合倾向。注意 SVM 对特征缩放高度敏感距离度量依赖量纲标准化不可省略。七、本章自测题什么是函数间隔与几何间隔为什么优化目标必须采用几何间隔写出线性可分 SVM 的原始优化问题并解释约束条件的含义。什么是支持向量用 KKT 互补松弛条件说明SVM 的解只依赖支持向量。对偶问题相比原始问题有哪两个优势提示求解难度、内积形式写出软间隔 SVM 的优化问题并说明惩罚参数 C 对模型的影响。核技巧为什么能避免显式高维映射列出三种常用核函数及表达式。RBF 核中增大模型如何变化与 C 的调节作用有何异同简述 SMO 算法的基本思想。八、复习建议本章推导主线原始问题 → 对偶 → KKT不必全部背下但三个结论必须记住最大间隔原理、解只依赖支持向量、核技巧避免显式映射公式默写重点原始问题、软间隔问题、三种核函数表达式C 与的调参方向是简答题常客统一用过拟合/欠拟合框架作答呼应复习(1)。