使用插入包进行交叉验证的最终模型

时间:2018-02-05 18:36:54

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

我使用Caret包中的Random Forest方法对我的数据进行了交叉验证,R表示最终模型是使用mtry = 34构建的,这是否意味着在最终的随机森林中(由交叉验证产生)只有34个变量我的数据集中的参数用于在树中拆分?

const int

2 个答案:

答案 0 :(得分:1)

randomForest的文档:

  

mtry:随机抽样为每个变量的变量数   分裂。

在这种情况下,最终模型考虑树中每个拆分的34个随机变量。

答案 1 :(得分:1)

由于您使用caret软件包构建了随机森林,因此建议使用$finalModel获取最终模型的摘要,该模型是使用pre选择的模型-defined参数(默认值:OOB准确度)。

现在回答你的问题:

从下面的图片中,您可以看到随机森林从每个分割中随机选择34(我的例子是31,但你得到了点)变量。根据您的问题,与仅使用34个变量来增长每棵树相混淆。实际上,所有变量都用在足够大的随机森林中;仅在每个节点上,从34的池中挑选一个变量以减少模型的方差。这使得每棵树彼此更加独立,因此,对大量树木进行平均的收益更为显着。

enter image description here

每棵树的树木生长过程如下(粗体用于强调,假设您正在使用randomForest或{{1}的caret实施直接):

  • 对于具有N x M维度的数据集(观察值为N,M为变量数量),从原始数据中替换N的样本(~~三分之二),并将此新样本用作训练集,并留下观察结果out(〜三分之一)用作测试集
  • 指定<{1}}(小于randomForest)的数字,以便在每个节点拆分时,m变量随机选出M并且m中的最佳候选者(通过信息增益衡量)用于拆分节点M在森林生长期间是一个常数
  • 每棵树在没有修剪前或后修剪的情况下生长到最大程度

对于2个月的迟到回答感到抱歉,但我认为这是一个很好的问题,如果它没有得到关于m参数真正做什么的更详细的解释,那将是一种耻辱。这经常被误解,所以我想我会在这里添加一个答案!