《随机森林》(四)参数详解

1. 基本参数

2. 袋外估计

随机森林在构建每棵树时,采用有放回抽样,即从原始训练集中有放回地随机抽取样本,这样可能会存在一些未被抽到的样本集,称为袋外数据(OOB 数据)。

对于每棵树而言,用对应的 OOB 数据进行预测,然后对整个随机森林所有树的 oob 预测结果进行评估,比如计算分类问题中的准确率或回归问题中的均方误差等,这个评估值就是 oob score。

oob score 的优点在于它可以在不使用额外的验证集的情况下,对随机森林模型的性能进行估计,有助于了解模型的泛化能力。

简言之:使用 oob 数据对随机森林泛化能力进行评估。

from sklearn.ensemble import RandomForestClassifier


if __name__ == '__main__':

    # 开启 oob score 计算需要设置以下两个参数
    # bootstrap 设置为 True
    # oob_score 设置为 True
    # 以下参数会影响到 oob score 的计算
    # max_samples 有放回采样的样本数量,会影响到 oob 样本的数量
    # n_estimators 会影响到有放回采样的次数
    rf = RandomForestClassifier(n_estimators=3, max_features=None, bootstrap=True, oob_score=True, random_state=42)

具体的计算过程是什么样的?

假设一个二分类问题,训练集有 0、1、2、3、4、5、6、7、8、9 共计 10 个样本,随机森林需要训练 3 个基学习器构成强学习器,每个基学习器的 oob 样本集如下:

  • 第一个基学习器:0、4、5
  • 第二个基学习器:2、5、6、7
  • 第三个基学习器:0、4、5

表格数据含义如下:

  • 基学习器列表示某个基学习器对其 oob 样本的预测标签
  • 预测标签表示该样本的预测标签(多数标签)

这里需要重点注意:

  1. scikit-learn 中随机森林实现中,oob 是基于所有的训练数据进行
  2. 即使某个样本不存在于 oob 中,也会参与到 oob score 的计算
  3. 太少的基学习器可能会导致某些训练样本无法有效参与 oob score 计算

最后,对于 oob score:

  • 并非完全准确。虽然 oob score 可以提供一个性能评估的参考,但它并不是完全准确的。它只是对模型性能的一个近似估计,与使用独立验证集进行评估可能存在一定的差异。
  • 评估分数不稳定。oob score 的计算结果可能会受到随机抽样的影响,具有一定的不稳定性。不同的随机抽样结果可能会导致不同的 oob score。为了减少这种不稳定性,可以多次计算 oob score 并取平均值,但这也会增加计算成本。
未经允许不得转载:一亩三分地 » 《随机森林》(四)参数详解
评论 (0)

9 + 3 =