Как сравнить разные модели, используя каретку, настраивая разные параметры?

Я пытаюсь реализовать некоторые функции для сравнения пяти различных моделей машинного обучения, чтобы предсказать некоторые значения в задаче регрессии.

Я намерен работать над набором функций, которые могут обучать различные коды и организовывать их в соответствии с результатами. Модели, которые я выбираю по экземпляру: Лассо, Случайный лес, SVM, Линейная модель и Нейронная сеть. Для настройки некоторых моделей я собираюсь использовать ссылки Макса Куна: https://topepo.github.io/caret/available-models.html. Однако, поскольку каждая модель требует различных параметров настройки, я сомневаюсь, как их настроить:

Сначала я настроил сетку на настройку модели 'nnet'. Здесь я выбрал различное количество узлов в скрытом слое и коэффициент затухания:

my.grid <- expand.grid(size=seq(from = 1, to = 10, by = 1), decay = seq(from = 0.1, to = 0.5, by = 0.1))

Затем я создаю функции, которые будут запускать пять моделей 5 раз в 6-кратной конфигурации:

 my_list_model <- function(model) {
  set.seed(1)
  train.control <- trainControl(method = "repeatedcv", 
         number = 6,
         repeats =  5,
         returnResamp = "all",
         savePredictions = "all")

# The tunning configurations of machine learning models:
  set.seed(1)
  fit_m <- train(ST1 ~., 
         data = train, # my original dataframe, not showed in this code
         method = model, 
         metric = "RMSE", 
         preProcess = "scale", 
         trControl = train.control
         linout = 1        #  linear activation function output
         trace = FALSE
         maxit = 1000
         tuneGrid = my.grid) # Here is how I call the tune of 'nnet' parameters

 return(fit_m)
 } 

Наконец, я выполняю пять моделей:

lapply(list(
Lass = "lasso", 
RF = "rf", 
SVM = "svmLinear",
OLS = "lm", 
NN = "nnet"), 
my_list_model) -> model_list

Тем не менее, когда я запускаю это, он показывает:

Ошибка: сетка параметров настройки не должна иметь доли столбцов

По тому, что я понял, я не знал, как очень хорошо указать параметры мелодии. Если я попытаюсь отбросить модель 'nnet' и изменить ее, например, на модель XGBoost, в предпоследней строке, похоже, она работает хорошо, и результаты будут рассчитаны. То есть, похоже, проблема в параметрах настройки "nnet".

Тогда я думаю, что мой реальный вопрос: как настроить эти различные параметры моделей, в частности, модель 'nnet'. Кроме того, поскольку мне не нужно было настраивать параметры лассо, случайного леса, svmLinear и линейной модели, как они были настроены пакетом caret?

0 ответов

my_list_model <- function(model,grd=NULL){
  train.control <- trainControl(method = "repeatedcv", 
                            number = 6,
                            returnResamp = "all",
                            savePredictions = "all")

 # The tuning configurations of machine learning models:
 set.seed(1)
 fit_m <- train(Y ~., 
             data = df, # my original dataframe, not showed in this code
             method = model, 
             metric = "RMSE", 
             preProcess = "scale", 
             trControl = train.control,
             linout = 1,        #  linear activation function output
             trace = FALSE,
             maxit = 1000,
             tuneGrid = grd) # Here is how I call the tune of 'nnet' parameters
 return(fit_m)
 }

сначала запустите под кодом и посмотрите все связанные параметры

modelLookup('rf')

теперь сделайте сетку всех моделей на основе приведенного выше кода поиска

svmGrid <-  expand.grid(C=c(3,2,1))
rfGrid <-  expand.grid(mtry=c(5,10,15))

создать список всей сетки модели и убедиться, что имя модели совпадает с именем в списке

grd_all<-list(svmLinear=svmGrid
          ,rf=rfGrid)
model_list<-lapply(c("rf","svmLinear")
               ,function(x){my_list_model(x,grd_all[[x]])})
model_list

[[1]]
Random Forest 

17 samples
3 predictor

Pre-processing: scaled (3) 
Resampling: Cross-Validated (6 fold, repeated 1 times) 
Summary of sample sizes: 14, 14, 15, 14, 14, 14, ... 
Resampling results across tuning parameters:

mtry  RMSE      Rsquared   MAE     
 5    63.54864  0.5247415  55.72074
10    63.70247  0.5255311  55.35263
15    62.13805  0.5765130  54.53411

RMSE was used to select the optimal model using the smallest value.
The final value used for the model was mtry = 15.

[[2]]
Support Vector Machines with Linear Kernel 

17 samples
3 predictor

Pre-processing: scaled (3) 
Resampling: Cross-Validated (6 fold, repeated 1 times) 
Summary of sample sizes: 14, 14, 15, 14, 14, 14, ... 
Resampling results across tuning parameters:

C  RMSE      Rsquared   MAE     
1  59.83309  0.5879396  52.26890
2  66.45247  0.5621379  58.74603
3  67.28742  0.5576000  59.55334

RMSE was used to select the optimal model using the smallest value.
The final value used for the model was C = 1.
Другие вопросы по тегам