首页 文章

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

提问于
浏览
0

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

> output
Random Forest 

 375 samples
  592 predictors
  2 classes: 'alzheimer', 'control' 

  No pre-processing
  Resampling: Cross-Validated (3 fold) 
  Summary of sample sizes: 250, 250, 250 
  Resampling results across tuning parameters:

  mtry  Accuracy   Kappa    
  2   0.6826667  0.3565541
  34   0.7600000  0.5194246
  591   0.7173333  0.4343563

   Accuracy was used to select the optimal model using  the largest value.
   The final value used for the model was mtry = 34.

2 回答

  • 1

    由于您使用 caret 包构建了随机林,因此建议使用 $finalModel 获取最终模型的摘要,该模型是使用预定义参数(默认值:OOB精度)选择的模型 .

    现在回答你的问题:

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

    enter image description here

    每棵树的树木生长过程如下( bold 用于强调,假设您正在使用 caretrandomForest 直接使用 randomForest 实现):

    • 对于具有N×M维度的数据集(观测值为N,变量数量为M),从原始数据中替换N的样本(〜三分之二),并将此新样本用作训练集,并留下观察结果( 〜三分之一)用作测试集

    • 数字 m (小于 M )是 specified such that at each node split, m variables are selected at random out of the M and the best candidate out of m (measured by information gain) is used to split the node . m 在森林生长期间是一个常数

    • 每棵树在没有修剪前或后修剪的情况下尽可能地生长

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

  • 1

    randomForest的文档:

    mtry:在每次拆分时随机抽样为候选的变量数 .

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

相关问题