三国时期,一个诸葛亮能观天象、晓地理、知人心,几乎无所不能。但如果把他换成三个普通人——一个擅长看云的老农、一个熟悉风向的渔夫、一个懂兽性的猎户——单独问任何一位,他们最多只有七成把握说对明天的天气。可如果让他们各自独立推断,再按照“少数服从多数”来拍板,十次里往往有九次能做出正确的判断。这就是“三个臭皮匠顶个诸葛亮”背后的秘密:不是某个臭皮匠突然变聪明了,而是一套巧妙的协作制度,让每个人的盲区被同伴覆盖、让每个人的专长被集体放大。在机器学习里,我们把只有六成七成准确率的“臭皮匠”称为弱学习器,把集成后接近神算的“诸葛亮”称为强学习器。而组织这群弱学习器的方法,就是本文要讲的集成策略。主流有三套阵法:Bagging 让成员各自修行、最后投票;Boosting 让后手专攻前手的失误;Stacking 请一位军师综合各路高手的意见再做定夺。

岗位关联

集成策略是机器学习竞赛刷榜的屠龙刀。掌握它,你能让模型精度与稳定性显著跃升,把“及格线”模型组合成“冠军级”方案——这是 AI 工程师面试与实战的必备技能。

目录
  1. 可视化演示
  2. 集成思想启蒙
  3. Bagging 并行投票
  4. 随机森林家族
  5. Boosting 串行纠错
  6. AdaBoost 权重魔法
  7. Stacking 分层融合
  8. 集成实战应用
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

展示TCP协议通过SYN、SYN-ACK、ACK三次报文交换建立可靠连接的完整过程,支持逐步播放和速度调节。

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

TCP三次握手 - SYN 客户端发送SYN=1,Seq=x请求建立连接 服务端进入SYN_RCVD状态 SYN=1, Seq=x 客户端进入SYN_SENT状态

集成思想启蒙

回到小镇的故事:三位专家各有绝活,也各有盲区。看云的大师在乌云压顶时神准,却会在晴天骤雨时失手;摸风的匠人擅长预测沙尘,但对平静天气下的暴雨毫无察觉。关键在于,他们犯错的场景各不相同——当三位意见相左时,错误会在投票中互相抵消,正确判断则会彼此加强。这就是“整体大于部分之和”的第一性原理:好而不同。

在机器学习语言里,“大师”“匠人”“猎户”被统称为基学习器。准确率只比随机猜测高一点(比如 60%)的基学习器,叫弱学习器;把许多弱学习器按某种策略合成一个强学习器,就是集成学习。集成策略的主流三大流派——Bagging、Boosting、Stacking,本质上都是在和模型的偏差—方差困境打交道:单个模型要么因为太简单而“看不准”(高偏差),要么因为太复杂而“忽高忽低”(高方差)。

Error(f^)=Bias(f^)2⏟偏差+Var(f^)⏟方差+σ2⏟噪声\text{Error}(\widehat f) = \underbrace{\text{Bias}\big(\widehat f\big)^2}_{\text{偏差}} + \underbrace{\text{Var}\big(\widehat f\big)}_{\text{方差}} + \underbrace{\sigma^2}_{\text{噪声}}

1. 偏差项:模型平均预测与真实值的系统性偏离,好比整支队伍集体误判了风向——不是某个人的偶然失误,而是方法论本身跑偏了。

Bias(f^)2\text{Bias}\big(\widehat f\big)^2

2. 方差项:模型在不同训练集上预测的波动幅度,好比同一位置匠人今天发挥稳定、明天手抖得厉害。

Var(f^)\text{Var}\big(\widehat f\big)

3. 噪声项:数据自身不可消除的随机性,就像天气本身的无常,任何模型都无法突破这个下限。

σ2\sigma^2

4. 总误差等式:三部分相加构成了最终误差,降住偏差或方差,就等于直接压缩了总误差。

Error(f^)=Bias2+Var+σ2\text{Error}(\widehat f) = \text{Bias}^2 + \text{Var} + \sigma^2

把预测误差拆成三项,就像评价一支“臭皮匠”队伍:偏差是他们集体看问题的方式是否跑偏,方差是他们临场发挥是否忽高忽低,噪声是天气本身的无常。集成策略的宏伟目标,正是通过精巧的组织形式,同时压缩前两项——这就是它的思想启蒙。

