想象你去定制一套西装。裁缝给你量体,在纸上画出版型,再做成成衣给你上身试穿。量体是采样,版型是模型,上身效果就是模型的泛化表现。你可能会遇到两种极端裁缝:一种只量了身高和腰围就草草制版,衣服做出来松松垮垮,谁穿都不合身——这叫“欠拟合”;另一种极其“敬业”,把你当天的背带裤褶皱、袖口油渍、甚至毛衣起球都一针一线复刻进版型,上身那一刻你惊叹真合身,但下次洗完衣服它彻底变形——这叫“过拟合”。 真正的好裁缝,量足关键数据、保留必要细节,却不会复刻你换季多穿的那件毛衣。这种“量得准、又不过分较真”的平衡,在机器学习里叫偏差-方差权衡:偏差是系统性做错的程度,方差是换个数据集就忽好忽坏的抖动量,噪声则是数据里天生的随机扰动。这篇文章用“裁缝做西装”的故事贯穿始终,带你认识欠拟合与过拟合,学会用正则化与集成学习调平衡,最后掌握一套实战调优策略——让你的模型在没见过的数据上,也像新顾客穿上订制西装一样合身。

岗位关联

对 AI 从业者来说,偏差-方差权衡是建模基本功。从风控评分卡到推荐排序模型,“训练集很好、线上却翻车”的绝大多数问题,第一步诊断就是分清偏差高还是方差高;掌握了它,调参不再靠猜,而是有策略地逼近最优。

目录
  1. 可视化演示
  2. 偏差方差基础
  3. 欠拟合与过拟合
  4. 模型复杂度
  5. 正则化手段
  6. 交叉验证
  7. 集成学习
  8. 实战调优策略
  9. 泛化能力
  10. AI 应用场景
  11. Python 演示
  12. 常见误区
  13. 面试题

可视化演示

本节配有交互动效(进入视口后自动加载,约 3KB)。

模型复杂度 → 偏差² 方差 总误差 最优最优复杂度训练样本数量 →← 差距大=高方差 →Var(集成) = σ²/n + ρ·σ²·(1-1/n)偏差² 方差 总误差 最优

偏差方差基础

裁缝师傅做版型前,会先画一个“标准版型”,再按不同顾客的数据调整。有位经验丰富的老师傅,习惯性地把肩宽收窄两公分——他做的所有西装肩都偏紧,这是偏差;同一张版型换个店面、换批布料,做出来尺寸忽大忽小,这是方差;布料本身有一道瑕疵印子,再厉害的手艺也遮不住,这是噪声。

放到机器学习里,定义同样直观:用同一套算法在不同的训练子集上反复训练,会得到一批模型。把它们的预测放在一起看——偏差是这批模型平均下来与真实规律之间的差距,衡量“是不是系统性做错”;方差是它们彼此之间的离散程度,衡量“换个数据就抖多久”。一个模型偏差低,说明平均方向是对的;方差低,说明它够稳。

这两个维度与总误差之间的关系,是理解整个权衡的基石,著名的误差分解公式写得很清楚:

裁缝不可能消除布料瑕疵(噪声),能优化的只有自己的手艺方向(偏差)和手稳不稳(方差)。理解了这三本账,接下来的欠拟合与过拟合,其实就是偏差和方差各自“作祟”的两张脸。

