Ne zaman xgboost ile çalışsam sık sık kendi homebrew parametre araştırmamı yapıyorum, ancak bunu daha önce bahsettiğim KrisP gibi caret paketi ile yapabilirsiniz.
- Düzeltme işareti
Xgboost'ta hiperparametre araması için şapka paketinin nasıl kullanılacağına dair ayrıntılı bir açıklama için Çapraz Doğrulamadaki bu cevaba bakın.
Xgboost ağaçlarının hiperparametreleri nasıl ayarlanır?
- Özel Izgara Arama
Genellikle, Owen Zhang'ın veri bilimi için ipuçları üzerindeki slaytları temel alan birkaç varsayımla başlıyorum . 14
Burada, çoğunlukla satır örneklemesini, sütun örneklemesini ve belki de maksimum ağaç derinliğini ayarlamanız gerekeceğini görebilirsiniz. Şu an üzerinde çalıştığım bir sorunu özel satır örneklemesi ve sütun örneklemesi araması şöyle yapar:
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))
})
Ve bazı ggplot2 büyüsü ile birlikte bu uygulama işlevinin sonuçlarını kullanarak aramanın grafiksel gösterimini çizebilirsiniz.
Bu çizimde daha açık renkler daha düşük bir hatayı temsil eder ve her blok, sütun örnekleme ve sıra örneklemenin benzersiz bir kombinasyonunu temsil eder. Dolayısıyla, sözde eta (veya ağaç derinliği) ek bir arama yapmak istiyorsanız, test edilen her eta parametresi için bu parsellerden biri ile sonuçlanacaktır.
Farklı bir değerlendirme metriğinizin (RMPSE) olduğunu görüyorum, sadece çapraz onaylama fonksiyonunu takın ve istediğiniz sonucu elde edin. Bunun yanı sıra, diğer parametrelerin ince ayarını yapmak için çok fazla endişelenmem, çünkü bunu yapmak, performansı daha fazla geliştirmeyecek, en azından fazla zaman harcayan mühendislik özellikleri harcamak veya verileri temizlemekle karşılaştırıldığında, performansı çok fazla artırmayacak.
- Diğerleri
Rasgele arama ve Bayesian parametre seçimi de mümkündür, ancak bunların bir uygulamasını henüz bulamadım / bulamadım.
Burada, Max Kuhn'ın kurucusu yaratıcısı tarafından yapılan hiperparametrelerin bayesian optimizasyonu üzerine iyi bir astar var.
http://blog.revolutionanalytics.com/2016/06/bayesian-optimization-of-machine-learning-models.html