把参加 Kaggle 竞赛想象成备战一场重要高考。平台每天公布模拟考的分数和排名(Public Leaderboard,公开榜),而真正决定你录取结果的高考卷(Private Leaderboard,私有榜)直到最后一刻才揭晓。很多选手在模拟考上投入大量精力:改选项、调策略、天天看榜,模拟考排名一路飙升。可高考成绩一出来,大多数人傻了眼——分数比模拟考低了一大截。为什么?因为他们在反复刷模拟卷的过程中,把模拟卷的“答案”背了下来,而没有学会真正的“知识”。机器学习里,这个现象就是过拟合 Public LB(Public Leaderboard Overfitting)。本文会用这套“考试”比喻,拆解过拟合的本质、Public 与 Private 的划分机制、识别过拟合的信号,以及一整套用交叉验证、模型稳健性、规范特征工程来“真正学会知识”的方法论。读完后你会发现:榜单是别人的评价,CV 才是你的成绩单。

岗位关联

对 AI 从业者而言,理解过拟合 Public LB 意味着你能建立可靠的离线评估体系,避免“线下指标虚高、线上效果崩坏”的职业事故,从而在竞赛冲榜和真实项目部署中做出更理性的决策。

目录
  1. 可视化演示
  2. 过拟合本质
  3. Public与Private
  4. 过拟合信号
  5. 交叉验证策略
  6. 模型稳健性
  7. 特征工程规范
  8. 提交策略
  9. 心态方法论
  10. AI 应用场景
  11. Python 演示
  12. 常见误区
  13. 面试题

可视化演示

演示对Public LB过拟合导致的排名虚高与Private LB回落,理解泛化策略与竞赛排行榜优化取舍。

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

排名拟合:风险认知 Public排名 Private回落 gap↑ 泛化优先,避免过拟合

过拟合本质

一个学生做模拟卷,本意是掌握考点。但如果他机械地把每道题的答案背下来,模拟考分数会很好看,可一旦题目换个包装,他就彻底露馅。机器学习里的过拟合就是这么回事:模型在训练数据上表现完美,不是因为学会了规律,而是把数据里的随机噪声也背了下来。

模型越复杂——特征越多、树越深、训练轮数越多——“背答案”的能力就越强,训练误差一路走低,可一到新数据上成绩就崩。这就是为什么我们不能只看训练集表现,而要关心泛化误差。把模型的预测看作 $\hat{f}$,真实规律看作 $f$,两者差距的期望可以拆解成三部分:

过拟合 Public LB,本质上就是方差项飙升——你精确拟合了模拟卷上的噪声,换到 Private 这张新卷子上就现出原形。背答案的伪学霸,最终都会被真正的考试揭穿。

E[(f−f^)2]=Bias2+Variance+σ2\displaystyle E\left[(f - \hat{f})^2\right] = \text{Bias}^2 + \text{Variance} + \sigma^2
这个公式告诉你:模型的错误 = 答错的系统性偏差 + 换题就慌的方差 + 题目本身不可消除的噪声。
  1. 期望误差模型预测值与真实规律之间差距的平方平均,衡量整体错误水平。
    E[(f−f^)2]\displaystyle E\left[(f - \hat{f})^2\right]
  2. 偏差项模型系统性偏离真实规律的程度,好比学生始终答错同一类题。
    Bias2\displaystyle \text{Bias}^2
  3. 方差项模型对训练数据波动敏感的程度,好比换一张卷子成绩就大起大落。
    Variance\displaystyle \text{Variance}

Public与Private

老师手上有两套卷子:模拟卷提前发给大家练手,这就是 Public 榜;真题密封在档案袋里直到高考当天才拆封,这就是 Private 榜。模拟卷考得好,只能说明你适应了模拟卷的风格,并不能保证真题也考得好。

