'mtry' в функции 'rfcv ()' библиотеки 'randomForest' R - PullRequest
0 голосов
/ 05 мая 2020

Я хотел бы использовать перекрестную проверку, чтобы определить количество переменных, которые нужно попробовать в методе случайного леса. Я не понимаю, как использовать аргумент 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-кратную перекрестную проверку для каждого количества переменных?

Я проверил этот пост, но он не полностью связан, так как они обсуждают значение mtry по умолчанию.

1 Ответ

1 голос
/ 05 мая 2020

В сообщении, на которое вы ссылались, объясняется, как шаги будут определять тестируемый 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, установите масштаб на любое значение, кроме 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
...