自助法是统计学、机器学习、模型评估和人工智能中非常常见的一种方法。它用来描述一种通过有放回抽样反复构造新数据集从而估计模型性能或统计量不确定性的方法。换句话说自助法是在回答当手头数据有限时怎样通过重复抽样来更充分地评估模型或估计结果的稳定性。如果说留出法是“把一部分数据留出来做测试”交叉验证法是“让不同数据轮流做验证”那么自助法则是“从原始数据中有放回地反复抽样构造多个训练样本集”。因此自助法常用于模型评估、置信区间估计、随机森林、Bagging 集成学习和小样本统计分析是理解机器学习中“重采样思想”的重要基础。一、基本概念什么是自助法自助法Bootstrap是一种重采样方法。它的基本思想是从已有数据集中有放回地反复抽样生成新的数据集。假设原始数据集有 n 个样本自助法每次也抽取 n 个样本但每次抽样后都把样本放回去。因此同一个样本可能被抽中多次也可能一次都没有被抽中。例如原始数据为D [A, B, C, D, E]一次自助抽样可能得到D_bootstrap [A, C, C, E, B]可以看到• C 被抽中了两次• D 没有被抽中• 抽样后的数据集大小仍然是 5这就是“有放回抽样”。从通俗角度看自助法可以理解为用已有样本不断“重新组队”构造出许多看起来不同的训练数据集。这些新数据集都来自原始数据但每个数据集的样本组合略有不同。通过观察模型或统计量在这些重采样数据集上的变化就可以估计结果是否稳定。二、为什么需要自助法自助法之所以重要是因为真实任务中数据往往有限。在理想情况下我们希望拥有很多独立数据集用来反复训练和评估模型。但现实中我们通常只有一份数据。例如• 医学数据样本有限• 小规模实验数据成本很高• 某些异常检测样本稀少• 企业业务数据可能只有一段时间的记录这时如果只做一次训练 / 测试划分评估结果可能很偶然。自助法提供了一种思路既然没有更多真实数据就从已有数据中反复有放回抽样模拟多个可能的数据集。它可以帮助我们回答• 模型评估结果是否稳定• 某个统计量波动范围有多大• 模型在不同重采样数据上表现是否一致• 样本不足时如何更充分利用数据从通俗角度看自助法不是凭空创造新信息而是通过反复重组已有数据观察结果对样本变化有多敏感。这对于估计不确定性非常有用。三、自助法的核心流程自助法的基本流程可以分成四步。1、从原始数据中有放回抽样给定原始数据集 D大小为 n。每次从 D 中有放回抽取 n 个样本得到一个自助样本集其中D* 表示一次自助抽样得到的数据集。因为是有放回抽样所以• 某些样本可能重复出现• 某些样本可能没有出现• D* 的大小通常与原始数据集 D 相同2、在自助样本集上训练模型或计算统计量例如可以在 D* 上训练一个模型D* → 训练模型 → 得到模型 f*也可以在 D* 上计算均值、方差、中位数等统计量。3、重复多次重复 B 次自助抽样其中• B 表示自助抽样次数• Dᵢ* 表示第 i 次抽样得到的数据集每次都训练模型或计算统计量。4、汇总结果最后汇总 B 次结果例如计算平均值、标准差、置信区间或模型评估指标。如果第 i 次得到的结果为 sᵢ则可以计算平均结果其中• sᵢ 表示第 i 次自助抽样得到的结果• s̄ 表示平均结果从通俗角度看自助法流程就是反复抽样 → 反复训练或计算 → 观察结果分布重点不只是得到一个结果而是观察结果在不同重采样数据上的波动情况。四、有放回抽样与袋外样本自助法最关键的特点是有放回抽样。这意味着每次抽样后样本仍然可以再次被抽中。假设原始数据集有 n 个样本每次有放回抽 n 次。某个特定样本在一次抽样中没有被抽中的概率大约为当 n 较大时也就是说在一次自助抽样中大约有 36.8% 的原始样本不会出现在自助样本集中。相应地大约有 63.2% 的原始样本会至少出现一次。这些没有被抽中的样本称为袋外样本Out-of-Bag SamplesOOB。从通俗角度看• 自助样本集被抽中参与训练的样本• 袋外样本这次没被抽中、可以用于评估的样本袋外样本非常有用因为它们没有参与当前模型训练可以用来估计模型在未见数据上的表现。这也是随机森林中 OOB 评估的基础。五、自助法与模型评估自助法可以用于模型评估。基本思路是每次用自助样本集训练模型用袋外样本评估模型重复多次后汇总评估结果。例如• 第 1 次抽样得到 D₁*用它训练模型再用袋外样本 OOB₁ 评估• 第 2 次抽样得到 D₂*用它训练模型再用袋外样本 OOB₂ 评估• 重复 B 次得到 B 个评估结果最后计算平均得分。从通俗角度看每次抽样都会自然留下没有被抽中的样本这些样本可以充当临时测试集。这与留出法和交叉验证法不同• 留出法是一次性划分训练集和测试集• 交叉验证法是按折轮流划分训练集和验证集• 自助法是通过有放回抽样形成训练集并用未抽中的样本评估自助法尤其适合• 数据量较小• 希望估计评估结果稳定性• 需要构造多个模型进行集成• 希望估计统计量的不确定性不过自助法评估也有局限。因为自助样本集中存在重复样本训练数据的分布与原始数据并不完全相同因此评估结果需要谨慎解释。六、自助法与 Bagging、随机森林自助法不仅用于评估也广泛用于集成学习。1、BaggingBagging 是 Bootstrap Aggregating 的缩写可以理解为自助抽样 模型集成它的基本流程是• 从原始数据中多次自助抽样• 每个自助样本集训练一个模型• 多个模型共同投票或平均例如在分类任务中多个模型可以投票决定最终类别在回归任务中多个模型可以取平均预测值。从通俗角度看Bagging 就是让多个模型分别在不同重采样数据上学习再把它们的判断合起来。这样可以降低单个模型对某一次数据扰动的敏感性。2、随机森林随机森林Random Forest是 Bagging 思想的重要应用。它通常会• 对样本进行自助抽样• 为每棵树构造不同训练数据• 在节点划分时随机选择部分特征• 最后通过多棵树投票或平均得到结果从通俗角度看随机森林中的每棵树看到的数据略有不同学习到的规则也略有不同最后集体决策。这种方法可以降低单棵决策树的方差使模型更稳定。3、袋外评估由于每棵树训练时都有部分样本没有被抽中这些袋外样本可以用来评估该树。把多棵树的袋外预测汇总起来就可以得到 OOB 评估结果。因此自助法是理解 Bagging 和随机森林的重要基础。七、自助法与留出法、交叉验证法的区别自助法、留出法和交叉验证法都属于模型评估或重采样思想但方式不同。1、留出法留出法一次性划分数据数据集 → 训练集 测试集优点是简单、快速。缺点是结果容易受单次划分影响。2、交叉验证法交叉验证法将数据分成 K 折每次用 K − 1 折训练用 1 折验证重复 K 次。优点是评估更稳定。缺点是计算成本较高。3、自助法自助法通过有放回抽样生成多个训练集原始数据 → 有放回抽样 → 多个自助样本集每个自助样本集可能包含重复样本同时留下袋外样本用于评估。从通俗角度看• 留出法切一刀• 交叉验证法轮流切• 自助法反复有放回地重新抽三者都试图解决一个问题如何在有限数据上更可靠地训练和评估模型。选择哪种方法取决于数据规模、任务目标、计算成本和评估要求。八、自助法的优势、局限与使用注意事项1、自助法的主要优势自助法最大的优势是能在数据有限时估计结果稳定性。它不需要额外收集数据而是通过反复有放回抽样观察模型或统计量在不同样本组合下的变化。其次自助法适合估计不确定性。例如可以用多次自助抽样结果估计均值、标准误差和置信区间。再次自助法是 Bagging 和随机森林的重要基础。它通过构造不同训练集使多个模型产生差异从而提升集成效果。从通俗角度看自助法的优势在于它让我们用一份数据模拟多份可能的数据从而观察结果是否稳定。2、自助法的主要局限自助法也有局限。首先它并没有真正创造新信息。所有自助样本都来自原始数据如果原始数据有偏差自助法也会继承这种偏差。其次自助样本中存在重复样本。这可能导致训练集与真实独立样本集不完全一致。再次如果样本之间不独立自助法可能不适用。例如时间序列数据、同一用户的连续记录、空间相关数据等不能简单随机有放回抽样。此外自助法计算成本可能较高。如果重复抽样 B 次并训练 B 个模型训练开销会明显增加。3、使用自助法时需要注意的问题使用自助法时需要注意• 自助抽样是有放回抽样• 自助法适合独立同分布样本• 原始数据有偏差时自助法不能自动消除偏差• 袋外样本可以用于估计模型表现• 重复次数 B 越大结果通常越稳定但计算成本越高• 时间序列数据不宜直接使用普通自助抽样• 自助法常用于置信区间估计、Bagging 和随机森林从实践角度看自助法是一种强大的重采样工具但前提是理解它的抽样假设和适用范围。九、Python 示例下面给出几个简单示例用来帮助理解自助法的基本使用。示例 1手动实现一次自助抽样import numpy as np # 原始数据data np.array([A, B, C, D, E]) # 有放回抽样自助法抽取与原始数据相同数量的样本bootstrap_sample np.random.choice( data, sizelen(data), # 抽样数量等于原始数据长度 replaceTrue # 有放回允许重复抽取) print(原始数据, data)print(自助样本, bootstrap_sample)这个例子中• replaceTrue 表示有放回抽样• 同一个样本可能出现多次• 某些样本可能没有出现这就是自助法最基本的抽样方式。示例 2找出袋外样本import numpy as np # 原始数据data np.array([A, B, C, D, E]) # 有放回抽样生成自助样本与原始数据等长bootstrap_sample np.random.choice( data, sizelen(data), replaceTrue # 允许重复部分样本可能未被抽中) # 找出袋外样本原始数据中未被抽中的元素oob_samples np.setdiff1d(data, bootstrap_sample) print(原始数据, data)print(自助样本, bootstrap_sample)print(袋外样本, oob_samples)这个例子中• 自助样本用于训练• 袋外样本没有参与这次训练• 袋外样本可以用于评估该次模型需要注意小样本情况下袋外样本数量波动较大。示例 3用自助法估计均值的不确定性import numpy as np # 一组样本数据假设来自某个分布data np.array([12, 15, 14, 10, 18, 20, 17, 16, 19, 13]) B 1000 # 自助抽样次数bootstrap_means [] # 存储每次抽样的均值 for _ in range(B): # 有放回抽样样本量与原始数据相同 sample np.random.choice( data, sizelen(data), replaceTrue ) bootstrap_means.append(sample.mean()) # 记录该次抽样的均值 bootstrap_means np.array(bootstrap_means) # 原始样本的均值print(原始样本均值, data.mean())# 自助法得到的均值分布的平均值应接近原始均值print(自助均值平均值, bootstrap_means.mean())# 自助法得到的均值的标准差标准误的估计print(自助均值标准差, bootstrap_means.std()) # 通过自助法估计原始均值的 95% 置信区间百分位数法lower np.percentile(bootstrap_means, 2.5)upper np.percentile(bootstrap_means, 97.5) print(均值的 95% 自助置信区间, lower, upper)这个例子展示了自助法的经典用途通过反复有放回抽样估计统计量的波动范围。这里的统计量是均值也可以换成中位数、方差、准确率等。示例 4使用 Scikit-learn 的 resamplefrom sklearn.utils import resample # 自助抽样工具import numpy as np # 原始特征矩阵5个样本2个特征X np.array([ [1, 2], [3, 4], [5, 6], [7, 8], [9, 10]]) # 原始标签y np.array([0, 1, 0, 1, 0]) # 有放回抽样生成与原数据等长的自助样本X_boot, y_boot resample( X, y, replaceTrue, # 有放回 n_sampleslen(X), # 抽样数量与原数据集相同 random_state42 # 固定随机种子) print(自助样本 X)print(X_boot)print(自助样本 y)print(y_boot)这个例子中• replaceTrue 表示有放回抽样• n_sampleslen(X) 表示抽取与原始数据相同数量的样本• X 和 y 会同步抽样保证特征与标签对应关系不变示例 5随机森林中的 OOB 评估from sklearn.datasets import load_wine # 加载葡萄酒数据集from sklearn.ensemble import RandomForestClassifier # 随机森林分类器from sklearn.model_selection import train_test_split # 数据集划分 # 加载葡萄酒数据集178样本13特征3类别wine load_wine()X wine.data # 特征y wine.target # 标签 # 划分训练集和测试集测试集30%分层采样保持类别比例X_train, X_test, y_train, y_test train_test_split( X, y, test_size0.3, random_state42, stratifyy) # 随机森林使用自助抽样bootstrapTrue并开启袋外OOB评估model RandomForestClassifier( n_estimators200, # 决策树数量 bootstrapTrue, # 采用自助法生成每棵树的训练集 oob_scoreTrue, # 使用袋外样本评估模型无需单独验证集 random_state42) model.fit(X_train, y_train) # 训练模型 print(OOB 得分, model.oob_score_) # 袋外样本评估的准确率print(测试集得分, model.score(X_test, y_test)) # 独立测试集准确率这个例子中• bootstrapTrue 表示每棵树使用自助抽样• oob_scoreTrue 表示使用袋外样本估计模型表现• oob_score_ 是随机森林基于袋外样本得到的评估结果从通俗角度看随机森林训练每棵树时都会留下一部分没被抽中的样本这些样本可以用来做内部评估。 小结自助法是一种通过有放回抽样反复构造新数据集的重采样方法。它可以在数据有限时估计统计量或模型表现的稳定性也可以用于 Bagging 和随机森林等集成学习方法。自助抽样中未被抽中的样本称为袋外样本可用于模型评估。对初学者而言可以把自助法理解为从已有数据中反复“抽签重组”用许多重新组合的数据集观察结果是否稳定。“点赞有美意赞赏是鼓励”
AI 术语通俗词典:自助法
自助法是统计学、机器学习、模型评估和人工智能中非常常见的一种方法。它用来描述一种通过有放回抽样反复构造新数据集从而估计模型性能或统计量不确定性的方法。换句话说自助法是在回答当手头数据有限时怎样通过重复抽样来更充分地评估模型或估计结果的稳定性。如果说留出法是“把一部分数据留出来做测试”交叉验证法是“让不同数据轮流做验证”那么自助法则是“从原始数据中有放回地反复抽样构造多个训练样本集”。因此自助法常用于模型评估、置信区间估计、随机森林、Bagging 集成学习和小样本统计分析是理解机器学习中“重采样思想”的重要基础。一、基本概念什么是自助法自助法Bootstrap是一种重采样方法。它的基本思想是从已有数据集中有放回地反复抽样生成新的数据集。假设原始数据集有 n 个样本自助法每次也抽取 n 个样本但每次抽样后都把样本放回去。因此同一个样本可能被抽中多次也可能一次都没有被抽中。例如原始数据为D [A, B, C, D, E]一次自助抽样可能得到D_bootstrap [A, C, C, E, B]可以看到• C 被抽中了两次• D 没有被抽中• 抽样后的数据集大小仍然是 5这就是“有放回抽样”。从通俗角度看自助法可以理解为用已有样本不断“重新组队”构造出许多看起来不同的训练数据集。这些新数据集都来自原始数据但每个数据集的样本组合略有不同。通过观察模型或统计量在这些重采样数据集上的变化就可以估计结果是否稳定。二、为什么需要自助法自助法之所以重要是因为真实任务中数据往往有限。在理想情况下我们希望拥有很多独立数据集用来反复训练和评估模型。但现实中我们通常只有一份数据。例如• 医学数据样本有限• 小规模实验数据成本很高• 某些异常检测样本稀少• 企业业务数据可能只有一段时间的记录这时如果只做一次训练 / 测试划分评估结果可能很偶然。自助法提供了一种思路既然没有更多真实数据就从已有数据中反复有放回抽样模拟多个可能的数据集。它可以帮助我们回答• 模型评估结果是否稳定• 某个统计量波动范围有多大• 模型在不同重采样数据上表现是否一致• 样本不足时如何更充分利用数据从通俗角度看自助法不是凭空创造新信息而是通过反复重组已有数据观察结果对样本变化有多敏感。这对于估计不确定性非常有用。三、自助法的核心流程自助法的基本流程可以分成四步。1、从原始数据中有放回抽样给定原始数据集 D大小为 n。每次从 D 中有放回抽取 n 个样本得到一个自助样本集其中D* 表示一次自助抽样得到的数据集。因为是有放回抽样所以• 某些样本可能重复出现• 某些样本可能没有出现• D* 的大小通常与原始数据集 D 相同2、在自助样本集上训练模型或计算统计量例如可以在 D* 上训练一个模型D* → 训练模型 → 得到模型 f*也可以在 D* 上计算均值、方差、中位数等统计量。3、重复多次重复 B 次自助抽样其中• B 表示自助抽样次数• Dᵢ* 表示第 i 次抽样得到的数据集每次都训练模型或计算统计量。4、汇总结果最后汇总 B 次结果例如计算平均值、标准差、置信区间或模型评估指标。如果第 i 次得到的结果为 sᵢ则可以计算平均结果其中• sᵢ 表示第 i 次自助抽样得到的结果• s̄ 表示平均结果从通俗角度看自助法流程就是反复抽样 → 反复训练或计算 → 观察结果分布重点不只是得到一个结果而是观察结果在不同重采样数据上的波动情况。四、有放回抽样与袋外样本自助法最关键的特点是有放回抽样。这意味着每次抽样后样本仍然可以再次被抽中。假设原始数据集有 n 个样本每次有放回抽 n 次。某个特定样本在一次抽样中没有被抽中的概率大约为当 n 较大时也就是说在一次自助抽样中大约有 36.8% 的原始样本不会出现在自助样本集中。相应地大约有 63.2% 的原始样本会至少出现一次。这些没有被抽中的样本称为袋外样本Out-of-Bag SamplesOOB。从通俗角度看• 自助样本集被抽中参与训练的样本• 袋外样本这次没被抽中、可以用于评估的样本袋外样本非常有用因为它们没有参与当前模型训练可以用来估计模型在未见数据上的表现。这也是随机森林中 OOB 评估的基础。五、自助法与模型评估自助法可以用于模型评估。基本思路是每次用自助样本集训练模型用袋外样本评估模型重复多次后汇总评估结果。例如• 第 1 次抽样得到 D₁*用它训练模型再用袋外样本 OOB₁ 评估• 第 2 次抽样得到 D₂*用它训练模型再用袋外样本 OOB₂ 评估• 重复 B 次得到 B 个评估结果最后计算平均得分。从通俗角度看每次抽样都会自然留下没有被抽中的样本这些样本可以充当临时测试集。这与留出法和交叉验证法不同• 留出法是一次性划分训练集和测试集• 交叉验证法是按折轮流划分训练集和验证集• 自助法是通过有放回抽样形成训练集并用未抽中的样本评估自助法尤其适合• 数据量较小• 希望估计评估结果稳定性• 需要构造多个模型进行集成• 希望估计统计量的不确定性不过自助法评估也有局限。因为自助样本集中存在重复样本训练数据的分布与原始数据并不完全相同因此评估结果需要谨慎解释。六、自助法与 Bagging、随机森林自助法不仅用于评估也广泛用于集成学习。1、BaggingBagging 是 Bootstrap Aggregating 的缩写可以理解为自助抽样 模型集成它的基本流程是• 从原始数据中多次自助抽样• 每个自助样本集训练一个模型• 多个模型共同投票或平均例如在分类任务中多个模型可以投票决定最终类别在回归任务中多个模型可以取平均预测值。从通俗角度看Bagging 就是让多个模型分别在不同重采样数据上学习再把它们的判断合起来。这样可以降低单个模型对某一次数据扰动的敏感性。2、随机森林随机森林Random Forest是 Bagging 思想的重要应用。它通常会• 对样本进行自助抽样• 为每棵树构造不同训练数据• 在节点划分时随机选择部分特征• 最后通过多棵树投票或平均得到结果从通俗角度看随机森林中的每棵树看到的数据略有不同学习到的规则也略有不同最后集体决策。这种方法可以降低单棵决策树的方差使模型更稳定。3、袋外评估由于每棵树训练时都有部分样本没有被抽中这些袋外样本可以用来评估该树。把多棵树的袋外预测汇总起来就可以得到 OOB 评估结果。因此自助法是理解 Bagging 和随机森林的重要基础。七、自助法与留出法、交叉验证法的区别自助法、留出法和交叉验证法都属于模型评估或重采样思想但方式不同。1、留出法留出法一次性划分数据数据集 → 训练集 测试集优点是简单、快速。缺点是结果容易受单次划分影响。2、交叉验证法交叉验证法将数据分成 K 折每次用 K − 1 折训练用 1 折验证重复 K 次。优点是评估更稳定。缺点是计算成本较高。3、自助法自助法通过有放回抽样生成多个训练集原始数据 → 有放回抽样 → 多个自助样本集每个自助样本集可能包含重复样本同时留下袋外样本用于评估。从通俗角度看• 留出法切一刀• 交叉验证法轮流切• 自助法反复有放回地重新抽三者都试图解决一个问题如何在有限数据上更可靠地训练和评估模型。选择哪种方法取决于数据规模、任务目标、计算成本和评估要求。八、自助法的优势、局限与使用注意事项1、自助法的主要优势自助法最大的优势是能在数据有限时估计结果稳定性。它不需要额外收集数据而是通过反复有放回抽样观察模型或统计量在不同样本组合下的变化。其次自助法适合估计不确定性。例如可以用多次自助抽样结果估计均值、标准误差和置信区间。再次自助法是 Bagging 和随机森林的重要基础。它通过构造不同训练集使多个模型产生差异从而提升集成效果。从通俗角度看自助法的优势在于它让我们用一份数据模拟多份可能的数据从而观察结果是否稳定。2、自助法的主要局限自助法也有局限。首先它并没有真正创造新信息。所有自助样本都来自原始数据如果原始数据有偏差自助法也会继承这种偏差。其次自助样本中存在重复样本。这可能导致训练集与真实独立样本集不完全一致。再次如果样本之间不独立自助法可能不适用。例如时间序列数据、同一用户的连续记录、空间相关数据等不能简单随机有放回抽样。此外自助法计算成本可能较高。如果重复抽样 B 次并训练 B 个模型训练开销会明显增加。3、使用自助法时需要注意的问题使用自助法时需要注意• 自助抽样是有放回抽样• 自助法适合独立同分布样本• 原始数据有偏差时自助法不能自动消除偏差• 袋外样本可以用于估计模型表现• 重复次数 B 越大结果通常越稳定但计算成本越高• 时间序列数据不宜直接使用普通自助抽样• 自助法常用于置信区间估计、Bagging 和随机森林从实践角度看自助法是一种强大的重采样工具但前提是理解它的抽样假设和适用范围。九、Python 示例下面给出几个简单示例用来帮助理解自助法的基本使用。示例 1手动实现一次自助抽样import numpy as np # 原始数据data np.array([A, B, C, D, E]) # 有放回抽样自助法抽取与原始数据相同数量的样本bootstrap_sample np.random.choice( data, sizelen(data), # 抽样数量等于原始数据长度 replaceTrue # 有放回允许重复抽取) print(原始数据, data)print(自助样本, bootstrap_sample)这个例子中• replaceTrue 表示有放回抽样• 同一个样本可能出现多次• 某些样本可能没有出现这就是自助法最基本的抽样方式。示例 2找出袋外样本import numpy as np # 原始数据data np.array([A, B, C, D, E]) # 有放回抽样生成自助样本与原始数据等长bootstrap_sample np.random.choice( data, sizelen(data), replaceTrue # 允许重复部分样本可能未被抽中) # 找出袋外样本原始数据中未被抽中的元素oob_samples np.setdiff1d(data, bootstrap_sample) print(原始数据, data)print(自助样本, bootstrap_sample)print(袋外样本, oob_samples)这个例子中• 自助样本用于训练• 袋外样本没有参与这次训练• 袋外样本可以用于评估该次模型需要注意小样本情况下袋外样本数量波动较大。示例 3用自助法估计均值的不确定性import numpy as np # 一组样本数据假设来自某个分布data np.array([12, 15, 14, 10, 18, 20, 17, 16, 19, 13]) B 1000 # 自助抽样次数bootstrap_means [] # 存储每次抽样的均值 for _ in range(B): # 有放回抽样样本量与原始数据相同 sample np.random.choice( data, sizelen(data), replaceTrue ) bootstrap_means.append(sample.mean()) # 记录该次抽样的均值 bootstrap_means np.array(bootstrap_means) # 原始样本的均值print(原始样本均值, data.mean())# 自助法得到的均值分布的平均值应接近原始均值print(自助均值平均值, bootstrap_means.mean())# 自助法得到的均值的标准差标准误的估计print(自助均值标准差, bootstrap_means.std()) # 通过自助法估计原始均值的 95% 置信区间百分位数法lower np.percentile(bootstrap_means, 2.5)upper np.percentile(bootstrap_means, 97.5) print(均值的 95% 自助置信区间, lower, upper)这个例子展示了自助法的经典用途通过反复有放回抽样估计统计量的波动范围。这里的统计量是均值也可以换成中位数、方差、准确率等。示例 4使用 Scikit-learn 的 resamplefrom sklearn.utils import resample # 自助抽样工具import numpy as np # 原始特征矩阵5个样本2个特征X np.array([ [1, 2], [3, 4], [5, 6], [7, 8], [9, 10]]) # 原始标签y np.array([0, 1, 0, 1, 0]) # 有放回抽样生成与原数据等长的自助样本X_boot, y_boot resample( X, y, replaceTrue, # 有放回 n_sampleslen(X), # 抽样数量与原数据集相同 random_state42 # 固定随机种子) print(自助样本 X)print(X_boot)print(自助样本 y)print(y_boot)这个例子中• replaceTrue 表示有放回抽样• n_sampleslen(X) 表示抽取与原始数据相同数量的样本• X 和 y 会同步抽样保证特征与标签对应关系不变示例 5随机森林中的 OOB 评估from sklearn.datasets import load_wine # 加载葡萄酒数据集from sklearn.ensemble import RandomForestClassifier # 随机森林分类器from sklearn.model_selection import train_test_split # 数据集划分 # 加载葡萄酒数据集178样本13特征3类别wine load_wine()X wine.data # 特征y wine.target # 标签 # 划分训练集和测试集测试集30%分层采样保持类别比例X_train, X_test, y_train, y_test train_test_split( X, y, test_size0.3, random_state42, stratifyy) # 随机森林使用自助抽样bootstrapTrue并开启袋外OOB评估model RandomForestClassifier( n_estimators200, # 决策树数量 bootstrapTrue, # 采用自助法生成每棵树的训练集 oob_scoreTrue, # 使用袋外样本评估模型无需单独验证集 random_state42) model.fit(X_train, y_train) # 训练模型 print(OOB 得分, model.oob_score_) # 袋外样本评估的准确率print(测试集得分, model.score(X_test, y_test)) # 独立测试集准确率这个例子中• bootstrapTrue 表示每棵树使用自助抽样• oob_scoreTrue 表示使用袋外样本估计模型表现• oob_score_ 是随机森林基于袋外样本得到的评估结果从通俗角度看随机森林训练每棵树时都会留下一部分没被抽中的样本这些样本可以用来做内部评估。 小结自助法是一种通过有放回抽样反复构造新数据集的重采样方法。它可以在数据有限时估计统计量或模型表现的稳定性也可以用于 Bagging 和随机森林等集成学习方法。自助抽样中未被抽中的样本称为袋外样本可用于模型评估。对初学者而言可以把自助法理解为从已有数据中反复“抽签重组”用许多重新组合的数据集观察结果是否稳定。“点赞有美意赞赏是鼓励”