Bagging 并行投票

镇长想,与其把三位专家关在一间屋子里互相干扰,不如让他们各自回家研究自己的数据档案:看云的翻十年云图,测风的查十年风向记录,猎户翻十年动物日志。大家互不沟通、互不干扰,最后开会时举手表决。这就是 Bagging 的“自治”精神。

Bagging 全称 Bootstrap Aggregating,中文叫“引导聚合”。它首先用自助采样从原始训练集有放回地抽取多个子集:假设原始数据有 1000 条,每个子集也抽 1000 条——但因为是有放回抽取,实际约 63.2% 的样本会出现,其余是重复样本。每个子集独立训练一个基模型;预测时让所有模型对每个样本投票,少数服从多数。

y^bag=arg⁡max⁡c∈{0,1} ∑t=1T1(ht(x)=c)\widehat y_{\text{bag}} = \underset{c \in \{0,1\}}{\arg\max}\ \sum_{t=1}^{T} \mathbb{1}\big(h_t(x) = c\big)

1. 基模型预测:第 $t$ 个基模型对样本 $x$ 给出的预测类别。

ht(x)h_t(x)

2. 指示函数:括号内条件成立记为 1,否则记为 0,相当于“这一票算不算投给类别 $c$”。

1(ht(x)=c)\mathbb{1}\big(h_t(x) = c\big)

3. 累加求和:把 $T$ 个基模型的投票数全部加起来。

∑t=1T1(ht(x)=c)\sum_{t=1}^{T}\mathbb{1}\big(h_t(x) = c\big)

4. 取最大值:在类别集合 $\{0,1\}$ 中选出得票最多的类别作为最终输出。

arg⁡max⁡c∈{0,1} ∑t=1T1(ht(x)=c)\underset{c \in \{0,1\}}{\arg\max}\ \sum_{t=1}^{T} \mathbb{1}\big(h_t(x) = c\big)

Bagging 最擅长治“方差”:各成员用不同的样本子集训练,做错的题目互不重叠,投票时波动被抹平。正如三位专家各自翻档案得出的结论,不会因为某年天气异常而集体翻车——这就是“各自修行,民主投票”的威力。

随机森林家族

如果三位专家全是“看云的”,那么即使各自翻不同的档案,思路也大同小异——一遇阴天全队蒙圈。镇长意识到,光在样本上做文章还不够,还得让他们的专业角度错开:一位主修气压、一位主修湿度、一位主修风向。这就是随机森林在 Bagging 之上的额外一招:特征随机。

随机森林 = Bagging + 决策树 + 特征随机。具体过程是:训练每棵决策树时,每次分裂节点,不是从全部 $p$ 个特征中挑选最优划分,而是先随机抽 $m$ 个特征组成候选集,再从中挑选最优划分(分类任务通常取 $m = \sqrt{p}$)。这一做法让每棵树在结构上天然不同,即使训练样本几乎一样,树的形态也千差万别。

j⋆=arg⁡max⁡j∈Fk Gain(j),∣Fk∣=mj^{\star} = \underset{j \in \mathcal{F}_k}{\arg\max}\ \text{Gain}(j), \qquad |\mathcal{F}_k| = m

1. 候选特征集:第 $k$ 次分裂时,从全部 $p$ 个特征中随机抽取的 $m$ 个特征组成的小集合。

Fk,∣Fk∣=m\mathcal{F}_k, \quad |\mathcal{F}_k| = m

2. 增益函数:衡量用特征 $j$ 划分后数据纯度的提升幅度,提升越大说明这个特征越适合当“分叉点”。

Gain(j)\text{Gain}(j)

3. 带约束取最优:只能在候选集 $\mathcal{F}_k$ 内选择增益最大的特征,而不是全局最优。

arg⁡max⁡j∈Fk Gain(j)\underset{j \in \mathcal{F}_k}{\arg\max}\ \text{Gain}(j)

特征随机相当于给每个臭皮匠配了一副“偏光眼镜”:有人擅长看云纹、有人擅长看风向标。树与树的差异变大,互相纠错才成为可能。随机森林整体达到“众人拾柴火焰高”的效果,而且每棵树都可以用袋外样本(没被抽进当前子集的数据)自测准确率,连验证集都省了。