Kaggle 的机制正是如此:平台把测试集随机切成两部分,Public 部分(通常约 25%)用于比赛期间的实时排名,Private 部分(约 75%)在比赛结束时揭晓,决定最终名次。由于两个子集只是同一分布下的不同样本,Public 分数天然存在抽样噪声。你对 Public 分数越敏感,就越容易被噪声牵着鼻子走:

所以,看到 Public 排名上升先别急着庆祝——它可能只是“这次模拟卷恰好撞上了你背的答案”。

Var(S^pub−S^pri)=σ2(1npub+1npri)\displaystyle \text{Var}(\hat{S}_{\text{pub}} - \hat{S}_{\text{pri}}) = \sigma^2\left(\frac{1}{n_{\text{pub}}} + \frac{1}{n_{\text{pri}}}\right)
样本量越大,分数越可信;Public 只占 25%,它的分数天然就比 Private 的最终裁决更飘。
  1. 分数差异Public 观测分数 $\hat{S}_{\text{pub}}$ 与 Private 实际分数 $\hat{S}_{\text{pri}}$ 之间的差距。
    S^pub−S^pri\displaystyle \hat{S}_{\text{pub}} - \hat{S}_{\text{pri}}
  2. 噪声方差$\sigma^2$ 是单条样本预测误差的方差,代表每个样本的随机波动。
    σ2\displaystyle \sigma^2
  3. 样本量效应$n_{\text{pub}}$ 和 $n_{\text{pri}}$ 越大,分数差异的方差越小,榜单越可信。
    1npub+1npri\displaystyle \frac{1}{n_{\text{pub}}} + \frac{1}{n_{\text{pri}}}

过拟合信号

靠蒙的学生有个明显破绽:成绩忽上忽下,错的题毫无规律。老师甚至不用改卷,光看成绩曲线就能猜出他水平不稳。模型过拟合 Public 时,也会露出类似的破绽。

最常见的几个信号值得警惕。第一,排名跳变:你提交两个结构几乎一样的模型,Public 排名却像过山车一样大起大落,说明榜单分数里噪声占了大头。第二,分数震荡:只改动一个随机种子或删除一个次要特征,Public 分数就剧烈波动,说明模型在跟着噪声跳舞。第三,CV 与 LB 背离:本地交叉验证分数在下降,Public 分数却在上升——这是最危险的信号,说明模型正在拟合测试集的随机噪声,而不是学习真实模式。第四,特征异常:某个特征单独建模就能刷出惊人的 Public 分数,这往往不是特征强,而是泄漏的预警。

这些信号就像“蒙题学生的破绽”。一旦发现,正确的反应不是继续调参,而是踩下刹车,回到交叉验证的框架里重新审视模型。

交叉验证策略

聪明的学生不会只依赖老师发的那张模拟卷,而是自己找来十套往年真题,每套都计时、批改、分析错题。多套卷子平均出来的水平,比任何一次单独模拟考都更接近真实实力。交叉验证就是机器学习里的“多套真题”,把训练集切分成 K 份,轮流用 K-1 份训练、1 份验证,最终把 K 个验证分数平均:

实际操作中还有两个关键变体:分层抽样(Stratified K-Fold)保证每折的类别比例与总体一致,适合分类问题;时间序列任务则要按时间顺序切分(前段训练、后段验证),防止用未来信息作弊。在比赛中,CV 才是你的“真实成绩单”,Public LB 只是老师的表扬信。

ECV=1K∑k=1KEk\displaystyle E_{\text{CV}} = \frac{1}{K}\sum_{k=1}^{K} E_k
K 折交叉验证的核心思想:用多组“训练-验证”组合互相印证,抵消单次划分的偶然性。
  1. 折数$K$ 表示把训练集分成几份,常见取 5 或 10。
    K\displaystyle K
  2. 单折误差$E_k$ 是第 $k$ 折验证集上的误差,对应一套独立模拟卷的成绩。
    Ek\displaystyle E_k
  3. 平均误差$\frac{1}{K}\sum_{k=1}^{K} E_k$ 把所有折的成绩平均,得到稳定可靠的模型水平估计。
    1K∑k=1KEk\displaystyle \frac{1}{K}\sum_{k=1}^{K} E_k