E[(y−f^(x))2]=(Bias[f^(x)])2+Var[f^(x)]+σ2\mathrm{E}\left[\left(y-\hat{f}(x)\right)^2\right] = \left(\mathrm{Bias}\left[\hat{f}(x)\right]\right)^2 + \mathrm{Var}\left[\hat{f}(x)\right] + \sigma^2
这是“总误差三账本”:你交出去的每一分错误,最终都会记到“偏差²、方差、噪声”三个科目的某一项里。
  1. 期望符号想象把“换一批训练数据再训练一次”重复很多遍,期望就是对这么多遍结果求平均,也就是“平均来看”。
    E[⋅]\mathrm{E}[\cdot]
  2. 平方误差每个样本上真实值与预测值的差,取平方是为了放大误差大的样本,也方便数学展开。
    (y−f^(x))2\left(y-\hat{f}(x)\right)^2
  3. 偏差平方项平均预测与真实规律的差距的平方,描述裁缝的“固定习惯”造成的系统性错误——比如所有西装肩都窄两公分。
    (Bias[f^(x)])2\left(\mathrm{Bias}\left[\hat{f}(x)\right]\right)^2
  4. 方差项各次模型的预测围绕平均值的波动程度,描述换一批顾客、换一批布料时,做出来的尺寸有多不稳定。
    Var[f^(x)]\mathrm{Var}\left[\hat{f}(x)\right]
  5. 噪声项数据中完全随机的部分,比如布料瑕疵。它是误差的“地板价”,无论模型多好都无法消除。
    σ2\sigma^2

欠拟合与过拟合

有位图省事的裁缝,只量身高和腰围就做衣服,做出来每个人都觉得“差不多”,但谁穿都不太合身——欠拟合就是这种“版型太粗”的毛病。而那位“过度敬业”的裁缝恰恰相反,能把顾客当天的发型都缝进领口——过拟合就是这种“记性太好”的毛病,好到把偶然当成了必然。

在模型身上,这两个毛病的症状非常典型。欠拟合时,模型还没学会训练数据里的规律,训练误差高,测试误差也高;过拟合时,模型把训练数据里的每个角落都“背”了下来,训练误差极低,但一到没见过的数据就原形毕露,测试误差很高。两者之间那个差值——“测试误差 − 训练误差”,叫泛化差距,专门用来衡量模型是被“笨哭”的还是有“虚高”的。

怎么一眼识别?画学习曲线。把训练集规模从小往大增加,同时画出训练误差和测试误差两条曲线:如果两条线始终高悬不下、贴得很近,那是欠拟合(偏差问题);如果两条线之间出现明显“鸿沟”,训练集上几乎完美、测试集上惨不忍睹,那就是过拟合(方差问题)。裁缝行业里也一样:如果每个顾客试穿都不合身,是版型本身没画对;如果试衣模特穿得完美、换个人就崩,是版型被某个模特“绑架”了。

模型复杂度

模型复杂度可以直观理解为“版型的精细程度”:只量身高是一档,量十个部位是一档,量一百个部位、连脚踝围都量又是一档。复杂度越低,版型越“糙”;复杂度越高,版型越“贴”。

把复杂度当成横轴,误差当成纵轴,规律非常明显。训练误差随着复杂度增加一路下降——模型记忆力越来越强,在训练集上的“背诵”越来越熟练。测试误差则是先降后升,走出一个 U 形:一开始复杂度不够、偏差太高,误差很大;逐渐加复杂度,模型终于抓住真实规律,误差降到最低;再继续加,模型开始背诵噪声,方差飙升,测试误差又反弹。

U 形的谷底就是传说中的最优复杂度——偏差和方差之和最小的地方。谷底左边是偏差主导区,右边是方差主导区。很多人以为“模型越复杂越聪明”,但裁缝行业有个常识:版型细节多到一定程度,做下去就不再是为顾客服务,而是为顾客当天的状态服务。同样的道理,模型参数多到一定程度,学到的就不再是规律,而是数据里的偶然。工程上怎么找谷底?不靠肉眼,靠控制变量加交叉验证——这正是下一节工具箱里的家伙。

正则化手段

当模型开始往过拟合方向狂奔,最直接的刹车就是正则化。它像给裁缝立下的工艺规矩:你可以量很多数据,但落版时不能每个细节都照实搬。

L1 正则化(Lasso)的规矩更“一刀切”:不重要的细节直接裁掉,对应参数变成 0。这相当于在版型设计稿上把多余的褶皱、口袋线条直接擦掉,只留真正有用的结构。好处是顺带做了特征选择——哪些尺寸根本不影响合身度,L1 直接帮你划掉。L2 正则化(Ridge)的规矩温和得多:保留所有细节,但每个参数都要“缩一缩”,等于所有针脚都比原计划缝得保守一点,控制整体版型的“剧烈程度”。

