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

tuneRF的文档说stepFactor是一个幅度
所选的mtry放气或膨胀。
显然,由于mtry是随机选择的多个变量,因此它必须是整数,但是我在网上看到了许多使用stepFactor=1.5的示例。
起初,我认为R默认使用下一个mtry等于floor(mtry_current-stepFactor),但事实证明我错了。
而且,我不理解在search left... search right...工作时显示tuneRF的R命令。
我以为这是有关增大或缩小mtry参数的信息,但我的推测并没有正确。

总结一下我的疑虑的冗长而不太优美的描述,我的问题是:
为什么stepFactor不是整数?

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

任何帮助将不胜感激! :)

最佳答案

以下是tuneRF工作原理的摘要:


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

b。计算mtry设置为上面找到的默认值的随机森林的袋外(OOB)错误(例如error_default)
一种。向左看:设置mtry =默认值/ stepFactor。例如,如果stepFactor = 1.5且您的默认起始值​​为8,则mtry将设置为8 / 1.5 = 5.33,四舍五入为一个整数,得到6

b。计算OOB错误,说error_left
一种。向右看:设置mtry =默认值* stepFactor。继续我的示例,将mtry设置为8 * 1.5 = 12

b。计算OOB错误,说error_right
一世。如果(error_default
ii。如果不满足先前的条件,但是errors_default和error_right / error_left之间的差小于改善参数,则最佳mtry是默认值

iii。不失一般性,如果不满足条件,并且error_right 改善,则将mtry设置为mtry_right(12)。从现在开始,始终向右走
如果4.iii。经过验证,重复:将mtry设置为mtry_right * stepFactor(在我的示例中为12 * 1.5 = 18),计算OOB错误,并将其与上一步获得的错误进行比较(在我的示例中,对于mtry = 12)。如果错误新错误较小,并且如果减少错误的增益足够(即>提高),则选择新mtry并继续重复这些步骤,否则停止并返回当前mtry作为最佳mtry


您设置的stepFactor越小(例如1.1、1.2),尝试的mtry值(精细搜索)越多,设置的stepFactor越大(例如2、2.5),尝试的值越少(粗糙搜索)。同样,如果改进值较低,则搜索将持续更长的时间。

09-12 20:55