模型稳健性

真正的学霸,换一版题型也能拿高分,因为他掌握的是底层方法;伪学霸只认识原题,题目一变形就露馅。模型也一样,换个随机种子、换份数据扰动就表现崩盘的模型,不值得信任。稳健性,才是面对 Private 榜时最可靠的品质。

提升稳健性的路径有三条。第一,简单模型优先:在效果接近时,结构更简单、正则化更充分的模型往往泛化更好。第二,多样本集成:训练多个模型(不同种子、不同特征子集)取平均,让个别模型的“发挥失常”被群体抵消。第三,种子稳定性检查:固定其他条件,只改变随机种子跑 3-5 次,观察分数波动是否在可接受范围内。集成降低方差的原理很直观:

回看可视化演示里的绿线:交叉验证分数之所以平稳,正是因为它包含了多次评估的平均;而蓝线(Public)单点反馈,才会一涨一跌都牵动人心。

Var(fˉM)=σ2M\displaystyle \text{Var}\left(\bar{f}_M\right) = \frac{\sigma^2}{M}
当多个模型相互独立时,取平均后的方差缩小为原来的 M 分之一,相当于“多找几个学霸互相校核答案”。
  1. 模型平均$\bar{f}_M$ 表示 M 个模型预测结果的平均值。
    fˉM=1M∑m=1Mf^m\displaystyle \bar{f}_M = \frac{1}{M}\sum_{m=1}^{M} \hat{f}_m
  2. 方差缩减$\text{Var}\left(\bar{f}_M\right)$ 随 M 增大而减小,集成模型对数据波动更不敏感。
    σ2M\displaystyle \frac{\sigma^2}{M}

特征工程规范

抄同桌的答案,抄的时候沾沾自喜,但考试一换座位就彻底露馅。特征泄漏就是这个道理——特征里混入了目标信息或未来信息,让模型在训练和 Public 上“看起来很强”,实际什么都没学会。

特征工程要守住三条底线。第一,目标编码(Target Encoding)必须在折内计算:对某一折做编码时,只能用该折训练数据统计目标均值,绝不能把全量数据的统计量带进去,否则验证集信息就渗入了训练过程。第二,特征选择不碰测试集:不要用 Public 榜的反馈逐个筛选特征,而应基于训练集信息(如重要性排序)结合 CV 判断。第三,守住时间边界:时间序列任务里,只能用历史窗口构造统计特征,严禁用“明天的数据”预测今天。此外,还要检查训练集与测试集之间是否有重复样本,重复样本直接等于泄露答案。

规范的特征工程是“整理错题本”——笔记可以详细,但不能抄答案。只有不抄近道的模型,才能在 Private 这张新卷子上答出真水平。

提交策略

模拟考成绩公布后,要不要根据它调整复习计划?当然要,但只为模拟考一分两分的浮动就通宵改错题,就本末倒置了。提交模型也是一样的道理:Public 分数是稀缺的反馈信号,每次提交都消耗机会成本,不能拿它当免费试错器。

成熟的提交策略遵循三条原则。第一,尊重提交次数限制:Kaggle 每天通常只有 5 次提交机会,每次提交前先问自己:这次提交能带来新信息吗?第二,CV 提升才提交:只有当新模型的交叉验证分数显著优于当前最优时,才值得消耗一次提交去 Public 上确认。第三,最终选择以 CV 为准:比赛截止时,提交 CV 最优且多次实验表现稳定的模型,而不是 Public 排名最高的那个。是否提交可以写成一条决策准则:

提交按钮就像交卷铃声,每一次下笔都应当基于真才实学的自信,而不是赌模拟卷运气的冲动。

