Всякий раз, когда я работаю с xgboost, я часто делаю свой собственный поиск параметров homebrew, но вы можете сделать это с помощью пакета caret, как только что упомянутое KrisP.
- знак вставки
Посмотрите этот ответ на Cross Validated для подробного объяснения того, как использовать пакет каретки для поиска гиперпараметров в xgboost.
Как настроить гиперпараметры деревьев xgboost?
- Пользовательский поиск по сетке
Я часто начинаю с нескольких предположений, основанных на слайдах Оуэна Чжана о советах по науке о данных, с. 14
Здесь вы можете видеть, что вам в основном нужно настроить выборку строк, выборку столбцов и, возможно, максимальную глубину дерева. Вот как я выполняю выборочную выборку строк и столбцов для поиска проблемы, над которой я сейчас работаю:
searchGridSubCol <- expand.grid(subsample = c(0.5, 0.75, 1),
colsample_bytree = c(0.6, 0.8, 1))
ntrees <- 100
#Build a xgb.DMatrix object
DMMatrixTrain <- xgb.DMatrix(data = yourMatrix, label = yourTarget)
rmseErrorsHyperparameters <- apply(searchGridSubCol, 1, function(parameterList){
#Extract Parameters to test
currentSubsampleRate <- parameterList[["subsample"]]
currentColsampleRate <- parameterList[["colsample_bytree"]]
xgboostModelCV <- xgb.cv(data = DMMatrixTrain, nrounds = ntrees, nfold = 5, showsd = TRUE,
metrics = "rmse", verbose = TRUE, "eval_metric" = "rmse",
"objective" = "reg:linear", "max.depth" = 15, "eta" = 2/ntrees,
"subsample" = currentSubsampleRate, "colsample_bytree" = currentColsampleRate)
xvalidationScores <- as.data.frame(xgboostModelCV)
#Save rmse of the last iteration
rmse <- tail(xvalidationScores$test.rmse.mean, 1)
return(c(rmse, currentSubsampleRate, currentColsampleRate))
})
И в сочетании с некоторой магией ggplot2, используя результаты этой функции применения, вы можете построить графическое представление поиска.
На этом графике более светлые цвета представляют меньшую ошибку, и каждый блок представляет уникальную комбинацию выборки столбца и выборки строки. Поэтому, если вы хотите выполнить дополнительный поиск, скажем, eta (или глубины дерева), вы получите один из этих графиков для каждого протестированного eta-параметра.
Я вижу, у вас есть другая метрика оценки (RMPSE), просто подключите ее к функции перекрестной проверки, и вы получите желаемый результат. Кроме того, я бы не стал слишком беспокоиться о тонкой настройке других параметров, потому что это не слишком сильно повысит производительность, по крайней мере, не так сильно, по сравнению с затрачиванием большего количества времени на разработку функций или очистку данных.
- другие
Случайный поиск и выбор байесовских параметров также возможны, но я еще не нашел / не нашел их реализацию.
Вот хороший учебник по байесовской оптимизации гиперпараметров, создатель карета Макса Куна.
http://blog.revolutionanalytics.com/2016/06/bayesian-optimization-of-machine-learning-models.html
rBayesianOptimization
пакет делает реализацию BO довольно простаВы можете использовать пакет caret для поиска гиперпараметров в пространстве, либо с помощью поиска по сетке , либо с помощью случайного поиска .
источник
Сетка, рандом, байесовский и PSO ... и т.д ..
Когда вы работаете с XGBoost, все вышеперечисленное не имеет значения, потому что XGB действительно быстр, поэтому вы можете использовать Grid со многими гиперпараметрами, пока не найдете свое решение.
Одна вещь, которая может вам помочь: используйте приблизительный метод, он всегда дает мне самую низкую ошибку mse.
источник