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

'mtry' in 'rfcv()' function of R's 'randomForest' library

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

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

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

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 post,但是它并不完全相关,因为他们正在讨论 mtry 的默认值。

在您引用的 post 中,它解释了这些步骤将如何确定测试的 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