R的'randomForest'库的'rfcv()'函数中的'mtry'

问题描述 投票:0回答:1

我想使用交叉验证来确定要在“随机森林”方法中尝试的变量的数量。我不明白如何在mtry函数中使用rfcv()参数。

我的数据集中有6个预测变量。我想使用mtry = 6,5,4,3,2,1,例如任何可能的m值,并使用5倍CV交叉验证。

我相信这可以通过rfcv()程序包的randomForest功能来完成。我正在运行代码:

rf_cv<- rfcv(training_x,training_y,cv.fold=5, mtry=function(p) max(1, p-1))

但是,呼叫rf_cv$n.var给我:[1] 6 3 1

因此,此方法不适用于我希望的mtry,因为我每次都说减去1使用的变量数。

我如何通过对每个变量使用5倍交叉验证来尝试每个变量?

我检查了this帖子,但是由于他们正在讨论mtry的默认设置,因此它并不完全相关。

r machine-learning statistics random-forest cross-validation
1个回答
0
投票

在您引用的帖子中,它说明了这些步骤将如何确定所测试的mtry。因此,在您的情况下,p = 6,并且由于您没有更改步长或小数位数,因此:

p=6; 0.5
k <- floor(log(p, base = 1/step))
n.var <- round(p * step^(0:(k - 1)))
[1] 6 3

如果n.var不包括1,它将继续为您包括它,从而得到6,3,1。因此,如果您想尝试所有数字,请将mtry设置为identity,并将step设置为1,将scale设置为“ log”以外的任何值(是的,该代码未提供其他选项):

rf_cv=rfcv(matrix(rnorm(100*6),ncol=6),rnorm(100),cv.fold=3,
mtry=identity,scale="new",step=-1)

rf_cv$n.var
[1] 6 5 4 3 2 1
© www.soinside.com 2019 - 2024. All rights reserved.