Boosting 串行纠错

到了雨季,镇长发现投票制有一个盲区:三位专家都擅长常规天气,却都不擅长龙卷风之类的极端情况。与其让大家各自为战,不如改为“接力模式”——第一位专家先预测,凡是他判错的案例,在第二轮加重分量交给第二位专家重点研究;第二位还没搞定的,再加重交给第三位。这就是 Boosting 的串行纠错哲学:每一个后辈,都站在前辈的“错误废墟”上继续前进。

Boosting 是一族串行训练算法。在第 $t$ 轮,算法根据样本权重分布 $D_t$ 训练一个弱分类器 $h_t$,然后计算它的加权错误率——被前几轮常常分错的样本在 $D_t$ 中权重更大,因此本轮模型会优先学这些“硬骨头”。训练完 $h_t$ 后,根据错误率更新权重:分错样本的权重放大,分对样本的权重缩小,进入下一轮。

εt=∑i=1NDt(i)⋅1(ht(xi)≠yi)\varepsilon_t = \sum_{i=1}^{N} D_t(i) \cdot \mathbb{1}\big(h_t(x_i) \neq y_i\big)

1. 样本权重:第 $t$ 轮时样本 $i$ 在训练集中的重要程度,所有权重加起来等于 1。

Dt(i)D_t(i)

2. 误判指示:当模型 $h_t$ 对样本 $x_i$ 的预测与真实标签 $y_i$ 不一致时取 1,一致时取 0。

1(ht(xi)≠yi)\mathbb{1}\big(h_t(x_i) \neq y_i\big)

3. 加权求和:把所有样本的权重与误判指示相乘后累加,得到本轮模型的加权错误率。

εt=∑i=1NDt(i)⋅1(ht(xi)≠yi)\varepsilon_t = \sum_{i=1}^{N} D_t(i) \cdot \mathbb{1}\big(h_t(x_i) \neq y_i\big)

Boosting 用“接力式纠错”持续降低偏差:每一棒都知道上一棒在哪里掉了链子,专门去补。对欠拟合、偏差偏高的模型(比如很浅的决策树),Boosting 是一剂高效的强心针。但请注意,它不适合方差已经很大的模型——那就像让一个手抖的匠人去接最精密的绣活,越补越乱。

AdaBoost 权重魔法

同样是接力,AdaBoost 还附带一套“话语权”规则:上一轮正确率越高的工匠,最终投票时声音越大;每次被错误判断的样本,在下轮会被加倍重视。就像开会时,上次“蒙对”次数多的老匠人说话更有分量,而上次被忽略的疑难天气案例会被推到会议最显眼的位置。

AdaBoost(Adaptive Boosting,自适应提升)把样本标签视为 $y \in \{-1,+1\}$。每一轮先用当前权重分布 $D_t$ 训练弱分类器 $h_t$,再根据加权错误率 $\varepsilon_t$ 计算话语权系数 $\alpha_t$。然后更新样本权重:被 $h_t$ 分错的样本权重乘以 $e^{\alpha_t}$,分对的乘以 $e^{-\alpha_t}$,最后除以归一化因子 $Z_t$,让所有权重之和保持为 1。最终预测是全部弱分类器的加权投票。

Dt+1(i)=Dt(i) exp⁡(−αt yi ht(xi))Zt,αt=12ln⁡1−εtεtD_{t+1}(i) = \frac{D_t(i)\ \exp\big(-\alpha_t\, y_i\, h_t(x_i)\big)}{Z_t}, \qquad \alpha_t = \frac{1}{2}\ln\frac{1-\varepsilon_t}{\varepsilon_t}

1. 话语权系数:由加权错误率推导出的模型权重,错误率越低,$\alpha_t$ 越大、发言权越重。

αt=12ln⁡1−εtεt\alpha_t = \frac{1}{2}\ln\frac{1-\varepsilon_t}{\varepsilon_t}

2. 预测与真实同号判断:$y_i h_t(x_i)$ 为正表示预测正确,为负表示预测错误——这是权重调整的触发器。

yi ht(xi)y_i\, h_t(x_i)

3. 指数调整:预测错误的样本乘以 $e^{\alpha_t}$(权重大于 1),正确的乘以 $e^{-\alpha_t}$(权重小于 1)。