它们共同的目标函数可以写成:

另一个藏得比较深的正则化是早停:迭代训练就像裁缝一版一版改样衣,训练误差一直降、测试误差却会在某个时刻掉头回升——在那个拐点果断停手,相当于“改到第七版就收工,别再多改”。这正是深度学习中每轮记录验证集指标、一旦回升就保存最优权重的原理。

J(θ)=1n∑i=1nL(yi,f^(xi))+λ∑j=1mθj2J(\theta) = \frac{1}{n}\sum_{i=1}^{n}L\left(y_i,\hat{f}(x_i)\right) + \lambda\sum_{j=1}^{m}\theta_j^2
前半部分是“把衣服做得准”,后半部分是“把版型做得稳”;λ 就是这两者之间的天平砝码。
  1. 平均损失模型在 n 个训练样本上预测误差的平均值,代表“合身度”做得好不好。
    1n∑i=1nL(yi,f^(xi))\frac{1}{n}\sum_{i=1}^{n}L\left(y_i,\hat{f}(x_i)\right)
  2. 平方参数惩罚所有参数平方求和,参数越大惩罚越重,逼着模型不要在任何细节上“用力过猛”。
    λ∑j=1mθj2\lambda\sum_{j=1}^{m}\theta_j^2
  3. 正则强度 λ一个旋钮。λ 放大,模型更保守、方差降低、偏差可能升高;λ 放小,模型更自由、容易过拟合。
    λ\lambda

交叉验证

裁缝给顾客做西装,不能只在一个人身上试穿就拍板。交叉验证就是让一批顾客轮流试穿同一个版型,综合所有人反馈再决定定版。

具体做法是 K 折交叉验证:把全部数据随机分成 K 份,每次拿其中 1 份当验证集,剩下 K−1 份当训练集,训练并评估一次;这样轮流做 K 次,最终把 K 次结果取平均。K 通常取 5 或 10。相比只划分一次训练集/验证集(hold-out),交叉验证相当于让“换模特试穿”发生 K 次,能有效避免某一次划分运气太好或太差导致的误判。

调参流程因此变得非常机械:对每个候选的复杂度或正则强度,都跑一遍 K 折交叉验证,记录平均得分,选最高分对应的参数。交叉验证还天然让数据物尽其用——每个样本既在 K−1 份里当过“训练素材”,也在 1 份里当过“评委”,小数据集也能被榨干价值。如果只找一个模特试穿,很可能这个模特的体态恰好适合你的版型,导致误判版型优秀;多找几位不同身材的顾客轮流试穿,版型优劣才真正见分晓。

集成学习

前面所有手段都在“控制一个裁缝的手艺”,集成学习的思路完全不同:既然一个裁缝容易手抖、容易有个人偏见,那就多请几个裁缝,各做各的,最后综合意见。

Bagging(自助聚合)是其中最经典的思路:对训练数据做多次有放回抽样,每次抽一份子集,让一个模型(比如一棵决策树)在子集上独立训练;预测时,所有模型投票或取平均。直觉上,每一位“裁缝”只看过一部分顾客,个人判断有波动,但如果大家彼此独立,波动就会互相抵消。

用公式看更清楚。假设有 M 个独立的模型,预测方差都等于 σ²ₘ,那么平均后的方差是:

随机森林把这个思路发挥到极致:模型用决策树(单棵树方差极大),加入 Bagging 后,再在每次分裂时只随机挑一部分特征做候选——进一步降低树之间的相关性,让“不同裁缝看不同部位”真正互不干扰。但必须记住:集成降的是方差,不是偏差。如果十个裁缝都有同一个坏习惯——把肩宽统一缩两公分——十个人平均完,结果依然是肩窄。系统性错误,集成救不了。

