72

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

4

2 回答 2

183

我将尝试解释:

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

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

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

yi is the label (or output or class). 

射频摘要:

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

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

假设我们决定S在我们的森林中拥有许多树,那么我们首先创建S数据集,该数据集是"same size as original"通过替换 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特征来创建任何树。这称为随机子空间方法。

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

袋外错误:

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

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

它为什么如此重要?

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

(感谢@Rudolf 的更正。他的评论如下。)

于 2014-07-09T20:20:39.337 回答
56

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

于 2013-09-24T04:09:22.870 回答