想象你是一位美食节目的总导演,要举办一场“厨神争霸赛”。你请来 100 位厨师,不让他们互相商量,只给每人发一份“自助菜单”:从同一个巨大的食材市场里随机抓取食材——每抓一次就把食材放回去再抓。于是有的厨师拿了一篮西红柿,有的厨师一个西红柿都没抓到,手里却握着四根土豆。每位厨师凭自己的手艺独立做一道菜。最后你请来评委团,把分数取平均——一道集百家之长的“满汉头菜”就此诞生。 这正是机器学习中赫赫有名的 Bagging 集成。翻译成行话:“食材市场”是全部训练数据,“自助菜单”是 Bootstrap 自助采样,“100 位厨师”是并行训练的多个基学习器,“评委取平均”是投票聚合。单个厨师可能今天手抖多放三勺盐(高方差),但 100 道菜平均下来,随机波动被抵消,最终出品稳定又美味。本文会带你从原理、公式、工程实践一路讲到 Kaggle 竞赛实战,最后送上面试高频题。
掌握 Bagging,意味着你从“只会训练单模型”进化到“能搭建稳定集成系统”的工程师;无论打比赛还是做生产,你的模型都会比别人更抗噪、更可靠。
目录
可视化演示
动态展示Bagging自助采样并行训练、随机森林特征随机、竞赛融合技巧与方差降低原理。
本节配有交互动效(进入视口后自动加载,约 3KB)。
基础概念:一场厨神争霸赛的规则
如果你只请一位大厨操办国宴,他状态一差,整场宴会就砸了;但如果你请 100 位普通厨师,每人独立做一道菜,最后让评委团综合打分,结果几乎不会翻车——这就是“三个臭皮匠,顶个诸葛亮”的朴素智慧。机器学习里的集成学习,正是把这句老话变成算法。
Bagging 是集成学习中最基础的一支,全称 Bootstrap Aggregating,中文叫“自助采样聚合”。它不追求造一个完美无缺的天才模型,而是组合一批水平普通的模型。三个关键词理解它:Bootstrap 采样,即有放回地从原始数据中抽取同样大小的子集;并行训练,让每个子集独立训练一个基学习器,互不干扰;聚合,回归任务取平均,分类任务做多数投票。
1. 基学习器输出 \(f_t(x)\):第 \(t\) 位厨师(基学习器)对同一道食材(样本 \(x\))给出的判断结果。
2. 聚合操作 \(\mathrm{agg}\):评审团汇总方式——分类取投票众数,回归取算术平均。
3. 模型数量 \(T\):厨师人数,通常几十到几百,是 Bagging 最重要的超参数之一。
4. 整体输出 \(F(x)\):最终上桌的“满分头菜”,比任何一位厨师单独的作品都稳定。
所以 Bagging 的哲学是:不赌天才,只信团队。每位厨师水平普通没关系,只要他们的手艺各有千秋、互不雷同,最终的综合评分就让人放心。
\displaystyle F(x) = \mathrm{agg}\left(f_1(x),\, f_2(x),\, \dots,\, f_T(x)\right)核心算法流程:选材 → 做菜 → 评审
比赛分三幕。第一幕“选材”:总导演给每位厨师发一张自助菜单,让他们从食材市场(全量数据)里抓取食材,抓完放回再抓,直到篮子里有 N 份食材。这一抓,就抓出了 Bagging 最独特的味道——有放回抽样,学名 Bootstrap。
第二幕“做菜”:100 位厨师在后厨各自为战,谁也不知道别人做了什么菜。第三幕“评审”:评委团把每道菜打分,取平均或投票,宣布最终头菜。技术上的三步与之严格对应:自助采样生成训练子集、并行拟合基学习器、聚合输出。
1. 单次抽中概率 \(\frac{1}{N}\):N 份食材中,某一份被厨师抓到的可能性是 N 分之一。
2. 单次未抽中概率 \(1 - \frac{1}{N}\):这一把没抓到它,很正常。
3. 连抽 N 次都没抽中:每次放回再抓,所以概率连乘。
4. 至少被抽中一次:用全概率 1 减去上面的“一次都没抽中”。
那 36.8% 从没进过这位厨师篮子的食材,恰好可以用来当“神秘顾客”——它们对应的样本没参与这棵树的训练,拿来评估这棵树的表现最公平,这就是 Bagging 免费附赠的袋外验证。评委不只能评菜,还能顺手考核每位厨师。
\displaystyle P(\text{样本进入某个子集}) = 1 - \left(1 - \frac{1}{N}\right)^{N} \approx 0.632数学原理:为什么平均值得信
你可能会问:把普通厨师的作品平均一下,凭什么比大厨的单打独斗更稳?统计学早就给过答案——平均能压低方差。机器学习把模型误差拆成三块:偏差、方差、噪声。偏差是“系统性跑偏”,比如所有厨师都只会做咸味菜;方差是“随机性波动”,比如今天手抖多放三勺盐。Bagging 对偏差几乎无能为力,它专治方差。
假设 M 位厨师的手艺独立同分布,各自做菜的“随机波动”(方差)都是 σ²。把 M 道菜的分数量平均后,波动会怎样变化?公式给出答案。
1. 提取平均系数 \(\frac{1}{M^2}\):常系数从方差中提出时要平方,这是方差的基本性质。
2. 自方差部分 \(\sum_t \mathrm{Var}(f_t)\):每位厨师自己手艺的随机波动。
3. 协方差部分 \(\sum_{t \neq s} \mathrm{Cov}(f_t, f_s)\):厨师之间的相互影响——如果都跟同一个师傅学的,菜式雷同,协方差就大。
4. 完全独立情形:复述协方差为 0 时,方差变为原来的 \(1/M\)。
所以厨师越“各做各的”、越有创意,平均后的菜品就越稳定。这也解释了 Bagging 最重要的工程心法:一定要人为制造基学习器之间的多样性。随机森林之所以更强,就是因为它多加了“随机限制食材搭配”这味调料,让厨师们被迫做出更不重样的菜。
\displaystyle \mathrm{Var}\left(\frac{1}{M}\sum_{t=1}^{M} f_t(x)\right) = \frac{1}{M^2}\left(\sum_{t=1}^{M}\mathrm{Var}(f_t(x)) + \sum_{t \neq s}\mathrm{Cov}(f_t(x), f_s(x))\right)随机森林扩展:给厨师发“限定食材卡”
Bagging 只有一条规则太单调,于是随机森林(Random Forest)给它加了一条:“每位厨师只能从随机抽到的若干种食材里做菜。”想象一下,如果市场里有 100 种食材,传统 Bagging 允许厨师随意取用全部食材,大家最后还是会撞车——顶尖厨师都去抢那块和牛。随机森林规定:每次选菜时,只随机抽取一小批食材类别(特征),厨师只能从这里面挑,于是有人被迫研究豆腐,有人被迫钻研萝卜,菜的多样性立刻上来了。
分类任务中,这个随机子空间的大小通常取特征总数的平方根;回归任务宽松些,取三分之一。
\displaystyle \epsilon_{\text{oob}} = \frac{1}{N}\sum_{i=1}^{N} L\left(y_i,\, F_{\text{oob}}(x_i)\right)
> 对每个样本,只用那些"没在自助采样中见过它"的树做预测,计算损失后取平均。省下一份独立验证集,竞赛中尤其宝贵。1. 袋外预测 \(F_{\text{oob}}(x_i)\):排除包含第 \(i\) 个样本的所有树,只用没见过它的树投票。$$\displaystyle F_{\text{oob}}(x_i) = \mathrm{agg}\left(\{f_t(x_i) : i \notin \text{训练集}_t\}\right)$$2. 损失函数 \(L(y_i, \cdot)\):分类用 0-1 损失(预测错记 1),回归用均方误差。$$\displaystyle L(y_i, \hat{y}_i) = \begin{cases} \mathbb{1}[y_i \ne \hat{y}_i], & \text{分类} \\ (y_i - \hat{y}_i)^2, & \text{回归} \end{cases}$$3. 对所有样本求和取平均 \(\frac{1}{N}\sum\):像评委把 N 位神秘顾客的评价汇总。$$\displaystyle \frac{1}{N}\sum_{i=1}^{N} L(\cdot)$$4. 无偏近似:每个样本恰好被大约 36.8% 的树"袋外评价",不需要单独留验证集。$$\displaystyle \epsilon_{\text{oob}} \approx \text{泛化误差}$$大规模后厨还要注意类别不平衡:如果牛肉食材(正样本)只有 1%,随机抽样时很多厨师根本拿不到它。实战里常用分层 Bootstrap——从正负样本里分别做自助采样,保证每篮食材都有牛肉可料理。\displaystyle m_{\text{try}} = \lfloor \sqrt{d} \rfloor$$ > \(d\) 是原始特征总数,\(m_{\text{try}}\) 是每次分裂时随机挑选的特征候选数。给厨师发"限定食材卡",逼他们换着花样做菜。 #### 逐字解析 1. **特征总数 \(d\)**:食材市场的全部食材种类数。 $$\displaystyle d = \text{原始特征数量}$$2. **平方根 \(\sqrt{d}\)**:经验法则,保证每棵树都只看一小部分食材。 $$\displaystyle \sqrt{d}$$3. **向下取整 \(\lfloor \cdot \rfloor\)**:特征数必须是整数,有余数就舍去。 $$\displaystyle \lfloor\sqrt{d}\rfloor$$4. **每棵树的候选特征**:每次分裂前从全部 \(d\) 个特征中不重复地抽 \(m_{\text{try}}\) 个。 $$\displaystyle \text{候选特征集} \subseteq \{1, 2, \dots, d\},\quad |\text{候选特征集}| = m_{\text{try}}$$ 随机森林把 Bagging 的"样本多样性"升级为"样本+特征双多样性"。它带来的副产品是免费的特征重要性:如果某一种食材频繁出现在美味的菜里,说明它的贡献大。工程上可以用 `feature_importances_` 直接读出哪些特征最有用,这对特征筛选和数据探索帮助极大。 ### 工程实践要点:后厨管理的门道 办一场 100 人的后厨大赛,管理门道可不少。第一,食材总量得足够。如果整个市场只有几十份食材,厨师们再怎么随机抓,篮子内容也高度重叠,多样性无从谈起。所以 Bagging 通常需要足够的样本量,一般经验是至少有几千条样本才有意义。 第二,选什么样的厨师?Bagging 的理想基学习器是"低偏差高方差"的模型——比如浅层决策树。它本身不稳定,单独上菜时咸淡起伏很大,但正因为不稳定,不同的随机子集才能训练出差异明显的手艺,平均后收益最大。反过来,如果用线性回归做基学习器,它本身波动就小,再平均也没多大提升。 第三,验证环节不用额外抽评委——OOB 袋外误差就是免费的验证集。每棵树的"神秘顾客"各不相同,把样本交给所有没见过它的树综合打分,误差率就是泛化能力的近似估计。
竞赛实战应用:Kaggle 融合兵法
Kaggle 老手圈流传一句话:“单模型是门票,融合才是冲奖的关键。”Bagging 在竞赛中几乎无处不在,它的应用早已超出“训练一次、预测一次”的朴素玩法。最经典的姿势是用不同的随机种子跑很多次 Bagging,把每次的预测概率做平均——相当于举办 N 轮厨神争霸赛,再把 N 轮评审结果汇总,波动进一步被抹平。
更高级的技巧是“折外预测”:把训练集切成 K 折,每次用 K-1 折训练 Bagging,对剩下那一折做预测,拼出完整的训练集预测,这些预测可以作为第二层模型的输入特征(Stacking 的原料)。这套打法,本质上就是让厨师们每轮换一批神秘顾客,把评出来的分数当作新菜品的一部分继续升华。
\displaystyle GE \le \frac{\bar{\rho}\,(1 - s^2)}{s^2}
> 上界由两方博弈决定:树之间的平均相关性 \(\bar{\rho}\)(分子)与分类间隔 \(s\)(分母)。间隔越大、相关性越小,上界越小,泛化越好。1. 平均间隔 \(s\):正确类别的平均票数与最大错误类别的票数的差距,衡量“赢得多稳”。$$\displaystyle s = \mathrm{avg}\left(P(\hat{y}=y) - \max_{c \neq y} P(\hat{y}=c)\right)$$2. 平均相关性 \(\bar{\rho}\):树与树之间预测结果的相关系数均值,衡量厨师们手艺的雷同程度。$$\displaystyle \bar{\rho} = \frac{1}{T(T-1)}\sum_{t \neq s}\rho_{ts}$$3. 分子 \(\bar{\rho}(1 - s^2)\):相关性越高、间隔越小,上界越大,风险越高。$$\displaystyle \bar{\rho}(1 - s^2)$$4. 分母 \(s^2\):间隔越大,分母越大,上界被压得越低。$$\displaystyle s^2$$所以,当随机森林效果不好时,先看两件事:树之间是不是太像了(调大特征随机比例、减少特征冗余),以及分类间隔是否太薄(调树深、调代价敏感)。最后,可解释性也常被诟病——100 棵树的“众口一词”确实难讲清逻辑,实战中常用特征重要性 + SHAP 值给“黑箱”开一扇窗。---\displaystyle \hat{y} = \arg\max_{c}\; \sum_{t=1}^{T} w_t \cdot \mathbb{1}\left(f_t(x) = c\right)$$ > 给每位厨师一个"信任权重",他投给某道菜类别 \(c\) 的票乘以权重后累加,总权重最高的类别胜出。这是加权投票融合的通用公式。 #### 逐字解析 1. **指示函数 \(\mathbb{1}(\cdot)\)**:第 \(t\) 位厨师预测类别 \(c\) 时记 1,否则记 0。 $$\displaystyle \mathbb{1}(f_t(x) = c) = \begin{cases} 1, & f_t(x) = c \\ 0, & f_t(x) \ne c \end{cases}$$2. **权重 \(w_t\)**:对更可靠的模型(如 OOB 误差低的)给更大权重。 $$\displaystyle w_t = \frac{1}{\epsilon_{\text{oob},t}} \bigg/ \sum_{s=1}^{T} \frac{1}{\epsilon_{\text{oob},s}}$$3. **求和 \(\sum_{t=1}^{T}\)**:把全部厨师投给类别 \(c\) 的权重票加总。 $$\displaystyle \text{score}(c) = \sum_{t=1}^{T} w_t \cdot \mathbb{1}(f_t(x)=c)$$4. **\(\arg\max\) 决胜**:选总权重分最高的类别作为最终头菜。 $$\displaystyle \hat{y}$$ 实战提醒:概率平均(软投票)通常优于硬投票——因为概率保留了置信度信息。比如两个模型分别给"牛肉"评 0.9 分和 0.6 分,平均后仍有 0.75 的胜算;而硬投票可能把 0.6 直接抹成 1 或 0,损失中间信息。 ### 问题与调优:翻车现场急救指南 集成模型是不是永远不会翻车?当然不是。第一种经典翻车:误以为 Bagging 能治欠拟合。如果基模型是"高偏差"——比如深度只有 1 的决策树,本身只会机械剁肉不会调味,平均 100 个剁肉大汉,做出来的还是一道没味道的菜。此时该换更强的基学习器或者加特征,而不是堆 Bagging。 第二种:特征冗余严重。如果 100 个特征里 90 个是同一个信息的复制品,随机特征采样也救不了——所有树都在反复用那同一个信息,多样性名存实亡。此时应当先做特征筛选。第三种:资源开销失控。1000 棵树、百万样本,训练和推理都慢得令人窒息;工程上要对树的数量做早停,或者用更轻量的基学习器。 Breiman 老爷子给随机森林推导过一个著名的泛化误差上界,一句话概括就是"相关性越低、分类间隔越大,模型越稳",这成为一切调参的总纲。
AI 应用场景
信贷风控:多专家会诊代替单人拍板
阶段:模型训练与集成
解决的问题:传统逻辑回归在信贷数据上方差大,换一批客户样本,模型分数波动剧烈;单个决策树又容易过拟合局部噪声,导致坏账误判。
具体案例:某消费金融公司构建违约预测模型,用深度为 5 的决策树做基学习器,跑 200 棵树的 Bagging。相比单棵决策树,AUC 从 0.74 提升到 0.81,且 OOB 误差与线上验证误差高度一致,省掉了原本要单独留出的 20% 验证集。
Kaggle 竞赛:房价预测的融合上分
阶段:模型融合与后处理
解决的问题:单模型预测房价时对异常样本敏感,交叉验证分数忽高忽低;新手常因一次 bad fold 误判模型好坏。
具体案例:Kaggle "House Prices" 比赛中,选手用 LightGBM 做基学习器、换 10 个随机种子跑 Bagging 概率平均,CV 分数从 0.121 降到 0.117;再结合 OOF 预测作为第二层 Ridge 的输入,最终冲进前 5%。
医疗辅助诊断:医生小组投票制度
阶段:模型可靠性与评估
解决的问题:单个影像分类模型对某些罕见病灶误诊率高,且缺少标注数据时方差很大。
具体案例:某医疗 AI 团队用 Bagging 集成 30 个 ResNet 骨干网络,训练时对每个子集做有放回采样,诊断肺炎的敏感度从 0.87 提高到 0.93;同时用 OOB 样本自动生成每个样本的“置信度预警”,低置信度样本转人工复核。
Python 演示
import numpy as npfrom sklearn.tree import DecisionTreeClassifierfrom sklearn.datasets import make_moonsfrom sklearn.model_selection import train_test_splitfrom sklearn.metrics import accuracy_score class SimpleBagging: def __init__(self, base_model=None, n_estimators=20, random_state=42): self.base_model = base_model or DecisionTreeClassifier(max_depth=3) self.n_estimators = n_estimators self.random_state = random_state self.models = [] self.oob_error = None def fit(self, X, y): rng = np.random.RandomState(self.random_state) n = X.shape[0] self.models = [] oob_scores = np.zeros(n) oob_counts = np.zeros(n) for _ in range(self.n_estimators): idx = rng.choice(n, size=n, replace=True) model = self.base_model.__class__(**self.base_model.get_params()) model.fit(X[idx], y[idx]) self.models.append(model) mask = np.ones(n, dtype=bool) mask[idx] = False if mask.any(): oob_scores[mask] += model.predict(X[mask]) oob_counts[mask] += 1 valid = oob_counts > 0 oob_pred = np.zeros(n) oob_pred[valid] = oob_scores[valid] / oob_counts[valid] self.oob_error = 1 - accuracy_score( y[valid], (oob_pred[valid] > 0.5).astype(int)) return self def predict(self, X): preds = np.mean([m.predict(X) for m in self.models], axis=0) return (preds > 0.5).astype(int) if __name__ == "__main__": X, y = make_moons(n_samples=500, noise=0.3, random_state=0) X_tr, X_te, y_tr, y_te = train_test_split( X, y, test_size=0.3, random_state=0) bag = SimpleBagging( base_model=DecisionTreeClassifier(max_depth=3), n_estimators=50) bag.fit(X_tr, y_tr) acc = accuracy_score(y_te, bag.predict(X_te)) print("Bagging 测试集准确率:", acc) print("OOB 袋外误差率:", bag.oob_error)
idx = rng.choice(n, size=n, replace=True)有放回地抽取 n 个样本下标,相当于厨师从食材市场抓一把放回再抓。model.fit(X[idx], y[idx])每位厨师只用自己篮子里(子集里)的食材做菜。mask = np.ones(n, dtype=bool); mask[idx] = False标记没被这位厨师抽中的袋外样本。oob_scores[mask] += model.predict(X[mask])只让“没见过这个样本”的树投票,公平考核。oob_pred[valid] = oob_scores[valid] / oob_counts[valid]把每棵树的袋外预测取平均,得到袋外软投票。preds = np.mean([m.predict(X) for m in self.models], axis=0)全部厨师对测试样本预测取平均。(preds > 0.5).astype(int)平均分超过 0.5 判为正类,相当于评审团投票过半通过。
常见误区
误区反正集成了很多模型,欠拟合的问题肯定也能解决,Bagging 应该既降偏差又降方差。
正解Bagging 主要靠平均来压低“随机波动”(方差),对“系统性跑偏”(偏差)几乎无能为力。如果每个厨师都只会做咸菜,平均 100 道咸菜依然咸得发齁。治欠拟合要用更强的基学习器、更丰富的特征,而不是堆 Bagging。
为何常见:大家直觉认为“三个臭皮匠”什么都顶得上,忽略了方差与偏差是两码事。
误区Bagging 就是每次随机抽一部分数据训练,抽过的就不能再抽了。
正解自助采样是有放回的。每次从 N 个样本里抽 N 次,同一个样本可能被重复选中多次,同时约 36.8% 的样本一次也没被抽到(OOB)。正是“有放回”才让每个数据集各不相同,也是 OOB 验证的由来。如果改成无放回,袋外样本这个免费福利就不存在了。
为何常见:日常生活中“随机抽一部分”默认是无放回的,容易把直觉带偏。
误区把每棵决策树都调到完美,每棵树都达到 99% 准确率,集成效果肯定更强。
正解如果每棵树都近乎完美,它们之间的预测高度相关,平均后的方差削减极其有限。Bagging 的理想基学习器是低偏差高方差的弱模型(如浅树);它单独用时不太稳,但多样性足,平均后的提升巨大。厨师们若师出同门、菜式雷同,再多名厨也白搭。
为何常见:人们天然用“单模型能力”的思维去评判集成里的一员,忽略了多样性才是集成的燃料。
误区OOB 误差是模型在袋外数据上的表现,应该等于测试集上的误差,拿它直接对比线下分数就行。
正解OOB 是泛化误差的近似无偏估计,但具体数值仍与测试误差有差异——测试集是不同的数据分布切片,OOB 也不参与最后的测试集预测。两者趋势强相关,但不相等。竞赛中 OOB 更适合用来挑超参数,而不是当作最终成绩的预言。
为何常见:把“近似无偏”理解成“完全相等”,忽略估计量与真实值之间的随机波动。
面试题
Q1. Bagging 集成使用的抽样方式是哪一种?
- A.从样本中有放回抽取相同数量← 正确答案
- B.从样本中无放回抽取一部分
- C.按类别比例做分层抽样
- D.按顺序切割出固定比例
答案:A。Bagging 的核心是有放回的自助采样(Bootstrap),每次抽取与原始数据集同样数量的样本,允许重复。B 是无放回抽样,C 是分层抽样,D 是顺序切分,都不符合。
Q2. Bagging 主要降低模型哪方面的误差?
- A.降低模型的高偏差问题
- B.降低模型的高方差问题← 正确答案
- C.减少训练数据的固有噪声
- D.同时降低偏差与方差
答案:B。Bagging 通过对多个高方差基学习器的结果做平均,对冲随机波动,主攻方差。偏差是系统性错误,平均解决不了;噪声是数据本身的属性,任何模型都躲不开。
Q3. 自助采样中,单个样本大约有多大概率出现在某个 Bagging 训练子集中?
- A.约 36.8% 的概率被选中
- B.约 50% 的概率被选中
- C.约 63.2% 的概率被选中← 正确答案
- D.约 100% 的概率被选中
答案:C。每次抽取 N 次,某样本被抽中至少一次的概率为 \(1 - (1-1/N)^N\),N 较大时趋近 \(1 - e^{-1} \approx 63.2\%\)。36.8% 是它一次也没被抽中的概率。
Q4. 关于袋外样本 OOB,下列说法正确的是?
- A.某棵树训练时未使用的样本← 正确答案
- B.测试集中随机抽取的样本
- C.验证集中人工挑选的样本
- D.训练集中重复最多的样本
答案:A。OOB 是自助采样中没被某棵树抽到的样本。因为每棵树的采样结果不同,每个样本总会被大约 36.8% 的树“袋外”,因此不需要单独留验证集即可近似评估泛化误差。
Q5. 随机森林相比朴素 Bagging 的改进包括哪些?
- A.加入特征随机抽样机制← 正确答案
- B.用梯度下降替代树分裂
- C.分裂时仅从特征子集选最优← 正确答案
- D.强制所有树使用相同特征
答案:AC。随机森林在 Bagging 的样本随机基础上,引入特征随机抽样:每次分裂只从随机挑选的特征子集中选最优(即 A、C 两个方面)。B 是梯度提升的做法,D 恰恰削弱多样性。
Q6. 若 M 个基学习器完全独立且同方差 σ²,则平均后的方差是多少?
- A.方差保持不变,仍约 σ²
- B.方差缩小为原来的 M 分之一← 正确答案
- C.方差扩大为原来的 M 倍
- D.方差会随 M 增大而增大
答案:B。独立意味着协方差为 0,由方差公式可得 \(\mathrm{Var}(\bar{f}) = M\sigma^2 / M^2 = \sigma^2 / M\)。这正是 Bagging 方差降低的数学本质,也说明基学习器独立性至关重要。
Q7. 以下哪些情况更适合使用 Bagging 集成?
- A.基学习器高方差低偏差时← 正确答案
- B.基学习器高偏差低方差时
- C.数据量大且特征维度高时← 正确答案
- D.模型处于严重欠拟合状态时
答案:AC。Bagging 擅长对抗方差,因此基学习器应当是“低偏差高方差”的形态(如深树);数据量大、特征多维时多样性充足,集成收益明显。高偏差欠拟合场景应该换更强模型或加特征。
Q8. 关于 OOB 误差,正确的理解是?
- A.需要额外留出独立验证集
- B.是泛化误差的近似估计← 正确答案
- C.一定小于测试集上的误差
- D.必须通过交叉验证获得
答案:B。OOB 误差用每棵树的袋外样本预测汇总得到,是泛化误差的无偏近似,且不消耗额外数据。它不一定比测试误差小,也无需交叉验证;它和测试误差趋势相关但不相等。
Q9. 决定 Breiman 随机森林泛化误差上界的关键因素是?
- A.树间相关性与平均间隔决定← 正确答案
- B.树的数量与树的深度决定
- C.样本量与特征数之比决定
- D.损失函数的类型与大小决定
答案:A。Breiman 上界 \(GE \le \bar{\rho}(1-s^2)/s^2\) 中,\(\bar{\rho}\) 是树间平均相关性,\(s\) 是平均分类间隔。相关性越低、间隔越大,上界越紧,泛化越好。这指导我们通过随机特征来降相关性。
Q10. 在 Kaggle 竞赛中,常见的 Bagging 进阶用法有?
- A.折外预测可作为第二层特征← 正确答案
- B.多随机种子重复训练取均值← 正确答案
- C.只保留一棵树以降低内存
- D.硬投票结果总是优于软投票
答案:AB。折外预测(OOF)是 Stacking 的标准原料;多随机种子跑 Bagging 再平均预测概率是冲奖常用手段,都属于 Bagging 思想的外延。C 丢弃了集成本身,D 说法错误——软投票通常保留更多置信度信息,往往优于硬投票。