Var(1M∑i=1Mfi(x))=1M2∑i=1MVar(fi(x))=σM2M\mathrm{Var}\left(\frac{1}{M}\sum_{i=1}^{M}f_i(x)\right) = \frac{1}{M^2}\sum_{i=1}^{M}\mathrm{Var}\left(f_i(x)\right) = \frac{\sigma_M^2}{M}
集成是把方差从“单打独斗的抖”变成“群众智慧的稳”;M 越大,平均预测越稳定。
  1. 平均预测M 个模型各自对输入 x 做预测,再取平均,这是集成的最终输出。
    1M∑i=1Mfi(x)\frac{1}{M}\sum_{i=1}^{M}f_i(x)
  2. 方差传播公式平均值的方差等于每个模型方差之和除以 M²,因为独立随机变量之和的方差等于方差之和。
    1M2∑i=1MVar(fi(x))\frac{1}{M^2}\sum_{i=1}^{M}\mathrm{Var}\left(f_i(x)\right)
  3. 降为 1/M假设各模型方差相同,集成后方差缩到原来的 1/M。M=100 时,方差只剩 1%。
    σM2M\frac{\sigma_M^2}{M}

实战调优策略

真正上项目时,调优靠的不是感觉,而是一套“先诊断、再处理”的流程,跟裁缝先看顾客身材再决定怎么动手一个道理。

第一步,看训练误差。如果训练误差就很高,说明模型连“背”都没背会——这是高偏差(欠拟合)。对策很直接:增加模型复杂度(加深网络、升高多项式次数)、增加更多有效特征、减小正则强度。第二步,看训练误差与验证误差的差距。如果训练误差已经很低、验证误差却明显更高,说明模型把训练数据“背”得太好——这是高方差(过拟合)。对策也比较标准:增加训练数据、加大正则化、早停、降复杂度、用 Bagging 集成。

第三步,用交叉验证替代单次验证集评估,让每一步决策建立在更稳定的数字上。每次只改一个变量,改完重跑交叉验证,观察验证误差往哪走。这样迭代几轮,模型会慢慢逼近 U 形谷底。另一个常用技巧是误差曲线复盘:画出训练误差和验证误差随训练轮数或正则强度变化的曲线,观察“鸿沟”是否收窄、双高是否下降。这相当于每次改版后都重新让试穿小组打分,而不是凭手感判断。

泛化能力

所有技巧的终点,只有一个目标:泛化能力——在新数据上同样表现良好,就像新顾客走进店来,不问是谁,穿上就合身。

为了这个目标,有两件事要拎清。一是样本代表性:如果量体的样本全是同一体型的人,版型调得再平衡,也只对那一类人有效。机器学习里对应的是训练数据分布与真实数据分布的一致性问题——收集数据时就要留意分布是否覆盖全面,否则后面的平衡都无从谈起。二是目标导向:我们要最小化的是“偏差² + 方差 + 噪声”的总误差,不是单独消灭偏差或单独消灭方差。追求训练集完美,往往是在给未来的测试误差埋雷。

实践要诀浓缩成四句话:先诊断,后动手;一次只改一个变量;用交叉验证评估每次改动;盯住测试误差的谷底,而不是训练误差的地板。裁缝界有句老话:一套好西装不是量得最精细的那套,而是客人穿得最自在的那套。模型也一样——最好的模型不是训练集上得分最高的那个,而是测试集上最稳的那个。

AI 应用场景

信贷风控评分卡调优

阶段:模型评估与调优

解决的问题:训练集 AUC 很高、线上样本 AUC 骤降,常见原因是模型过拟合了历史样本中的噪声。传统做法是不断加特征“硬调”,越调越糟;用偏差-方差诊断后,先判断是方差主导还是偏差主导,再选择正则化、早停或集成手段。

具体案例:某消费金融公司的贷前评分卡使用 200 维特征、GBDT 模型,测试集表现亮眼,但上线一个月新客坏账率超预期。风控团队用 5 折交叉验证重评,发现验证集 AUC 比训练集低 0.15,判断为高方差过拟合;随后加大 L1 正则做特征筛选,把特征从 200 维降到 60 维,并用 Bagging 替换单模型,线上 AUC 回升到 0.83。

医疗影像小样本分类

阶段:模型训练与泛化验证

