R карета: объединить rfe () и train () - PullRequest
0 голосов
/ 08 января 2019

Я хочу объединить рекурсивное удаление признаков с rfe() и настройку вместе с выбором модели с помощью trainControl() с использованием метода rf (случайный лес). Вместо стандартной сводной статистики я хотел бы иметь MAPE (средняя абсолютная ошибка в процентах). Поэтому я попробовал следующий код, используя набор данных ChickWeight:

library(caret)
library(randomForest)
library(MLmetrics)

# Compute MAPE instead of other metrics
mape <- function(data, lev = NULL, model = NULL){
  mape <- MAPE(y_pred = data$pred, y_true = data$obs)
  c(MAPE = mape)
}

# specify trainControl
trc <- trainControl(method="repeatedcv", number=10, repeats=3, search="grid", savePred =T,
                    summaryFunction = mape)
# set up grid
tunegrid <- expand.grid(.mtry=c(1:3))

# specify rfeControl
rfec <- rfeControl(functions=rfFuncs, method="cv", number=10, saveDetails = TRUE)

set.seed(42)
results <- rfe(weight ~ Time + Chick + Diet, 
           sizes=c(1:3), # number of predictors from which should algorithm chose the best predictor
           data = ChickWeight, 
           method="rf",
           ntree = 250, 
           metric= "RMSE", 
           tuneGrid=tunegrid,
           rfeControl=rfec,
           trControl = trc)

Код работает без ошибок. Но где я могу найти MAPE, который я определил как summaryFunction в trainControl? trainControl выполняется или игнорируется?

Как можно переписать код, чтобы выполнить рекурсивное удаление признаков с помощью rfe, а затем настроить гиперпараметр mtry с помощью trainControl в rfe и одновременно рассчитать дополнительную меру ошибки (MAPE)?

1 Ответ

0 голосов
/ 08 января 2019

trainControl игнорируется, так как его описание

Управление вычислительными нюансами функции train

предложил бы. Чтобы использовать MAPE, вы хотите

rfec$functions$summary <- mape

Тогда

rfe(weight ~ Time + Chick + Diet, 
    sizes = c(1:3),
    data = ChickWeight, 
    method ="rf",
    ntree = 250, 
    metric = "MAPE", # Modified
    maximize = FALSE, # Modified
    rfeControl = rfec)
#
# Recursive feature selection
#
# Outer resampling method: Cross-Validated (10 fold) 
#
# Resampling performance over subset size:
#
#  Variables   MAPE  MAPESD Selected
#          1 0.1903 0.03190         
#          2 0.1029 0.01727        *
#          3 0.1326 0.02136         
#         53 0.1303 0.02041         
#
# The top 2 variables (out of 2):
#    Time, Chick.L
...