随机森林中的包装袋错误是什么?

时间:2013-08-30 21:46:13

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

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

2 个答案:

答案 0 :(得分:122)

我会尝试解释:

假设我们的训练数据集由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个数量的树,那么我们首先创建S "same size as original"数据集{T1, T2, ... TS},这些数据集是通过随机重新采样T替换而创建的(n次为每个数据集)。这将生成Ti个数据集。其中每个都称为引导数据集。由于“替换”,每个数据集Bootstrapping可能具有重复的数据记录,并且Ti可能缺少原始数据集中的多个数据记录。这称为S。 (en.wikipedia.org/wiki/Bootstrapping_(statistics))

套袋是引导和引导的过程。然后聚合在每个bootstrap上学习的模型。

现在,RF会创建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 }。值得注意的是,这个子集是一组不包含原始数据集中特定记录的boostrap数据集。这个集合被称为袋外示例。有Tk个这样的子集(原始数据集T中的每个数据记录一个)。 OOB分类器仅在(xi,yi)之上进行投票聚合,因此它不包含yi

概括错误的袋外估计是训练集上的袋外分类器的错误率(将其与已知的{{1}}进行比较)。

为什么重要? 对Breiman [1996b]中袋装分类器的误差估计的研究给出了经验证据,证明袋外估计与使用与训练集相同大小的测试集一样准确。因此,使用out-of-bag误差估计消除了对预留测试集的需要。

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

答案 1 :(得分:35)

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