解决的问题:标注样本只有 2000 张、深度 CNN 参数动辄百万,验证集准确率忽高忽低——典型高方差。裁缝比喻里就是“一个模特试穿不准”,需要多轮试穿(交叉验证)+ 限制工艺(正则化)+ 在拐点收手(早停)。

具体案例:某医院影像辅助诊断项目用 2000 张肺部 CT 训练分类模型,单次划分验证集准确率在 0.78~0.91 之间大幅波动。团队改用 5 折交叉验证评估,并叠加随机裁剪、旋转等数据增强手段,同时加入早停监控验证损失,最终把验证集标准差从 0.05 压到 0.02,模型上线后在不同院区数据上也保持稳定。

推荐系统点击率预估

阶段:特征工程与模型集成

解决的问题:推荐场景特征高维稀疏,单模型容易记住大量无意义交叉特征。L1 正则负责“裁掉多余细节”做特征选择,集成模型负责“多裁缝投票”压方差,两者互补。

具体案例:某电商 CTR 预估模型原始特征 5000+ 维,训练 AUC 0.88、线上 AUC 0.75。工程师先用 L1 正则把特征压到 800 维,再用随机森林替代单棵 GBDT 做 Bagging 平均,线上 AUC 提升到 0.81,训练与线上差距从 0.13 缩小到 0.05。

Python 演示

python32 行
import numpy as np def make_data(n=80, seed=42):    rng = np.random.default_rng(seed)    x = rng.uniform(-1, 1, n)    y = np.sin(1.5 * x) + rng.normal(0, 0.15, n)    return x, y def fit_poly(x, y, degree):    coef = np.polyfit(x, y, degree)    return lambda xs: np.polyval(coef, xs) def bias_variance_decomp(degree, n_boot=150, train_n=40):    x_all, y_all = make_data()    grid = np.linspace(-1, 1, 100)    rng = np.random.default_rng(0)    pred_rows = np.zeros((n_boot, len(grid)))    for b in range(n_boot):        idx = rng.integers(0, len(x_all), size=train_n)        f = fit_poly(x_all[idx], y_all[idx], degree)        pred_rows[b] = f(grid)    pred_mean = pred_rows.mean(axis=0)    true_y = np.sin(1.5 * grid)    bias2 = np.mean((pred_mean - true_y) ** 2)    var = np.mean(pred_rows.var(axis=0))    return bias2, var if __name__ == "__main__":    print(f"{'次数':>4} | {'偏差^2':>8} | {'方差':>8}")    for d in [0, 1, 2, 3, 6, 9, 12, 15]:        b2, v = bias_variance_decomp(d)        print(f"{d:>4} | {b2:>8.4f} | {v:>8.4f}")
目的:用多项式回归复现偏差-方差分解,观察模型次数从 0 到 15 时,偏差平方和方差如何你增我减。
  1. idx = rng.integers(0, len(x_all), size=train_n)有放回抽样,模拟“不同裁缝只看不同顾客”。
  2. pred_rows[b] = f(grid)每个模型在 100 个均匀网格点上预测,保存整条预测曲线。
  3. pred_mean = pred_rows.mean(axis=0)所有模型的平均预测,代表“多裁缝的平均意见”。
  4. bias2 = np.mean((pred_mean - true_y) ** 2)平均预测与真实曲线之间的均方差距,即偏差平方。
  5. var = np.mean(pred_rows.var(axis=0))每个点上多轮预测的方差再取平均,即整体波动幅度。
  6. for d in [0, 1, 2, 3, 6, 9, 12, 15]多项式次数从 0 到 15,覆盖从严重欠拟合到严重过拟合的完整跨度。

常见误区

误区我训练完看到准确率 99.8%,这模型肯定很棒,直接上线!

正解训练误差衡量的是“背诵”能力,不是“理解”能力。真正的考场是没见过的数据。模型把训练集里每条噪声都记住时,训练误差确实趋近于 0,但换个数据就彻底崩盘。就像裁缝把模特当天的临时特征都缝进西装,模特满意,新顾客一穿就废。判断模型好坏的唯一标准是验证/测试误差,不是训练误差。

