我想使用交叉验证来确定要在“随机森林”方法中尝试的变量的数量。我不明白如何在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
的默认设置,因此它并不完全相关。
在您引用的帖子中,它说明了这些步骤将如何确定所测试的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