什么是随机森林中的袋外误差? 它是否是寻找正确的随机森林树数量的最优参数?
什么是随机森林中的袋外误差? 它是否是寻找正确的随机森林树数量的最优参数?
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
个数据集,这些数据集与T中的数据进行随机重采样(每个数据集重复n次),大小与原始数据集相同。这将导致数据集{T1,T2,... TS}
。每个数据集称为引导数据集。由于“with-replacement”,每个数据集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
,选择不包括 (Xi,yi)
的所有 Tk
。请注意,这个子集是不包含原始数据集中特定记录的引导数据集的集合。这个集合称为袋外示例。有 n
这样的子集(每个原始数据集 T 中的数据记录一个)。OOB 分类器仅在不包含 (xi,yi)
的 Tk
上聚合投票。
袋外估计用于泛化误差,是指袋外分类器在训练集上的错误率(与已知的yi
进行比较)。
为什么这很重要?
在Breiman [1996b]的袋式分类器误差估计研究中,给出了经验证据表明,袋外估计与使用与训练集大小相同的测试集一样准确。因此,使用袋外误差估计可以省去设置一个测试集的必要性。1
(感谢@Rudolf的更正。见下方评论。)
在布雷曼(Breiman)最初实现的随机森林算法中,每个决策树都是在大约总训练数据的2/3上训练的。由于随机森林是逐步构建的,因此每棵树可以在未使用该树构建的样本上进行测试(类似于留一交叉验证)。这就是袋外误差估计 - 随机森林正在构建时的内部误差估计。