为何常见:训练误差数据唾手可得,很多人顺手就拿它当“效果证明”,忽略了评估必须用独立的验证集。

误区偏差不可能和方差同时降低,永远是跷跷板,选择只是换边站。

正解教科书说的“权衡”是平均意义上、在给定模型族内滑动复杂度时的常见现象,不是自然铁律。工程上经常有“免费午餐”:更合理的数据预处理、更稳定的特征、或交叉验证调参,可能在降低方差的同时也降低偏差。加噪声增强也能同时改善两者——数据多样性提高让平均预测更接近真实规律,也让模型对单一噪声不敏感。

为何常见:误差分解公式写成了“偏差² + 方差 + 噪声”,让人误以为三者此消彼长是必然规律,其实那只是在“同一模型族内滑动复杂度”时的经验观察。

误区我模型现在还没过拟合,不需要加正则化,等验证误差高了再加。

正解正则化不是救火队,而是健康习惯。适当的 L2 正则几乎不伤偏差,但能显著降低方差;训练初期就加入很小的正则约束,往往让模型更稳定。等验证误差已经涨起来再加,其实已经多走了几步弯路。就像好裁缝从一开始就给自己定下“针脚不过密”的规矩,而不是等衣服做歪了才返工。

为何常见:很多人把“正则化”理解成“限制模型”,觉得限制是无能的表现;实际上合理的约束是经验,能防患于未然。

误区只要用随机森林或 Bagging,模型就不会过拟合了。

正解集成主要降方差,不降偏差。如果单模型本身系统性偏差就很高(比如欠拟合),十个这样的模型平均完还是错;如果数据本身噪声极大,集成也只能把噪声的影响摊薄,不能消除。正确用法是:先判断误差来源——方差主导时上集成;偏差主导时,老老实实加特征、加复杂度。

为何常见:随机森林在非常多任务上表现惊艳,容易让人把它当成万能药,忽略了它的机制边界。

误区我在验证集上跑到了 95%,上线之后效果应该也差不多。

正解验证集只能近似泛化误差,不是泛化本身。如果验证集分布与线上分布不一致(时间窗口不同、用户群体变了),验证分数就会虚高。更隐性的是“验证集污染”——来回用验证集调参几百次,模型在不知不觉中记住验证集,等于把验证集变成了新的训练集。真正稳的做法是交叉验证 + 严格隔离测试集。裁缝给试穿小组反复改了 20 版后,试穿小组已经习惯了新风格,再让他们打分就不准了。

为何常见:验证集是“离训练集最远的一个数据集”,让大家误以为它就是最终考场;实际考场永远在未知的线上数据里。

面试题

Q1. 训练误差和测试误差都偏高,且两者接近,最可能是什么问题?

单选题 · easy

  • A.模型欠拟合,偏差主导← 正确答案
  • B.模型过拟合,方差主导
  • C.数据发生严重泄漏
  • D.优化器学习率过大

答案:A。训练误差和测试误差双高且接近,说明模型连训练集都没学明白,是典型欠拟合(高偏差)。好比裁缝只量身高,所有顾客都穿得松垮。B 过拟合的症状是训练误差低、测试误差高;C 数据泄漏通常让验证分数虚高;D 学习率与欠拟合无直接关系。

Q2. 下列哪项措施最能直接缓解高方差(过拟合)?

单选题 · easy

  • A.增加训练数据样本← 正确答案
  • B.增加网络层数加深
  • C.减小正则化系数
  • D.删除验证集样本

答案:A。增加训练数据让模型见过更多变化,是缓解方差最直接的手段。B 加深网络让模型更复杂,通常会加大方差;C 减小正则化等于放松约束,更容易过拟合;D 删除验证集样本是错误行为,会削弱评估可靠性。

Q3. L1 正则化与 L2 正则化最大的区别是什么?

单选题 · easy

  • A.L1 能让参数稀疏变为零← 正确答案
  • B.L2 只能用于线性模型
  • C.L1 会让参数整体缩小
  • D.L2 能自动选择特征