Submit  ⟺  ScoreCV(t)>ScoreCV(t−1)+ϵ\displaystyle \text{Submit} \iff \text{Score}_{\text{CV}}^{(t)} > \text{Score}_{\text{CV}}^{(t-1)} + \epsilon
只有当前模型的 CV 分数超过上一次至少一个噪声容忍阈值 ε 时,才值得提交。ε 通常取 0.001 量级,用来过滤随机波动。
  1. 当前分数$\text{Score}_{\text{CV}}^{(t)}$ 是第 t 次实验的交叉验证分数。
    ScoreCV(t)\displaystyle \text{Score}_{\text{CV}}^{(t)}
  2. 历史分数$\text{Score}_{\text{CV}}^{(t-1)}$ 是上一次实验的 CV 分数,作为比较基准。
    ScoreCV(t−1)\displaystyle \text{Score}_{\text{CV}}^{(t-1)}
  3. 阈值判断$\epsilon$ 是噪声容忍阈值,保证提交决策不被纯随机波动干扰。
    ϵ\displaystyle \epsilon

心态方法论

高考的真正目标,是掌握知识、考入理想大学,而不是在模拟考排行榜上风头无两。竞赛也是如此:奖牌是结果,但可持续的资产是“不被榜单绑架”的方法论。

具体落地有三件事。第一,目标设定:把目标定义为“提升模型的真实泛化能力”,而不是“刷进 Public Top 1%”——前者让你关注 CV、特征质量和模型稳健性,后者只会把你拖进过拟合的泥潭。第二,时间分配:建议按这个比例分配精力——EDA(探索性数据分析)40%、特征工程 30%、建模调参 20%、提交验证 10%。把最多的时间花在理解数据上,而不是盯着榜单刷提交。第三,赛后复盘:Private 榜揭晓后,回头对比自己的 CV、Public 与 Private 三方分数,记录哪些判断被 Public 误导了,哪些坚持 CV 的决策最终被证明正确。

榜单会刷新,荣誉会过期,只有沉淀下来的方法和代码,能陪你走更远的路。下一次比赛,把模拟考当练习,把 CV 当标尺,把 Private 当真正的考场——你会赢得更从容。

AI 应用场景

Kaggle / 天池竞赛冲榜

阶段:模型评估与提交决策

解决的问题:新手团队往往被 Public 榜牵着走,每天消耗提交次数,最终 Private 大跌。用本篇方法论,团队建立“CV 优先、LB 仅参考”的评审机制,每次提交前先看 CV 是否提升,避免在噪声上反复横跳。

具体案例:某 Kaggle 队伍在房价预测赛中发现,Public 排名靠前的模型 Private 反而大跌。改用 10 折 CV 选择模型后,虽然 Public 排名一度下降,但最终 Private 成绩稳定进入前 5%。他们把“模拟考第一”的诱惑换成“真题成绩单”的底气。

企业模型上线前的离线评估

阶段:模型验收与发布

解决的问题:离线测试集上的 AUC 虚高,上线后线上指标崩盘,是数据科学团队最常见的翻车现场。用时间切分交叉验证替代随机划分,模拟“未来数据”来评估模型,能提前暴露过拟合风险。

具体案例:某电商推荐团队在模型迭代中,A/B 测试前先用“按周切分”的时序 CV 复测模型,发现新特征在随机划分时提升明显、在时序划分时反而下降,及时阻止了一次可能伤害 GMV 的发布。

AutoML 平台模型选择

阶段:自动模型搜索与选型

解决的问题:AutoML 工具在搜索过程中会看到大量候选模型的验证分数,如果只用单次划分验证选模型,很容易选中“碰巧在验证集上表现好”的模型。用嵌套交叉验证做模型选择,可以大幅降低选型偏差。

具体案例:某公司内部 AutoML 平台在分类任务选型时,默认使用 5 折 CV 的均值排序,并记录每折的标准差。当两个模型 CV 均值接近时,自动选择标准差更小(更稳健)的模型,上线后效果稳定。

