什么是“随机森林”中的出库错误? [关闭]
classification
language-agnostic
machine-learning
random-forest
9
0

什么是“随机森林”中的出库错误?它是在随机森林中找到正确数量的树木的最佳参数吗?

参考资料:
Stack Overflow
收藏
评论
共 2 个回答
高赞 时间 活跃

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

收藏
评论

我将尝试解释:

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

套袋是获取引导程序,然后汇总在每个引导程序中学习的模型的过程。

现在,RF创建了S棵树,并使用M可能的特征中的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 。请注意,此子集是一组boostrap数据集,其中不包含原始数据集中的特定记录。此集合称为“袋外示例”。有n此类子集(原始数据集T中的每个数据记录一个)。 OOB分类器是仅针对Tk的票的汇总,因此不包含(xi,yi)

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

它为什么如此重要?

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

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

收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题