exp⁡(−αt yi ht(xi))\exp\big(-\alpha_t\, y_i\, h_t(x_i)\big)

4. 归一化因子:$Z_t$ 把所有样本的新权重之和缩放回 1,使 $D_{t+1}$ 仍然是一个合法的概率分布。

Zt=∑i=1NDt(i) exp⁡(−αt yi ht(xi))Z_t = \sum_{i=1}^{N} D_t(i)\ \exp\big(-\alpha_t\, y_i\, h_t(x_i)\big)

AdaBoost 的魔法在于,它用一套简单优雅的权重机制,让“臭皮匠团队”自动把精力集中在最难啃的骨头上,同时让每次发言的分量与其历史战绩挂钩。这正是团队管理中最朴素的奖惩逻辑——做错的题要多练,靠得住的人要重用。

Stacking 分层融合

投票制还有一个问题:如果两位专家说“下雨”、一位说“不下雨”,盲目按多数决可能埋没少数派的远见。镇长决定请一位军师——他不直接看天气,而是听三位专家的预测,再结合自己多年的带兵经验做最终判断。这条“专家汇报、军师拍板”的链路,就是 Stacking(堆叠)。

Stacking 是分层结构:第一层是多个异构基模型(可以是逻辑回归、决策树、KNN 等不同算法),每个基模型对每个样本输出预测值;第二层把这些预测值拼接成新的特征矩阵,训练一个元模型,由元模型学习“如何组合这些专家意见”。为了不让基模型“背诵答案”导致元模型过拟合,训练元模型的输入通常使用交叉验证产生的 OOF 预测(Out-of-Fold Prediction)——每个样本的预测值都来自没有见过它的那个折。

y^=gmeta(h1(x), h2(x), …, hT(x))\widehat y = g_{\text{meta}}\Big(h_1(x),\ h_2(x),\ \dots,\ h_T(x)\Big)

1. 基模型预测输出:每个底层模型对样本 $x$ 给出自己的预测值。

ht(x)h_t(x)

2. 预测向量拼接:把所有基模型的预测值拼成一个新特征向量,替代原始特征作为元模型的输入。

(h1(x), h2(x), …, hT(x))\big(h_1(x),\ h_2(x),\ \dots,\ h_T(x)\big)

3. 元模型映射:元模型 $g_{\text{meta}}$ 在这个新特征向量上学习一个组合函数,输出最终预测。

gmeta(h1(x), h2(x), …, hT(x))g_{\text{meta}}\big(h_1(x),\ h_2(x),\ \dots,\ h_T(x)\big)

如果说 Bagging 是“民主投票”、Boosting 是“师徒接力”,那 Stacking 就是“专家咨询委员会”——不设条条框框,任军师自由决定谁的意见该被采纳多少。正因为它足够灵活,Stacking 常常是竞赛刷榜的终极大招。

集成实战应用

镇长把“臭皮匠合体术”写进了城镇治理手册,很快传遍四方:气象局用投票模型预测台风路径,镖局用它判断押送路线的风险,科举考官甚至用它综合多位阅卷老师的评分。而机器学习竞赛的赛场,更是把这套方法的威力发挥到极致。在真实项目中,集成策略有三大用武之地:竞赛刷榜把多个高分方案叠加再压零点几个百分点;风控场景把规则模型、树模型、深度模型投票,显著降低坏账率;工程落地则要注意推理延迟和计算成本,不能盲目堆模型。

为什么投票组合能提升准度?设每个弱模型的独立正确率为 $p$(略高于 0.5),当 $T$ 个模型做多数投票时,至少半数模型正确的概率是:

P(多数正确)=∑k=⌈T/2⌉T(Tk)p k(1−p) T−kP(\text{多数正确}) = \sum_{k=\lceil T/2 \rceil}^{T} \binom{T}{k} p^{\,k}(1-p)^{\,T-k}

1. 单模型正确率:$p$ 表示每个弱模型独立的正确率,集成有效的前提是 $p > 0.5$。

p>0.5p > 0.5

2. 恰好 $k$ 个正确:从 $T$ 个模型中恰好有 $k$ 个预测正确的概率。