Python 演示

python53 行
import numpy as npfrom sklearn.linear_model import LinearRegressionfrom sklearn.metrics import mean_squared_errorfrom sklearn.model_selection import KFold rng = np.random.RandomState(42)N = 800n_features = 60X = rng.randn(N, n_features)true_coef = np.zeros(n_features)true_coef[:6] = rng.uniform(0.5, 1.0, 6)y = X @ true_coef + rng.randn(N) * 0.4 X_train, y_train = X[:500], y[:500]X_pub, y_pub = X[500:650], y[500:650]X_pri, y_pri = X[650:], y[650:]  def col_mse(X, y, j):    return mean_squared_error(y, LinearRegression().fit(X[:, [j]], y).predict(X[:, [j]]))  def select_by_public(top_k=8):    errs = [col_mse(X_pub, y_pub, j) for j in range(n_features)]    return np.argsort(errs)[:top_k]  def select_by_cv(top_k=8):    kf = KFold(5, shuffle=True, random_state=3)    scores = []    for j in range(n_features):        fold_errs = []        for tr, va in kf.split(X_train):            m = LinearRegression().fit(X_train[tr, [j]], y_train[tr])            fold_errs.append(mean_squared_error(y_train[va], m.predict(X_train[va, [j]])))        scores.append(np.mean(fold_errs))    return np.argsort(scores)[:top_k]  def private_mse(feats):    return mean_squared_error(        y_pri,        LinearRegression().fit(X_train[:, feats], y_train).predict(X_pri[:, feats])    )  pub_feats = select_by_public()cv_feats = select_by_cv()print('按Public单特征误差选特征,Private误差: %.4f' % private_mse(pub_feats))print('按5折CV单特征误差选特征,Private误差: %.4f' % private_mse(cv_feats))print('真实有效特征: %s' % list(np.where(true_coef > 0)[0]))print('Public选出:   %s' % sorted(pub_feats.tolist()))print('CV选出:       %s' % sorted(cv_feats.tolist()))
目的:用合成数据模拟“过拟合 Public LB”——同样是从 60 个特征里挑 8 个,按 Public 误差挑选会把噪声特征当宝贝,按 5 折 CV 挑选则更接近真实有效特征,最终 Private 误差对比一目了然。
  1. true_coef[:6] = rng.uniform(0.5, 1.0, 6)设定只有前 6 个特征真正影响目标值,其余 54 个都是噪声特征
  2. errs = [col_mse(X_pub, y_pub, j) for j in range(n_features)]用 Public 集上每个特征的单独预测误差排序,这就是“拿模拟考成绩选答案”
  3. for tr, va in kf.split(X_train)用 5 折交叉验证分别评估每个特征,接近“做多套真题求平均分”
  4. private_mse(pub_feats)计算按 Public 选出的特征组合在 Private 集上的真实误差
  5. print('CV选出: ...')对比两组特征集合,你会发现 CV 选出的特征更接近真实的 [0,1,2,3,4,5]

常见误区

误区我的 Public 排名进了前 10,说明我的模型一定稳拿奖了,接下来只要躺着等 Private 揭晓就行。

正解Public 样本只占测试集的一小部分(通常约 25%),样本越少分数噪声越大。排名高可能只是运气好,恰好匹配了 Public 子集的特定分布。真正决定最终名次的是 Private 榜,用模拟考第一名的成绩去预判高考,风险极高。正确做法是持续跟踪 CV,保证模型在多个评估视角下都稳定。

为何常见:人天生依赖即时反馈,Public 榜是最显眼的进度条,容易让人把它误当成最终目标。

误区Public 分数一夜之间掉了 0.01,我肯定哪里写错了,得赶紧改特征、换模型、重新训练。

