R:tuneRF函数的行为不清楚(randomForest包)

时间:2014-11-30 09:19:38

标签: r optimization machine-learning data-mining random-forest

我对tuneRF函数的stepFactor参数的含义感到不舒服,randomForest函数用于调整{{3}}函数中进一步使用的mtry参数。

tuneRF的文档说stepFactor是一个重要的范围 选定的mtry会缩小或膨胀。 显然,由于mtry是随机选择的一些变量,它必须是一个整数,但我在网上看到了很多使用stepFactor=1.5的例子。 起初我认为R默认使用下一个mtry等于floor(mtry_current-stepFactor),但事实证明我错了。 此外,我不理解在search left... search right...工作时显示tuneRF的R命令。 我认为这是关于膨胀或缩小mtry参数的信息,但我的假设并没有证明是正确的。

总结这个长期而不是太优雅的描述我的怀疑,我的问题是: 为什么stepFactor不是整数?

如何选择后续的mtry值? 左/右搜索实际意味着什么?

非常感谢任何帮助!! :)

1 个答案:

答案 0 :(得分:8)

以下是tuneRF如何运作的摘要:

  1. 一个。将 mtry 设置为默认值sqrt( p )进行分类,将 p / 3设置为回归(其中 p > =变量总数)

    湾在 mtry 设置为上面的默认值的情况下计算随机森林的袋外(OOB)错误(例如error_default)

  2. 一个。向左看:设置 mtry =默认值/ stepFactor。例如,如果stepFactor = 1.5并且您的默认起始值​​为8,则 mtry 将设置为8 / 1.5 = 5.33,向上舍入为整数,这将给出6

    湾计算OOB错误,比如error_left

  3. 一个。向右看:设置 mtry =默认值* stepFactor。要继续我的示例, mtry 将设置为8 * 1.5 = 12

    湾计算OOB错误,比如error_right

  4. 我。如果(error_default< error_right)或(error_default< error_left),最好的 mtry 是默认值

    II。如果不满足先前条件,但errors_default和error_right / error_left之间的增量小于改进参数,则最佳 mtry 是默认值

    III。在不失一般性的情况下,如果不满足条件,并且如果error_right< error_left,if(error_default-error_right)> 改进,将 mtry 设置为mtry_right(12)。从现在开始,总是走右边

  5. 如果是4.iii。验证,迭代:将 mtry 设置为mtry_right * stepFactor(在我的示例中,12 * 1.5 = 18),计算OOB错误并将其与上一步获得的错误进行比较(在我的示例中) ,对于 mtry = 12)。如果错误新错误较小,并且错误减少的增益足够(即> 改进),请选择新的 mtry 并继续重复这些步骤,否则停止并返回当前 mtry 作为最佳 mtry

  6. 您设置的较小的stepFactor(例如,1.1,1.2),您尝试的 mtry 的值越多(精细搜索),您设置的stepFactor越大(例如,2,2.5),越少你尝试的价值(粗略搜索)。此外,如果改进的值较低,搜索将继续更长时间。