报告随机森林的训练误差的衡量标准是什么?

机器算法验证 r 机器学习 分类 随机森林 过拟合
2022-02-04 07:28:20

我目前正在使用randomForestR 中的包为分类问题拟合随机森林,并且不确定如何报告这些模型的训练错误

当我使用通过命令获得的预测来计算它时,我的训练误差接近 0%:

predict(model, data=X_train)

X_train训练数据在哪里。

在对相关问题的回答中,我读到应该使用袋外(OOB) 训练误差作为随机森林的训练误差指标。该数量是根据使用以下命令获得的预测计算得出的:

predict(model)

在这种情况下,OOB 训练误差更接近平均 10-CV 测试误差,即 11%。

我想知道:

  1. 是否普遍接受将 OOB 训练错误报告为随机森林的训练错误度量?

  2. 传统的训练误差测量方法是否人为地降低了?

  3. 如果传统的训练误差测量方法人为地降低了,那么我可以比较哪两种测量方法来检查 RF 是否过拟合?

2个回答

添加到@Soren H. Welling 的答案。

1.是否普遍接受将OOB训练误差报告为随机森林的训练误差度量?

不,训练模型上的 OOB 错误与训练错误不同。但是,它可以作为预测准确性的衡量标准。

2. 传统的训练误差测量方法是否人为降低?

如果我们使用默认设置运行分类问题,这是正确的。确切的过程在Andy Liaw 的论坛帖子中进行了描述,他在 R 中维护randomForest包,如下所示:

在大多数情况下,训练集上的表现是没有意义的。(大多数算法都是这种情况,但 RF 尤其如此。)在默认(和推荐)设置中,树会增长到最大大小,这意味着大多数终端节点中很可能只有一个数据点,并且终端节点的预测由节点中的多数类或单独的数据点确定。假设一直都是这样;即,在所有树中,所有终端节点都只有一个数据点。在森林中大约 64% 的树木中,一个特定的数据点将是“袋内”的,并且这些树木中的每一棵都有对该数据点的正确预测。即使该数据点为袋外的所有树都给出了错误的预测,但通过所有树的多数票,你最终还是会得到正确的答案。因此,基本上对 RF 训练集的完美预测是“设计的”。

为了避免这种行为,可以设置nodesize > 1(以便树不会增长到最大大小)和/或设置sampsize < 0.5N(以便少于 50% 的树可能包含给定点(xi,yi)

3. 如果传统的训练误差测量方法人为地降低了,那么我可以比较哪两种测量方法来检查 RF 是否过拟合?

如果我们使用nodesize = 1和运行 RF sampsize > 0.5,那么 RF 的训练误差将始终接近 0。在这种情况下,判断模型是否过拟合的唯一方法是将一些数据保留为独立的验证集。然后,我们可以将 10-CV 测试错误(或 OOB 测试错误)与独立验证集上的错误进行比较。如果 10-CV 测试误差远低于独立验证集上的误差,则模型可能过拟合。

[编辑于 21.7.15 8:31 AM CEST]

我想您使用 RF 进行分类。因为在这种情况下,该算法会生成完全生长的树,其中只有一个目标类的纯终端节点。

predict(model, data=X_train)

这行编码就像一条狗在追逐自己的尾巴 [~66%]。任何训练样本的预测都是训练样本本身的类别。对于回归,如果节点中有 5 个或更少的样本或者节点是纯的,则射频停止。这里的预测误差很小,但不是 0%。

在机器学习中,我们经常使用大型假设空间。这意味着对于我们的训练集的数据结构,总会有许多尚未证伪的假设/解释/模型。在经典统计中,假设空间通常很小,因此直接模型拟合根据某些假设的概率论提供了丰富的信息。在机器学习中,直接缺乏拟合是否与模型的偏差有关。偏差是模型的“不灵活”。它不是无论如何提供一个近似的泛化能力(预测新事件的能力)。对于算法模型,交叉验证是近似泛化能力的最佳工具,因为没有制定任何理论。但是,如果独立抽样的模型假设失败,该模型可能无论如何都是无用的,即使在其他情况下表现良好的交叉验证也是如此。最后,最有力的证明是令人满意地预测了多个不同来源的外部测试集。

回到 CV:Out-of-bag 通常是一种公认​​的 CV 类型。我个人认为 OOB-CV 提供了与 5-fold-CV 相似的结果,但这是一个非常小的麻烦。如果将 RF 与 SVM 进行比较,那么 OOB-CV 没有用,因为我们通常会避免使用 SVM。取而代之的是,SVM 和 RF 都将嵌入完全相同的交叉验证方案中,例如 10 倍 10 重复,每个重复具有匹配的分区。通常还需要对任何特征工程步骤进行交叉验证。如果要保持清洁,则可以将整个数据管道嵌入到 CV 中。

如果你用你的测试集(或交叉验证)调整你的模型,你会再次夸大你的假设空间,并且经过验证的预测性能可能过于乐观。相反,您将需要一个校准集(或校准 CV-loop)来调整和一个测试验证集(或验证 CV-loop)来评估您的最终最佳模型。

从极端的意义上说,只有当你看到这个结果时,你从不采取行动,你的验证分数才会是公正的。这就是验证的悖论,为什么我们会获得一个只有在你不采取行动的情况下才是正确的知识。在实践中,社区愿意接受一些发表偏见,即那些随机获得过度乐观验证的研究人员比那些不幸获得过度悲观验证的研究人员更有可能发表论文。因此有时为什么不能复制其他模型。