正解Public 分数本身有噪声,0.01 的波动完全可能是随机扰动,而不是模型的真实退步。更可靠的信号是 CV 分数以及 CV 与 LB 的偏差。如果 CV 没变,Public 的小幅波动就不该影响你的决策。每次被榜单扰动都去调参,恰恰是过拟合 Public 的起点。

为何常见:榜单刷新带来即时反馈,大脑会把随机波动解读为趋势,从而诱发盲目行动。

误区每天把 5 次提交机会用满,多试几个模型,总有一个在 Public 上分数高,最后挑最高的交就行。

正解提交次数是有限资源,更关键的是,每一次“看 Public 结果再调”都让模型进一步向 Public 噪声偏移。大量提交 + 选 Public 最高模型,正是过拟合 Public 的经典路径。应该用 CV 指导模型选择,只在 CV 有真实提升的关键节点提交。

为何常见:优化器心态在作祟——认为只要有反馈就能逼近最优,却忽略了这条反馈本身带着噪声,反馈越多噪声学得越狠。

误区我加了一个新特征,Public 分数立刻涨了一大截,这个特征绝对是核心变量,赶紧围绕它继续做文章。

正解单个特征让 Public 大涨,也可能是“假特征”——它碰巧与 Public 子集中的噪声高度相关,而真实分布里毫无价值。判断特征是否有效,必须在 CV 上确认提升;如果 CV 不涨反跌,大概率是过拟合信号,甚至会拖累 Private 表现。

为何常见:特征工程被视为竞赛核心能力,分数提升带来的成就感容易让人忽略统计显著性和过拟合风险。

误区比赛快结束了,我直接选 Public 分数最高的那个提交,反正平台允许最后时刻换模型。

正解一旦你根据 Public 排名倒推选择模型,就相当于拿测试集噪声做模型选择,Private 榜往往会“打脸”。正确姿势是:在最后阶段,选择 CV 最优且多次提交中表现稳定的模型,而不是 Public 第一。这个选择在发榜那一刻可能不够惊艳,但长期看才是最稳妥的。

为何常见:Public 榜是实时可见的荣誉榜,视觉冲击力强,让人误以为它就是比赛终点。

面试题

Q1. 关于 Public LB,下列说法正确的是?

单选题 · easy

  • A.Public分数越高,最终排名一定越高
  • B.Public分数是模型泛化能力的无偏估计
  • C.Public样本只占测试集一部分,分数含噪声← 正确答案
  • D.Public分数可以完全替代交叉验证

答案:C。Public 只是测试集的一个随机子集(通常 25%),样本有限分数必然带噪声。B 的“无偏估计”不成立,因为反复调参后 Public 分数会向噪声偏移;D 更错误,CV 才是可靠评估。选 C。

Q2. 过拟合 Public LB 的本质原因是?

单选题 · mid

  • A.模型参数多,训练误差变得极低
  • B.随机种子变化导致结果难以复现
  • C.反复使用Public反馈调参,在噪声上学习← 正确答案
  • D.数据量足够大时过拟合自然会消失

答案:C。核心原因是把 Public 榜的反馈作为调参依据,等于把抽样噪声当成信号学习,模拟卷背得越熟,真题越容易露馅。A 是过拟合训练集的表现,不是过拟合 Public 的本质;B 是现象;D 是错误认知,数据量大也不能抵消反复用测试反馈调参带来的偏差。

Q3. 下列哪些现象说明你可能过拟合了 Public LB?

多选题 · mid

  • A.CV分数下降但Public分数上升← 正确答案
  • B.相似模型提交后Public排名剧烈波动← 正确答案
  • C.更换随机种子分数几乎不变
  • D.单一特征Public提升但CV无提升← 正确答案

答案:ABD。A 是 CV 与 LB 背离的典型警报;B 说明 Public 分数噪声过大,模型在拟合噪声;D 是特征泄漏或假特征的苗头。C 反而是稳健性的表现,说明模型对随机扰动不敏感,不应选。

