Кожен раз, коли я працюю з xgboost, я часто роблю власний пошук параметрів домашнього параграфа, але ви можете робити це з пакетом caret, як і щойно згаданий KrisP.
- Карет
Дивіться цю відповідь у перехресній валідації для детального пояснення, як використовувати пакет кареток для пошуку гіперпараметрів на xgboost.
Як налаштувати гіперпараметри дерев xgboost?
- Пошук користувацької сітки
Я часто починаю з кількох припущень, заснованих на слайдах Оуена Чжана щодо порад щодо наукових даних P. 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 (або глибина дерева), ви отримаєте один з цих графіків для кожного тестованого параметра.
Я бачу, що у вас є інший показник оцінки (RMPSE), просто підключіть його до функції перехресної перевірки, і ви отримаєте бажаний результат. Крім того, я б не переймався надто тонкою настройкою інших параметрів, тому що це не дозволить підвищити продуктивність занадто сильно, принаймні, не стільки порівняно з витрачанням більше часу на технічні характеристики чи очищення даних.
- Інші
Можливий також випадковий пошук та вибір байєсівських параметрів, але я ще не зробив / не знайшов їх реалізації.
Ось хороший буквар по байєсовій оптимізації гіперпараметрів творцем Маре Куна карети.
http://blog.revolutionanalytics.com/2016/06/bayesian-optimization-of-machine-learning-models.html