【问题标题】:What is out of bag error in Random Forests? [closed]随机森林中的袋外错误是什么? [关闭]
【发布时间】:2013-09-03 17:10:15
【问题描述】:

什么是随机森林中的袋外错误? 它是在随机森林中找到正确数量的树的最佳参数吗?

【问题讨论】:

标签: language-agnostic machine-learning classification random-forest


【解决方案1】:

我会尝试解释一下:

假设我们的训练数据集用 T 表示,假设数据集有 M 个特征(或属性或变量)。

T = {(X1,y1), (X2,y2), ... (Xn, yn)}

Xi is input vector {xi1, xi2, ... xiM}

yi is the label (or output or class). 

RF 总结:

随机森林算法是一种主要基于两种方法的分类器 -

  • 装袋
  • 随机子空间方法。

假设我们决定在我们的森林中拥有S 的树木数量,那么我们首先创建"same size as original"S 数据集,该数据集是通过替换T 中的数据的随机重采样创建的(每个数据集n 次)。这将产生{T1, T2, ... TS} 数据集。这些中的每一个都称为引导数据集。由于“替换”,每个数据集Ti 都可能有重复的数据记录,并且 Ti 可能会丢失原始数据集中的多个数据记录。这称为Bootstrapping。 (en.wikipedia.org/wiki/Bootstrapping_(statistics))

Bagging 是采用引导程序然后聚合在每个引导程序上学习的模型的过程。

现在,RF 创建S 树并使用m (=sqrt(M) or =floor(lnM+1)) 可能的特征中的m (=sqrt(M) or =floor(lnM+1)) 随机子特征来创建任何树。这称为随机子空间方法。

因此,为每个 Ti 引导数据集创建一个树 Ki。如果你想对一些输入数据D = {x1, x2, ..., xM} 进行分类,你让它通过每棵树并产生S 输出(每棵树一个),可以用Y = {y1, y2, ..., ys} 表示。最终预测是对该集合的多数票。

袋外错误:

创建分类器(S树)后,对于原始训练集中的每个(Xi,yi),即T,选择不包括(Xi,yi)的所有Tk。注意,这个子集是一组自举数据集,不包含原始数据集中的特定记录。这组被称为袋外示例。有n 这样的子集(原始数据集 T 中的每个数据记录一个)。 OOB 分类器是仅对Tk 的投票聚合,因此它不包含(xi,yi)

泛化误差的袋外估计是训练集上袋外分类器的错误率(与已知的yi 比较)。

为什么重要?

Breiman [1996b] 中袋装分类器的误差估计研究,提供了经验证据表明袋外估计 与使用与训练大小相同的测试集一样准确 放。因此,使用袋外误差估计无需 用于预留测试集。1

(感谢@Rudolf 的更正。下面是他的cmets。)

【讨论】:

  • 谢谢@bourneli,我同意当答案简洁时有用性会更好,但我专注于将答案放在占用最多空间的上下文中。
  • 很好的解释,但是有一个小错误——你称之为“Bagging”的带替换采样,实际上被命名为“Bootstrapping”。 (en.wikipedia.org/wiki/Bootstrapping_(statistics)) Bagging 是采用引导程序然后聚合在每个引导程序上学习的模型的过程。 (en.wikipedia.org/wiki/Bootstrap_aggregating))
  • 嗨,Alex,基本上如上所述 - 我们创建了一个 OOB 分类器,它一次获取一条记录(由所有可用训练记录中的 (Xi,yi) 表示(由 T 表示) - 找到所有缺少此记录的引导样本或数据集(例如 T3T7T8T9) - 我们在森林中运行当前记录 (Xi,yi),但仅计算与引导样本对应的树的选票没有这个记录(即K3K7K8K9)。如果还不清楚,请告诉我。
  • Now, RF creates S trees and uses m ... random subfeatures out of M possible features to create any tree. 不是创建整个树,而是创建树中的每个节点。据我了解,每次它必须制作一个分叉节点时,它都会对 m 特征进行采样以使用。
  • 很好的解释。或许值得一提:根据数据的结构,OOB 误差估计可能与仅使用整个数据的一小部分进行训练时预测的误差不同。这可能会影响一个人对适当数量的树的决定。例如,如果您的数据由来自 100 个独立实验的 1000 个数据点组成,则分类器的准确度会有所不同,如果它仅在实验 1-80 上进行训练并在 81-100 上进行验证,而 OOB 方法中的所有数据点都来自所有 100 个实验基本上是随机的。
【解决方案2】:

在 Breiman 的随机森林算法的原始实现中,每棵树都在大约 2/3 的总训练数据上进行训练。随着森林的建立,每棵树都可以在未用于构建该树的样本上进行测试(类似于留出交叉验证)。这是袋外误差估计——随机森林在构建时的内部误差估计。

【讨论】:

    猜你喜欢
    • 2018-07-15
    • 1970-01-01
    • 2017-05-28
    • 2020-02-08
    • 2021-01-21
    • 2016-10-26
    • 2013-12-03
    • 2015-05-10
    • 2019-06-01
    相关资源
    最近更新 更多