答案:A。L1 的惩罚项是绝对值之和,在优化时会把不重要的权重直接压到 0,产生稀疏解;L2 的惩罚项是平方和,把权重向 0 收缩但不会真正归零。B 说反了,L2 广泛用于多种模型;C 是 L2 的特征;D 自动选择特征是 L1 的强项。

Q4. 关于偏差-方差分解,以下说法正确的有哪些?

多选题 · mid

  • A.总误差包含偏差平方项← 正确答案
  • B.噪声项可以通过正则消除
  • C.方差衡量预测波动程度← 正确答案
  • D.偏差衡量平均偏离幅度← 正确答案

答案:ACD。分解公式说明总误差 = 偏差² + 方差 + 噪声,所以 A 对;噪声是数据固有属性,正则化无法消除,B 错;C 和 D 正是方差、偏差的直观定义,分别对应“抖不抖”和“偏不偏”。

Q5. 交叉验证的主要目的是什么?

单选题 · mid

  • A.更可靠估计模型泛化← 正确答案
  • B.让训练数据翻倍
  • C.完全消除模型偏差
  • D.加快梯度下降速度

答案:A。交叉验证通过 K 次轮流划分,得到更稳定的泛化误差估计,避免单次划分的运气成分。B 数据量没有变多,只是被重复使用;C 偏差无法被交叉验证消除;D 交叉验证与梯度下降速度无关。

Q6. 当训练误差很低、验证误差很高时,最合理的处理是?

单选题 · mid

  • A.增加训练数据并正则化← 正确答案
  • B.继续增加模型复杂度
  • C.删除更多的训练数据
  • D.调大学习率帮助收敛

答案:A。训练误差低、验证误差高是典型高方差过拟合。增加数据 + 正则化能直接抑制方差。B 增加复杂度让过拟合更严重;C 删除数据反而加剧方差;D 学习率与过拟合无关,调大可能让训练发散。

Q7. 随机森林相比于单棵决策树,主要改进在哪?

单选题 · mid

  • A.平均多棵树结果方差低← 正确答案
  • B.每棵树深度自动增加
  • C.彻底消除了数据噪声
  • D.偏差一定比单棵树小

答案:A。随机森林的核心逻辑是训练多棵树并平均,用方差公式把方差摊薄到 1/M。B 树深度不会自动增加;C 噪声只能被摊薄不能消除;D 集成不保证降低偏差,系统性偏差平均后依然存在。

Q8. 关于 Bagging 集成,以下说法正确的是?

多选题 · hard

  • A.独立时方差降为 M 分之一← 正确答案
  • B.有放回抽样让树间有差异← 正确答案
  • C.随机森林还有特征随机性← 正确答案
  • D.集成一定缓解了欠拟合

答案:ABC。A 对应集成方差公式 σ²/M;B 是有放回抽样(bootstrap)的意义,让每棵树看到不同样本;C 是随机森林区别于普通 Bagging 的要点;D 错误,集成主要降方差,不降偏差,欠拟合时集成帮不上忙。

Q9. 某模型偏差很高、方差很低,下列哪项措施最对症?

单选题 · hard

  • A.增加模型复杂度或有效特征← 正确答案
  • B.加大 L2 正则化强度
  • C.使用 Bagging 做集成
  • D.训练过程提前停止

答案:A。偏差高、方差低 = 欠拟合,是“版型本身不对”而不是“手不稳”。A 加复杂度/加特征对症下药;B 强正则化会让模型更简单、偏差更高;C 集成只降方差;D 早停同样让模型更简单,会加剧欠拟合。

Q10. 在误差分解公式中,以下推导正确的是?

多选题 · extreme

  • A.该分解基于加性噪声假设← 正确答案
  • B.噪声方差是总误差常值下界← 正确答案
  • C.正则可同时消除偏差和方差
  • D.总误差等同偏差平方加方差

答案:AB。误差分解的前提是 y = f(x) + ε 的加性噪声假设,所以 A 对;噪声项 σ² 构成所有模型误差的下界,B 对;C 正则化只能压低方差,不可能同时消除两者,D 丢了噪声项,都不完整。