(Tk)p k(1−p) T−k\binom{T}{k} p^{\,k}(1-p)^{\,T-k}

3. 过半条件:$k \ge \lceil T/2 \rceil$,即“多数正确”的门槛。

⌈T/2⌉\lceil T/2 \rceil

4. 累加所有半数以上情形:把正确数从半数到全部的所有概率相加,就是集成整体正确的概率。

∑k=⌈T/2⌉T(Tk)p k(1−p) T−k\sum_{k=\lceil T/2 \rceil}^{T} \binom{T}{k} p^{\,k}(1-p)^{\,T-k}

回到小镇:三个臭皮匠并不是变成了诸葛亮,而是通过一套聪明的协作制度,把彼此的弱点变成了别人的强项。这也给 AI 从业者终极启示——把决定权交给集体,让好而不同的模型共同掌舵。竞赛大佬的冠军方案从来不是孤胆英雄,而是一支训练有素的“臭皮匠联军”。

AI 应用场景

数据竞赛刷榜

阶段:模型融合与调优阶段

解决的问题:单个模型在评测集上的精度爬到天花板后很难再突破,传统做法反复调参收效甚微;集成策略通过融合多个异构模型,在竞赛中常常能再压零点几个百分点的误差。

具体案例:某 Kaggle 房价预测比赛中,Top 队伍先用 XGBoost、LightGBM、三层神经网络各做 5 折交叉验证,收集每个样本的 OOF 预测值,再用岭回归作为元模型学习三者的最佳组合,最后把多个 Stacking 方案加权平均,RMSE 再降 3%,一举进入前十。

信贷风控评分

阶段:模型上线与稳定性保障

解决的问题:单个评分卡模型在客群结构迁移时波动大,坏账率随之上升;用 Bagging 投票可以抹平单一模型的偶发误判。

具体案例:某消费金融公司将逻辑回归、随机森林、XGBoost 三个模型组成投票委员会,只有至少两个模型判定“通过”时才放贷。上线一个季度后逾期率下降 15%,且不同数据周期下的 AUC 波动幅度减半。

医疗影像辅助诊断

阶段:多模态融合诊断

解决的问题:单一模型对特定病灶类型的检出率不足,漏诊风险高;Stacking 可以综合多个网络结构的互补信息。

具体案例:在肺结节检测项目中,团队用 2D CNN、3D CNN、Transformer 三套网络分别读取同一批 CT 切片,把三者的置信度向量拼在一起,交给一个逻辑回归元模型做最终判断。结果显示,结节检出的灵敏度从单模型最高的 88% 提升到 95%,而假阳性率基本不变。

Python 演示

python49 行
"""集成策略演示_手写多数投票三个弱决策树通过投票组合成强分类器"""import numpy as npfrom sklearn.datasets import make_moonsfrom sklearn.model_selection import train_test_splitfrom sklearn.tree import DecisionTreeClassifier  def train_weak_models(X, y, n_models=7, sub_ratio=0.7, seed=42):    """并行训练多个弱模型, 每个模型只用有放回抽样的子集"""    rng = np.random.RandomState(seed)    models = []    n = len(X)    for i in range(n_models):        idx = rng.choice(n, size=int(n * sub_ratio), replace=True)        model = DecisionTreeClassifier(max_depth=3, random_state=i)        model.fit(X[idx], y[idx])        models.append(model)    return models  def predict_vote(models, X):    """集成预测, 所有模型投票, 少数服从多数"""    preds = np.array([m.predict(X) for m in models])    votes = preds.mean(axis=0)    return (votes >= 0.5).astype(int)  def main():    X, y = make_moons(n_samples=600, noise=0.35, random_state=42)    X_tr, X_te, y_tr, y_te = train_test_split(        X, y, test_size=0.3, random_state=42    )     models = train_weak_models(X_tr, y_tr, n_models=7)    weak_scores = [round(m.score(X_te, y_te), 3) for m in models]    print("单个弱模型准确率:", weak_scores)    print("弱模型平均准确率:", round(float(np.mean(weak_scores)), 3))     ens_pred = predict_vote(models, X_te)    ens_acc = round(float(np.mean(ens_pred == y_te)), 3)    print("集成投票准确率:", ens_acc)    print("相比平均提升:", round(ens_acc - float(np.mean(weak_scores)), 3))  if __name__ == "__main__":    main()
目的:在 make_moons 模拟的弯月形数据集上,同时训练 7 棵深度只有 3 的浅决策树,每棵只用 70% 样本自助采样,最后对比“单棵树平均准确率”与“7 棵树投票准确率”。
  1. idx = rng.choice(n, size=int(n * sub_ratio), replace=True)有放回自助采样,等价于 Bagging 的“各自翻档案”。
  2. model.fit(X[idx], y[idx])每个弱模型在自己的子集上独立训练,互不干扰。
  3. preds = np.array([m.predict(X) for m in models])收集每个模型对测试集的预测,形成投票矩阵。
  4. votes = preds.mean(axis=0)按样本计算投票比例,相当于“得票率”。
  5. return (votes >= 0.5).astype(int)得票率过半判为类别 1,否则判为类别 0。
  6. weak_scores = [round(m.score(X_te, y_te), 3) for m in models]记录每个“臭皮匠”的单独表现。
  7. ens_acc = round(float(np.mean(ens_pred == y_te)), 3)计算集成后的整体准确率。

