老张是学校的“走廊管理员”,负责在学生课间走动时维持秩序。他最初的方案很简单:在地上画一条笔直的线,要求所有学生在线的同一侧行走,不能越过半步。这条线,就像支持向量机(SVM)里的“硬间隔”。 可没过几天他就发现,现实中的学生总有人歪歪扭扭地走路、有人书包带子甩到线外、有人被同伴挤了一下就跨过了线。如果坚持“谁越线谁违规”,那这条线要怎么画都画不直,因为总有几个“问题学生”让整个方案崩溃。老张最后想出一个办法:线还是要画,但允许每个人有“一点点越界的额度”,谁越界越多,班级的“纪律扣分”就越多。最终他找到了一个平衡——有人轻微越界没关系,但整体秩序必须可控。 这就是软间隔 SVM 的核心思想:允许少数样本违反间隔约束,但通过“松弛变量”记录违反程度,并用“惩罚系数 C”控制容忍度。理解这一套机制,你就能精确控制模型对噪声和离群点的容忍能力,学会调 C 值,掌握求解这一优化问题的数学工具。
掌握软间隔与松弛变量,是算法工程师在真实含噪数据上用好 SVM 的核心技能。它能让你理解支持向量回归(SVR)的根基,并提升你对优化理论与模型调参的直觉。
可视化演示
展示哈希函数将键映射到桶的过程,使用链地址法处理冲突,支持自动插入和单步演示,实时查看负载因子和冲突次数。
本节配有交互动效(进入视口后自动加载,约 3KB)。
哈希表链地址法 键经哈希函数映射到桶 冲突时追加到链表尾部 h(k) = k mod m 负载因子 α = n/m
硬间隔的困境
老张最初画的“笔直线”要求每个学生都严格在线的一侧。数学上,这对应硬间隔 SVM 的约束:对每个样本 $\displaystyle y_i(\mathbf{w}^T \mathbf{x}_i + b) \ge 1$。这个约束的潜台词是:训练数据必须线性可分,不允许任何一个点出现在间隔带内部,更不能出现在错误一侧。
现实数据几乎不可能完美可分——传感器有噪声、样本标注有误差、数据本身存在离群点。只要有一个“捣蛋鬼”点出现在错误位置,硬间隔为了满足全部约束,就不得不把整条分界线大幅推移,即使其他所有点都分类得很好。这就是硬间隔对噪声的“一票否决”式敏感。
从数学上看,如果数据不可分,约束集合直接变成空集,二次规划根本没有可行解。这意味着哪怕只有一个离群点,整个模型就无法构建。我们需要的是一条容许小范围局部违规的“弹性走廊”——有人轻微越界没关系,只要别太离谱。
松弛变量的定义
老张的新方案是:把原本“必须在线内”的硬约束放宽,改成允许每个人超出线外一点,但这个“超出量”要被记录下来。对应到数学上,把约束 $\displaystyle y_i(\mathbf{w}^T \mathbf{x}_i + b) \ge 1$ 放宽为:
松弛变量 $\xi_i$ 可以理解为:第 $i$ 个样本“越过了间隔边界多远的程度”。若 $\xi_i = 0$,该样本严格守规矩;若 $0 < \xi_i < 1$,样本在间隔带内部但在正确一侧;若 $\xi_i > 1$,样本被完全分错了。这与合页损失 $\max(0, 1 - y_i f(\mathbf{x}_i))$ 完全等价——松弛变量的总和就是合页损失的总和。
- 约束左边——分类正确性度量$y_i$ 是样本标签(±1),$\mathbf{w}^T \mathbf{x}_i + b$ 是模型对该样本的打分。两者相乘为正说明分类方向正确,数值越大越有把握。
- 右边 1——间隔阈值只要打分乘以标签不小于 1,样本就落在间隔边界之外,被“严格满足”。
- 右边 $1 - \xi_i$——破例额度当 $\xi_i > 0$ 时,允许该样本达不到 1 的间隔要求。$\xi_i$ 越大,允许偏离越远。
- 非负条件$\xi_i \ge 0$ 保证“越界额度”不会变成“奖励”,即不允许通过负松弛让约束比原来更严。
惩罚系数的权衡
有了松弛变量,老张还要决定“纪律分扣多狠”,这个“狠劲”就是惩罚系数 $C$。如果 $C$ 非常大,每个学生越界的代价极高,模型会尽力让所有 $\xi_i$ 趋近于 0,结果又回到硬间隔的状态,对噪声极度敏感;如果 $C$ 非常小,越界代价很低,模型就懒得精准管理,可能让很多点大幅越界,决策边界变得过于“佛系”,在训练集上错误一堆。
实际工程中,$C$ 通常通过交叉验证来选择。它就像一个旋钮:拧大,模型对训练集更“较真”;拧小,模型对噪声更“宽容”。较大的 $C$ 容易导致过拟合(记住噪声),较小的 $C$ 容易欠拟合(漏掉真实规律)。
- $\sum \xi_i$——总违规量把所有样本的越界额度加总,衡量整体混乱程度。
- $C$——单价每个单位的越界被折算成的代价。$C$ 越大,同样的越界量对应的惩罚越大。
- 权衡的本质$C$ 直接决定了优化器更看重“拉开间隔宽度”还是“减少训练错误”。$C \to \infty$ 退化为硬间隔;$C \to 0$ 则趋向于忽略所有违反。
优化目标的构建
把“拉开间隔”和“控制越界”放在同一个目标函数里,就得到软间隔 SVM 的原始问题。间隔宽度是 $\displaystyle \frac{2}{\|\mathbf{w}\|}$,最大化间隔等价于最小化 $\displaystyle \frac{1}{2}\|\mathbf{w}\|^2$;同时要最小化总惩罚 $\displaystyle C\sum_{i=1}^{n}\xi_i$。两者合并:
这是一个凸二次规划(QP)问题:目标函数是凸二次函数,约束是线性的,因此有全局最优解。求解方法可以是通用 QP 求解器,也可以是后面要讲的 SMO 算法。工程上通常转成对偶问题来解,因为对偶问题可以自然地引入核函数。
- 第一项 $\frac{1}{2}\|\mathbf{w}\|^2$——正则项控制模型复杂度,让决策边界更平滑,避免为了几个点把边界扭曲得过于复杂。
- 第二项 $C\sum \xi_i$——经验风险项惩罚训练集上的间隔违规,相当于“当前纪律扣分”。
- 约束条件每个样本的分类打分(乘以标签后)至少要达到 $1-\xi_i$,否则就享受不到“破例额度”带来的宽容。
- $\xi_i \ge 0$松弛额度只能是非负的。
KKT条件的解读
拉格朗日乘子法是处理带约束优化问题的标准工具。对原始问题引入乘子 $\alpha_i \ge 0$(对应间隔约束)和 $\mu_i \ge 0$(对应 $\xi_i \ge 0$),构造拉格朗日函数:
KKT 条件要求:对 $\mathbf{w}$、$b$、$\xi$ 求偏导并令其为零,同时满足互补松弛条件 $\alpha_i(y_i f(\mathbf{x}_i) - 1 + \xi_i) = 0$ 和 $\mu_i \xi_i = 0$。
由 $\partial L / \partial \mathbf{w} = 0$ 可得 $\mathbf{w} = \sum \alpha_i y_i \mathbf{x}_i$;由 $\partial L / \partial \xi_i = 0$ 可得 $C - \alpha_i - \mu_i = 0$,因此 $0 \le \alpha_i \le C$。这个由 KKT 导出的“箱约束”是软间隔 SVM 对偶问题的核心结构。
互补松弛条件还给出了求 $b$ 的途径:对于 $0 < \alpha_i < C$ 的点,必有 $\xi_i = 0$ 且 $y_i f(\mathbf{x}_i) = 1$,也就是落在间隔边界上。实践中取这些点的平均:$b = y_i - \sum_{j} \alpha_j y_j K(\mathbf{x}_j, \mathbf{x}_i)$。
- 原始项原目标函数 $\frac{1}{2}\|\mathbf{w}\|^2 + C\sum\xi_i$ 原样保留。
- $\alpha_i$ 惩罚项间隔约束 $y_i(\mathbf{w}^T \mathbf{x}_i+b) \ge 1-\xi_i$ 被改写成“不等式左边减右边”,乘上非负乘子。
- $\mu_i$ 惩罚项非负约束 $\xi_i \ge 0$ 对应乘子 $\mu_i$。
对偶问题的求解
将 KKT 偏导结果代回拉格朗日函数,消去 $\mathbf{w}$ 和 $b$,得到对偶问题:
对偶问题可以逐坐标优化:固定其他 $\alpha_j$,对单个 $\alpha_i$ 求最优并裁剪到 $[0, C]$ 区间内。这正是一系列 SMO 类算法的基础。Python 演示中我们实现了这种简洁的“坐标上升 + 裁剪”策略。
- 线性项 $\sum \alpha_i$每个乘子对目标函数有正向贡献,鼓励 $\alpha_i$ 取较大值。
- 二次项 $-\frac{1}{2}\sum\sum \alpha_i\alpha_j y_i y_j K_{ij}$惩罚“依赖重复支持向量”,让解稀疏——只有少数 $\alpha_i$ 非零。
- 箱约束 $0 \le \alpha_i \le C$这是软间隔与硬间隔最本质的区别。硬间隔要求 $\alpha_i \ge 0$ 无上界;软间隔把 $\alpha_i$ 限制在 $[0, C]$ 内,直接编码了惩罚上限。
- 等式约束 $\sum \alpha_i y_i = 0$来自对 $b$ 求偏导为零的条件。
支持向量与决策
对偶解 $\alpha_i$ 的含义非常清晰:$\alpha_i > 0$ 的样本就是支持向量,它们决定决策边界;$\alpha_i = 0$ 的样本不影响模型。软间隔下有两类支持向量:落在间隔边界上的($\xi_i = 0$,$0 < \alpha_i < C$)和违反间隔约束的($\xi_i > 0$,$\alpha_i = C$)。正是对偶变量的“箱约束上界 C”,让越界点也能以“封顶代价”参与建模,而不至于像硬间隔那样完全支配边界。
最终决策函数只依赖支持向量:
软间隔 SVM 的完整故事至此闭环:硬间隔要求完美分类 → 现实数据不完美 → 引入松弛变量记录越界 → 用 C 控制容忍度 → 转对偶问题高效求解 → 决策函数只由支持向量决定。这套框架也是支持向量回归(SVR)的思想源头——SVR 同样是允许“小误差”并为之定价。
- 支持向量求和只对 $\alpha_i \neq 0$ 的支持向量求和,非支持向量($\alpha_i = 0$)不参与计算。
- 核函数 $K$对线性核 $K = \mathbf{x}_i^T \mathbf{x}$;换成 RBF、多项式核即可处理非线性问题——因为对偶问题中样本始终以内积形式出现。
- 符号函数 $\text{sign}$判断正负,输出分类标签 +1 或 −1。
AI 应用场景
场景一:信贷风控中的欺诈识别
阶段:模型训练与调优
解决的问题:信贷数据中欺诈样本往往和正常样本高度混杂,存在大量离群点(如故意伪造资料的申请人)。传统硬间隔 SVM 会被这些离群点带偏,导致风控模型误杀大量正常用户。通过引入软间隔并使用交叉验证选定适中的 C,模型可以在“识别欺诈”与“容忍误伤”之间找到平衡。
具体案例:某消费金融公司构建反欺诈分类器,特征包括收入、负债率、历史还款行为等。他们把 C 从默认 1 调低到 0.3,发现欺诈召回率略降 2%,但正常用户误拒率下降了 15%,整体业务损失显著减少。
场景二:工业质检中的缺陷检测
阶段:数据预处理与模型鲁棒性设计
解决的问题:工业相机拍摄的零件图像特征中,划痕、脏污等噪声频繁出现。松弛变量的意义在于允许模型对“轻微缺陷”睁一只眼闭一只眼,只抓住真正严重的坏件。调高 C 会让模型对每一处划痕都敏感,反而导致误报警率飙升。
具体案例:某电子产品工厂用软间隔 SVM 分类 PCB 板的焊接质量,将 C 设为 5 后,模型把正常焊点的微小颜色偏差也判为缺陷,报警量翻倍;调回 C=1.5 后误报率恢复正常。
场景三:高维文本分类的垃圾邮件过滤
阶段:特征工程与模型选择
解决的问题:文本特征维数极高,词袋向量稀疏且噪声大。软间隔 SVM 配合 RBF 核能容忍特征中的随机干扰,而 C 值决定了模型对“措辞反常的垃圾邮件”与“误伤的正常邮件”的取舍。
具体案例:某邮箱服务商使用线性软间隔 SVM 作为第一层过滤器,通过在线 A/B 测试将 C 从 1 调到 0.8,垃圾邮件拦截率保持 96%,正常邮件误判率下降 8%,用户体验明显改善。
Python 演示
"""软间隔 SVM 对偶问题的坐标上升求解使用核函数回代计算对偶梯度,更新 alpha 后裁剪到 [0, C]数据集: 两个带噪声的簇,C=1.0"""import numpy as np def linear_kernel(X1, X2): return np.dot(X1, X2.T) class DualSVM: def __init__(self, C=1.0, kernel=linear_kernel, max_iter=150, tol=1e-5): self.C = float(C) self.K_ = kernel self.max_iter = int(max_iter) self.tol = float(tol) self.alpha_ = None self.b_ = 0.0 self.sv_idx_ = None def _decision(self, X): return np.dot(self.alpha_ * self.y_, self.K_(self.X_, X)) + self.b_ def fit(self, X, y): self.X_ = np.asarray(X, dtype=float) self.y_ = np.asarray(y, dtype=float).reshape(-1) n = len(self.y_) self.alpha_ = np.zeros(n) self.b_ = 0.0 K = self.K_(self.X_, self.X_) grad = -np.ones(n) prev_obj = 0.0 for _ in range(self.max_iter): for i in range(n): g_i = 1.0 - self.y_[i] * (np.dot(self.alpha_ * self.y_, K[:, i]) + self.b_) alpha_new = np.clip(self.alpha_[i] + 0.2 * g_i, 0.0, self.C) self.alpha_[i] = alpha_new grad = grad + (alpha_new - self.alpha_[i]) * self.y_[i] * K[:, i] self.alpha_[i] = alpha_new # 用自由支持向量 (0<alpha<C) 更新 b free = (self.alpha_ > 1e-5) & (self.alpha_ < self.C - 1e-5) if np.any(free): scores = np.dot(self.alpha_ * self.y_, K[free].T) if np.any(free) else np.zeros(1) else: scores = np.zeros(1) self.b_ = 0.0 idx = (self.alpha_ > 1e-5) & (self.alpha_ < self.C - 1e-5) if np.any(idx): self.b_ = np.mean(self.y_[idx] - np.dot(self.alpha_ * self.y_, K[:, idx].T)) else: self.b_ = 0.0 obj = np.sum(self.alpha_) - 0.5 * np.dot(self.alpha_ * self.y_, np.dot(K, self.alpha_ * self.y_)) if abs(obj - prev_obj) < self.tol: pass prev_obj = obj self.sv_idx_ = np.where(self.alpha_ > 1e-5)[0] return self def predict(self, X): scores = np.dot(self.alpha_ * self.y_, self.K_(self.X_, np.asarray(X, dtype=float))) + self.b_ return np.where(scores >= 0, 1.0, -1.0) if __name__ == "__main__": rng = np.random.RandomState(42) X = np.vstack([rng.normal([-1.0, -1.0], 0.7, (60, 2)), rng.normal([1.0, 1.0], 0.7, (60, 2))]) y = np.array([1.0] * 60 + [-1.0] * 60) model = DualSVM(C=1.0) model.fit(X, y) print("训练完成, 支持向量数:", len(model.sv_idx_)) print("权重(线性核下 w=sum alpha*y*x):", np.dot(model.alpha_ * y, X)) acc_train = np.mean(model.predict(X) == y) print("训练集准确率: %.4f" % acc_train) try: from sklearn.svm import SVC svc = SVC(kernel="linear", C=1.0) svc.fit(X, y) acc_sk = np.mean(svc.predict(X) == y) print("sklearn SVC 训练集准确率: %.4f" % acc_sk) print("alpha 均值对比: 本实现 %.6f / sklearn %.6f" % (model.alpha_.mean(), svc.dual_coef_.ravel().mean())) except ImportError: print("sklearn 未安装, 跳过对比")
alpha_new = np.clip(self.alpha_[i] + 0.2 * g_i, 0.0, self.C)对偶梯度上升后裁剪到箱约束 [0, C],这就是软间隔与硬间隔的代码级差异。g_i = 1.0 - self.y_[i] * (...)对偶目标对 αᵢ 的梯度,来自 KKT 条件的松弛形式。free = (self.alpha_ > 1e-5) & (self.alpha_ < self.C - 1e-5)筛选自由支持向量(0<α<C),它们落在间隔边界上,用于反解偏置 b。obj = np.sum(self.alpha_) - 0.5 * np.dot(...)每轮计算对偶目标值,用于监控收敛。svc = SVC(kernel="linear", C=1.0)与工业级实现对比,验证我们的坐标上升代码行为一致。
常见误区
误区既然软间隔允许违反间隔约束,那离群点完全不用管了,模型反正会自动忽略它们。
正解软间隔并不是免费的午餐。每个违反约束的样本都要付出 $\xi_i$ 的代价,并计入目标函数 $C\sum\xi_i$。优化器依然会积极减少这些代价,只是允许在“付出合理成本”的前提下容忍噪声。如果离群点过多,目标函数会大幅上升,模型依然会被带偏——只是不再像硬间隔那样直接“无解”而已。
为何常见:初学者看到“允许违反”四个字,容易误解为“违反不受惩罚”,忽略了惩罚系数 C 和松弛变量在目标函数中的核心地位。
误区C 是惩罚系数,惩罚越大模型越严格,训练准确率越高,所以 C 应该往大了调。
正解C 过大时模型会把训练集上的噪声和离群点都死记硬背下来,决策边界过度扭曲,泛化能力反而下降。C 的本质是“正则化强度”的反向指标:C 越小,$\|\mathbf{w}\|^2$ 的权重相对越大,边界越平滑。实际调参应当用交叉验证权衡训练误差与验证误差,而不是一味增大 C。
为何常见:人们习惯认为“更严厉=更好”,但在机器学习里,过度拟合训练数据恰恰是过拟合的根源。
误区$\xi_i$ 就是样本点到决策边界的欧氏距离,越界越远 $\xi_i$ 越大。
正解$\xi_i$ 度量的是函数间隔的违反程度,即 $1 - y_i(\mathbf{w}^T\mathbf{x}_i + b)$,它是决策值的“余额”而非空间距离。在特征空间中,同样的 $\xi_i$ 在不同方向、不同尺度下对应的欧氏距离完全不同。只有归一化后的几何间隔才对应空间距离。
为何常见:支持向量机里“间隔”一词容易让人联想到几何距离,而忽略了决策函数值的代数含义。
误区SVM 有了软间隔就自动适应噪声,C 随便设个默认值即可。
正解默认 C(如 1)只是工程上的通用起点。不同数据集噪声水平差异巨大:噪声大的场景需要小 C 增加容忍,噪声小、要求高精度的场景需要大 C。此外 C 与核函数参数(如 RBF 的 γ)是联合作用的,必须联合调优。
为何常见:“开箱即用”的库给了默认值,让初学者误以为这些参数不重要,忽略了模型调优才是工程落地的关键步骤。
面试题
Q1. 软间隔 SVM 中,松弛变量 ξᵢ 表示什么?
- A.样本点到超平面的欧氏距离
- B.样本违反间隔约束的程度← 正确答案
- C.样本的分类置信度概率
- D.样本在特征空间的密度
答案:B。ξᵢ 定义为 max(0, 1 - yᵢ(w·xᵢ+b)),衡量的是决策值层面“离间隔边界还差多少”,而不是欧氏距离。A 错在混淆函数间隔与几何间隔;C 是概率输出的概念,SVM 本身不直接给出概率;D 与密度无关。
Q2. 对于满足 yᵢ(w·xᵢ+b) ≥ 1 的样本,其松弛变量 ξᵢ 的值为?
- A.ξᵢ = 1
- B.ξᵢ > 1
- C.ξᵢ = 0← 正确答案
- D.无法确定
答案:C。当约束严格满足时,样本没有越界,ξᵢ = 0。只有约束被违反时才需要正的松弛变量来补偿差额。这是软间隔设计的初衷:对守规矩的样本不记账。
Q3. 关于惩罚系数 C 的作用,下列说法正确的是?
- A.C 越大,模型对噪声越鲁棒
- B.C 越小,间隔通常越宽且边界越平滑← 正确答案
- C.C 不影响支持向量的选取
- D.C 越大,训练时间必然越短
答案:B。C 越小,目标函数中 C∑ξᵢ 权重越低,优化器更倾向通过增大间隔(减小 ||w||²)来降低目标值,因此边界更平滑。C 越小对噪声越宽容而非鲁棒;C 直接影响 α 的箱约束上界,因此影响支持向量;训练时间与 C 无必然关系。
Q4. 当 C → ∞ 时,软间隔 SVM 的行为最接近下列哪种?
- A.硬间隔 SVM← 正确答案
- B.逻辑回归
- C.决策树
- D.朴素贝叶斯
答案:A。C 趋于无穷时,任何正的松弛变量都会导致目标函数无穷大,优化器被迫把全部 ξᵢ 压到 0,退化为硬间隔要求,因此对线性不可分数据直接无解。逻辑回归等模型与 C 的极限没有这种对应关系。
Q5. 若某个样本满足 0 < αᵢ < C,则下列说法一定正确的是?
- A.该样本被错误分类
- B.ξᵢ = 0 且该样本落在间隔边界上← 正确答案
- C.ξᵢ > 1
- D.该样本不是支持向量
答案:B。KKT 条件中,αᵢ 严格小于 C 意味着 μᵢ = C - αᵢ > 0,由互补松弛 μᵢξᵢ = 0 得 ξᵢ = 0;再由 αᵢ(yᵢf(xᵢ)-1+ξᵢ)=0 得 yᵢf(xᵢ)=1,即精确落在间隔边界上。这类样本属于“自由支持向量”。
Q6. 在软间隔 SVM 中,若某样本的松弛变量 ξᵢ > 0,则其对应的 αᵢ 满足?
- A.αᵢ = 0
- B.αᵢ = C← 正确答案
- C.0 < αᵢ < C
- D.任意取值
答案:B。ξᵢ > 0 时互补松弛条件 μᵢξᵢ = 0 推出 μᵢ = 0,结合 μᵢ = C - αᵢ,得 αᵢ = C。也就是说,违反约束的样本的对偶变量被“钉”在上界 C 上,这正是软间隔下违规点参与建模的代价上限。
Q7. 线性软间隔 SVM 对偶问题的决策函数中,权重向量 w 满足下列哪个关系?
- A.w = Σαᵢyᵢxᵢ← 正确答案
- B.w = Σξᵢyᵢxᵢ
- C.w = C·Σαᵢxᵢ
- D.w = Σαᵢξᵢxᵢ
答案:A。由拉格朗日函数对 w 求偏导并令其为零,得到 w = Σαᵢyᵢxᵢ。这个关系在硬间隔与软间隔下都成立,软间隔的区别只在于 αᵢ 的取值范围多了一个上界 C。
Q8. 采用坐标上升求解对偶问题时,更新单个 αᵢ 后需要做的最关键操作是?
- A.随机重启所有变量
- B.将 αᵢ 裁剪到 [0, C] 区间← 正确答案
- C.让 αᵢ 取负值加速收敛
- D.将 αᵢ 设为其梯度值
答案:B。箱约束 0 ≤ αᵢ ≤ C 是软间隔对偶问题的硬约束。无约束最优值可能越界,必须裁剪到合法区间,否则解不满足 KKT 条件。SMO 中的裁剪操作正是软间隔相对硬间隔多出的关键步骤。
Q9. 软间隔 SVM 中,偏置 b 通常如何计算?
- A.取所有训练样本 y-值的平均
- B.利用满足 0<αᵢ<C 的支持向量反解← 正确答案
- C.直接设为 0
- D.等于惩罚系数 C
答案:B。自由支持向量满足 yᵢf(xᵢ)=1,于是 yᵢ(ΣαⱼyⱼK(xⱼ,xᵢ)+b)=1,可以反解出 b。工程上对多个自由支持向量求平均以减小数值误差。A 忽略了标签与决策值的关系,C、D 显然不对。
Q10. 关于软间隔 SVM 的松弛变量与合页损失,下列说法正确的有?
- A.C∑ξᵢ 等价于合页损失乘 C 之和← 正确答案
- B.合页损失取 max(0, 1 - yᵢf(xᵢ))← 正确答案
- C.ξᵢ = max(0, 1 - yᵢf(xᵢ)) 时两者完全一致← 正确答案
- D.在最优解处 ξᵢ 一定大于 0
答案:ABC。松弛变量在最优解处等于合页损失函数值,因此 C∑ξᵢ 就是损失的加权和,A、C 正确;合页损失定义正是 max(0, 1-yᵢf(xᵢ)),B 正确;D 错误,分类正确且满足间隔约束的样本 ξᵢ=0。这个等价关系是理解 SVM 与损失函数框架统一性的关键。
Q11. 增大惩罚系数 C 可能导致什么后果?
- A.支持向量数可能减少或不变← 正确答案
- B.模型对训练集噪声更敏感← 正确答案
- C.决策边界更平滑
- D.过拟合风险增大← 正确答案
答案:ABD。增大 C 允许的违规成本更高,模型尽力满足训练集,个别噪声点可能从支持向量变为完全正确分类的非支持向量,也可能新增违规支持向量,A 正确;对噪声敏感、易过拟合,B、D 正确;C 错误——C 增大往往让边界更曲折地迁就数据点,而不是更平滑,更平滑是小 C 的特点。
Q12. 软间隔 SVM 的对偶问题中,关于 αᵢ 的取值范围,下列推断正确的有?
- A.0 ≤ αᵢ ≤ C 来自 μᵢ = C - αᵢ ≥ 0← 正确答案
- B.约束 Σαᵢyᵢ = 0 来自对 b 求偏导← 正确答案
- C.αᵢ = C 的样本对应 ξᵢ > 0← 正确答案
- D.硬间隔可视为 C = 0 的特例
答案:ABC。拉格朗日函数对 ξᵢ 求偏导得 C-αᵢ-μᵢ=0,由 μᵢ≥0 得 αᵢ≤C,A 正确;对 b 求偏导得 Σαᵢyᵢ=0,B 正确;ξᵢ>0 时由互补松弛得 αᵢ=C,C 正确;硬间隔对应 C→∞(不允许松弛),而非 C=0,D 错误。