Q4. K折交叉验证相比单次划分验证的优势是?

单选题 · mid

  • A.训练数据利用更充分,评估更稳定← 正确答案
  • B.一定能把模型精度训练到更高
  • C.可以消除全部特征泄漏问题
  • D.会自动搜索最优超参数组合

答案:A。K 折让每一份数据既当过训练也当过验证,相当于做多套模拟卷取平均,评估更稳。B 错在交叉验证是评估不是训练方法;C 是夸大,泄漏要靠特征工程规范解决;D 是超参数搜索工具的职责。

Q5. 关于特征工程防泄漏,哪些做法是正确的?

多选题 · hard

  • A.目标编码必须在折内计算← 正确答案
  • B.可先用全量数据编码再做验证
  • C.时序特征只用历史窗口构造← 正确答案
  • D.按Public榜表现逐特征筛选

答案:AC。目标编码折内计算,保证验证集信息不渗入训练,A 正确;时序特征只用历史窗口,避免未来信息泄漏,C 正确;B 用全量数据编码是典型泄漏;D 按 Public 榜筛选特征是过拟合 Public 的路径,均不该选。

Q6. 竞赛中最后该提交哪个模型?

单选题 · easy

  • A.Public排名最好的模型
  • B.交叉验证分数最好的模型← 正确答案
  • C.训练误差最小的模型
  • D.包含特征最多的模型

答案:B。CV 分数反映模型在多组数据上的平均表现,比单次 Public 反馈更可靠,相当于多套模拟卷的综合成绩。A 可能被噪声欺骗,C 是过拟合训练集的典型,D 特征多不代表模型好。

Q7. 当 LB 与 CV 差异超过 2 倍标准误时,最应该做什么?

单选题 · hard

  • A.立即停止实验,等待比赛结束
  • B.检查是否存在数据泄漏或评估偏差← 正确答案
  • C.加大调参力度直到LB追平CV
  • D.删除所有特征后重建模型

答案:B。LB 与 CV 持续显著背离,说明评估体系出了系统性偏差,要么是泄漏、要么是采样不一致,要先体检再行动。A 过于消极;C 是用 LB 追 CV,等于往噪声方向继续过拟合;D 是过度反应,不先定位问题就推翻重来成本太高。

Q8. 哪些方法能提升模型在 Private 榜上的鲁棒性?

多选题 · mid

  • A.多随机种子集成取平均← 正确答案
  • B.只用Public分数排序选模型
  • C.K折交叉验证做模型选择← 正确答案
  • D.提交次数越多效果越好

答案:AC。多随机种子集成降低方差,相当于多个学霸投票,A 正确;K 折 CV 提供稳定可靠的模型选择依据,C 正确;B 会用噪声干扰选择,D 多提交并不能让模型真的变强,反而增加过拟合风险。

Q9. Bagging 集成降低模型方差的原理是?

单选题 · mid

  • A.多个模型平均,随机误差相互抵消← 正确答案
  • B.减少模型数量节省计算资源
  • C.自动完成特征筛选与组合
  • D.显著提高模型的偏差数值

答案:A。多个模型独立训练后取平均,各自的随机误差会相互抵消,方差缩小为原来的 M 分之一。B 说反了,集成会增加计算量;C 是特征选择的功能;D 集成通常不提高偏差,反而在方差主导时显著改善泛化。

Q10. 关于 Public 与 Private 划分,下列说法正确的是?

单选题 · easy

  • A.两者来自两个不同的独立分布
  • B.同一测试集的随机划分,分布期望一致← 正确答案
  • C.Private 样本是刻意挑选的困难样本
  • D.Public 的样本数量一定多于 Private

答案:B。Public 和 Private 是同一测试集的随机子集,理论上来自同一分布,期望一致,只是样本不同导致分数存在噪声。A 是常见的误解;C 平台不会刻意挑难样本;D 通常 Private 占大头(约 75%),不是 Public 多。