插入:使用随机森林并包括交叉验证

时间:2015-04-09 17:46:30

标签: random-forest cross-validation r-caret

我使用插入包来训练随机森林,包括重复的交叉验证。我想知道是否使用了Breiman的原始RF中的OOB,或者是否将其替换为交叉验证。如果它被替换,我是否具有与Breiman 2001中描述的相同的优点,如通过减少输入数据之间的相关性来提高准确度?由于OOB是在更换时绘制的,而CV是在没有替换的情况下绘制的,这两个程序是否可比错误率的OOB估计是多少(基于CV)?

树木如何生长?是否使用了CART?

由于这是我的第一个主题,如果您需要更多详细信息,请与我们联系。非常感谢提前。

2 个答案:

答案 0 :(得分:5)

这里有很多基本问题,你可以通过阅读有关机器学习或预测建模的书来获得更好的服务。这可能就是为什么你没有得到太多回应。

对于caret,您还应该咨询其中一些问题得到解答的package website

以下是一些注释:

  • RF的CV和OOB估计有些不同。 This post可能有助于解释如何。对于此应用程序,在构建模型时计算来自随机森林的OOB速率,而CV使用在计算随机森林模型之后预测的保持样本。
  • 原始随机森林模型(此处使用)使用未修剪的CART树。同样,这是在许多教科书和论文中。

最高

答案 1 :(得分:2)

我最近也对此感到困惑,但阅读Max Kuhn的Applied Predictive Modeling第4章帮助我理解了它的不同之处。

如果在R中使用randomForest,则通过对替换的N个案例进行抽样来增长许多决策树(N是训练集中的案例数)。然后在每个节点处对m个变量进行采样,其中m小于预测变量的数量。然后,每个树完全生长,并且基于该节点中的案例模式将终端节点分配给类。通过将新病例发送到所有树木然后进行投票来对新病例进行分类;多数票获胜。

这里要注意的要点是:

  • 如何种植树木 - 采样替换(引导)。这意味着某些情况将在您的引导程序示例中多次表示,而其他情况可能根本不表示。引导样本的大小与训练数据集的大小相同。

  • 未选择用于构建树的情况称为OOB样本 - 通过对构建树时未选择的情况进行分类来计算OOB误差估计。 bootstrap样本中约63%的数据点至少表示一次。

如果你在R中使用插入符号,你通常会使用插入符号:: train(....)并将方法指定为" rf"和trControl =" repeatedcv"。您可以将trControl更改为" oob"如果你想要的话。它的工作方式如下(我将使用一个简单的10倍cv重复5次的例子):训练数据集被分成10倍大小相等的大小,将使用一些树来构建只有9个样本 - 所以省略了第一个折叠(保持不变)。通过树木运行案例并用于估计绩效测量来预测所保留的样本。第一个子集返回到训练集,并且程序重复,第二个子集保持不变,依此类推。该过程重复10次。整个过程可以重复多次(在我的例子中,我这样做了5次);对于5次运行中的每次运行,训练数据集可以分成10个略微不同的折叠。应该注意的是,使用50个不同的保持样本来计算模型效力。

需要注意的要点是:

  • 这包括取样而不更换 - 您拆分训练数据并在9个样本上建立模型并预测所保留的样本(10个样本中的剩余1个样本)并重复上述过程

    < / LI>
  • 使用小于训练数据集的数据集构建模型;这与上面讨论的bootstrap方法不同

您正在使用2种不同的重采样技术,这些技术会产生不同的结果,因此它们无法比较。 k倍重复cv倾向于具有低偏差(对于k大);其中k是2或3,偏差很高并且与自举方法相当。 K fold cv往往会有很大的变化......