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