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
我想使用交叉验证来确定要在随机森林方法中尝试的变量数量。我不明白如何在 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