常见误区

误区只要我把 100 个模型叠起来,准确率肯定比 10 个模型高,所以集成就是拼命堆模型。

正解如果所有模型用的都是同一份数据、同一个算法、同样的随机种子,它们犯的错几乎完全一样,投票形同虚设——这不是“三个臭皮匠”,而是“一个臭皮匠复制三份”;同时每加一个模型都带来训练和推理成本,边际收益递减甚至可能过拟合。真正有效的前提是“好而不同”。

为何常见:因为“人多力量大”的直觉太强,忽略了集成有效的关键前提是错误模式的独立性。

误区反正都是集成,Bagging 和 Boosting 差不多,哪个顺手用哪个。

正解两者机制完全相反——Bagging 并行训练、投票表决,主要降低方差,适合高方差模型(如深决策树);Boosting 串行训练、加权纠错,主要降低偏差,适合欠拟合模型(如浅树或弱线性模型)。在方差已经很大的模型上继续 Boosting,等于给手抖的人加练高难度动作,容易过拟合。

为何常见:只看到“组合”的共性,忽略了“并行降方差/串行降偏差”的底层机制差异。

误区Stacking 就是把几个模型的预测结果求个平均,跟 Bagging 投票差不多。

正解投票和平均是“等权”组合,而 Stacking 的元模型能学习基模型之间的复杂关系——例如“当模型 A 高置信且模型 B 低置信时,应该更相信模型 C”。元模型可以是非线性模型,学到的是加权甚至条件依赖的组合策略,远非简单平均可比。

为何常见:因为集成的输出常常是概率值,人们很容易默认“组合”就是“平均一下”。

误区既然集成这么强,就算单个模型准确率只有 30%,多来几个也能被拯救成 90% 的强模型。

正解集成有效的基石是基模型准确率高于随机猜测(二分类中 p > 0.5)。若每个模型正确率只有 30%,多数投票的结论会偏向错误方向——模型越多,集成反而越差。投票公式的指数来自“大多数正确的概率”,而这个概率只有在 p > 0.5 时才会随 T 增大而逼近 1。

为何常见:“三个臭皮匠顶诸葛亮”的俗语让人误以为臭皮匠可以完全不懂行,忽略了“至少会干活的底线”。

面试题

Q1. 集成学习最基本的出发点是什么?

单选题 · easy

  • A.多个弱模型协作得到更强模型← 正确答案
  • B.用单个超强模型碾压所有难题
  • C.把多个模型参数求平均来减小体积
  • D.用交叉验证挑选出最优秀的一个

答案:A。集成学习的出发点是组合多个弱模型得到一个强模型,A 正确;B 是“大力出奇迹”路线,C 是模型压缩,D 是模型选择,都不是“集成”。

Q2. Bagging 使用的采样方式是?

单选题 · easy

  • A.无放回随机均匀抽出一份样本
  • B.有放回随机抽样构成每份训练集← 正确答案
  • C.分层抽样保证每个类别比例一致
  • D.每次只挑选难分类的样本子集

答案:B。Bagging 使用有放回的自助采样,每次抽出的子集可能包含重复样本,B 正确;A 无放回是普通划分,C 是分层采样,D 更接近 Boosting 对困难样本的关注。

