Как сравнить разные модели, используя каретку, настраивая разные параметры? - PullRequest
0 голосов
/ 11 февраля 2019

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

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

1 Ответ

0 голосов
/ 04 июля 2019
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.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...