Setiap kali saya bekerja dengan xgboost saya sering membuat pencarian parameter homebrew saya sendiri tetapi Anda dapat melakukannya dengan paket tanda sisipan seperti halnya KrisP yang baru saja disebutkan.
- Tanda sisipan
Lihat jawaban ini di Cross Validated untuk penjelasan menyeluruh tentang cara menggunakan paket caret untuk pencarian hyperparameter di xgboost.
Bagaimana cara menyetel hyperparameter pohon xgboost?
- Pencarian Grid Kustom
Saya sering memulai dengan beberapa asumsi berdasarkan slide Owen Zhang pada tips untuk ilmu data P. 14
Di sini Anda dapat melihat bahwa sebagian besar Anda perlu menyetel pengambilan sampel baris, pengambilan sampel kolom dan mungkin kedalaman pohon maksimum. Ini adalah cara saya melakukan pengambilan sampel baris khusus dan pengambilan sampel kolom untuk masalah yang sedang saya kerjakan saat ini:
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))
})
Dan dikombinasikan dengan beberapa ggplot2 magic menggunakan hasil dari fungsi yang berlaku Anda dapat memplot representasi grafis dari pencarian.
Dalam plot ini, warna yang lebih terang mewakili kesalahan yang lebih rendah dan setiap blok mewakili kombinasi unik pengambilan sampel kolom dan pengambilan sampel baris. Jadi jika Anda ingin melakukan pencarian tambahan katakana eta (atau kedalaman pohon) Anda akan berakhir dengan salah satu plot ini untuk setiap parameter eta yang diuji.
Saya melihat Anda memiliki metrik evaluasi yang berbeda (RMPSE), cukup tancapkan pada fungsi validasi silang dan Anda akan mendapatkan hasil yang diinginkan. Selain itu, saya tidak akan terlalu khawatir tentang fine tuning parameter lain karena hal itu tidak akan meningkatkan kinerja terlalu banyak, setidaknya tidak terlalu banyak dibandingkan dengan menghabiskan lebih banyak waktu fitur teknik atau membersihkan data.
- Lainnya
Pencarian acak dan pemilihan parameter Bayesian juga dimungkinkan, tetapi saya belum membuat / menemukan penerapannya.
Berikut ini adalah primer yang bagus tentang bayesian. Optimalisasi hiperparameter oleh pencipta caret Max Kuhn.
http://blog.revolutionanalytics.com/2016/06/bayesian-optimization-of-machine-learning-models.html
rBayesianOptimization
paket membuat implementasi BO cukup mudahAnda bisa menggunakan paket tanda sisipan untuk melakukan pencarian ruang hyperparameter, baik melalui pencarian kotak , atau melalui pencarian acak .
sumber
Kotak, Acak, Bayesian, dan PSO ... dll.
Ketika Anda bekerja dengan XGBoost semua hal di atas tidak masalah, karena XGB sangat cepat sehingga Anda dapat menggunakan Grid dengan banyak hiperparamet hingga Anda menemukan solusi.
Satu hal yang dapat membantu Anda: menggunakan metode approx, selalu memberi saya kesalahan mse terendah.
sumber