Q3. Bagging 主要降低误差中的哪一部分?

单选题 · mid

  • A.训练数据的固有随机噪声
  • B.模型预测结果的偏差项
  • C.模型预测结果的方差项← 正确答案
  • D.特征选择造成的信息损失

答案:C。Bagging 通过多模型投票平均,把个别模型的异常波动抹平,主要降低方差项,C 正确;噪声项不可消除,Boosting 才更擅长降偏差,A/B 错误;特征选择损失与 Bagging 机制无直接关系。

Q4. Boosting 串行训练的一个核心特征是?

单选题 · mid

  • A.每个模型都独立并行地学习
  • B.后一个模型重点处理前者的错← 正确答案
  • C.所有模型对样本权重平均分配
  • D.全部模型都用同一份数据训练

答案:B。Boosting 的串行核心是每一轮都放大前一轮的误分类样本权重,让后一个模型重点看前者的“错题本”,B 正确;A 是 Bagging 的特征,C/D 都与 AdaBoost 的加权机制不符。

Q5. 随机森林中特征随机的主要目的是?

单选题 · mid

  • A.减少参与训练的特征数目节省内存
  • B.让不同决策树之间的差异度变大← 正确答案
  • C.保证每棵树在完全相同的特征上分裂
  • D.加快每棵树的训练速度减少耗时

答案:B。特征随机让每棵树只能在随机候选特征里选分裂点,树的结构天然不同,B 正确;虽然顺带减少了计算量,但那是副产品而非设计目的,A/D 不准确;C 与随机森林的做法完全相反。

Q6. AdaBoost 在每轮迭代后如何更新权重?

单选题 · mid

  • A.提高被错误分类样本的权重值← 正确答案
  • B.降低被错误分类样本的权重值
  • C.维持所有样本权重完全不变
  • D.只调整正确样本的权重就行

答案:A。AdaBoost 每轮会把被错分的样本权重调高、被分对的调低,迫使下一轮模型更关注难题,A 正确;B 方向反了,C 是普通 Bagging 的做法,D 忽略了错误样本才是更新的重点。

Q7. Stacking 元模型训练时的输入特征是什么?

单选题 · extreme

  • A.所有基模型的权重参数平均值
  • B.基模型在验证集上的预测输出← 正确答案
  • C.原始输入数据的特征全集
  • D.训练集真实标签向量的备份

答案:B。Stacking 把基模型的预测输出拼接成新的特征矩阵喂给元模型,B 正确;A 是模型权重融合的思路,C 会导致元模型重复学习原始特征,D 把标签当特征属于目标泄漏,均不符合 Stacking 的设计。

Q8. 以下哪些属于主流集成学习策略?

多选题 · easy

  • A.Bagging 并行投票法← 正确答案
  • B.Boosting 串行纠错法← 正确答案
  • C.Stacking 元模型融合← 正确答案
  • D.Gradient 梯度下降算法

答案:ABC。集成策略三大流派是 Bagging、Boosting、Stacking,A/B/C 正确;梯度下降是优化算法,用来训练单个模型,不属于集成策略。

Q9. 关于 Bagging 与 Boosting 的区别,正确的有?

多选题 · mid

  • A.Bagging 并行训练 Boosting 串行训练← 正确答案
  • B.Bagging 重降方差 Boosting 重降偏差← 正确答案
  • C.Bagging 每轮会更新样本的权重分布
  • D.Bagging 投票表决 Boosting 加权表决← 正确答案

答案:ABD。A 描述训练方式正确,B 描述作用对象正确,D 描述表决方式正确;更新样本权重分布是 Boosting 的特征,C 说反了。

Q10. 要使多数投票集成有效,需要满足哪些前提?

多选题 · hard

  • A.基模型的准确率要高于随机猜测← 正确答案
  • B.基模型之间的错误相关性尽量低← 正确答案
  • C.基模型的数量必须恰好等于三个
  • D.基模型必须使用完全相同的算法

答案:AB。基模型准确率高于 0.5 保证“正确是多数派”,错误相关性低保证投票能抵消个别失误,A/B 正确;模型数量没有“必须等于三”的限制,且完全相同的算法未必能制造多样性,C/D 错误。