Bất cứ khi nào tôi làm việc với xgboost, tôi thường thực hiện tìm kiếm tham số homebrew của riêng mình nhưng bạn có thể thực hiện với gói caret cũng như KrisP vừa đề cập.
- Caret
Xem câu trả lời này trên Cross xác thực để được giải thích kỹ lưỡng về cách sử dụng gói caret cho tìm kiếm siêu tham số trên xgboost.
Làm thế nào để điều chỉnh siêu âm của cây xgboost?
- Tìm kiếm lưới tùy chỉnh
Tôi thường bắt đầu với một vài giả định dựa trên các slide của Owen Zhang về các mẹo cho khoa học dữ liệu P. 14
Ở đây bạn có thể thấy rằng hầu hết bạn sẽ cần điều chỉnh lấy mẫu hàng, lấy mẫu cột và có thể độ sâu cây tối đa. Đây là cách tôi thực hiện tìm kiếm lấy mẫu hàng và lấy mẫu cột tùy chỉnh cho một vấn đề tôi đang làm việc tại thời điểm này:
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))
})
Và kết hợp với một số phép thuật ggplot2 bằng cách sử dụng kết quả của hàm áp dụng đó, bạn có thể vẽ biểu diễn đồ họa của tìm kiếm.
Trong biểu đồ này, màu sáng hơn biểu thị lỗi thấp hơn và mỗi khối biểu thị một sự kết hợp duy nhất của lấy mẫu cột và lấy mẫu hàng. Vì vậy, nếu bạn muốn thực hiện một tìm kiếm bổ sung về eta (hoặc độ sâu của cây), bạn sẽ kết thúc với một trong các ô này cho từng tham số eta được kiểm tra.
Tôi thấy bạn có một số liệu đánh giá khác nhau (RMPSE), chỉ cần cắm nó vào chức năng xác thực chéo và bạn sẽ nhận được kết quả mong muốn. Bên cạnh đó, tôi sẽ không lo lắng quá nhiều về việc tinh chỉnh các tham số khác bởi vì làm như vậy sẽ không cải thiện hiệu suất quá nhiều, ít nhất là không quá nhiều so với việc dành nhiều thời gian hơn cho các tính năng kỹ thuật hoặc làm sạch dữ liệu.
- Khác
Tìm kiếm ngẫu nhiên và lựa chọn tham số Bayes cũng có thể nhưng tôi chưa thực hiện / tìm thấy việc triển khai chúng.
Dưới đây là một mồi tốt về Tối ưu hóa bayesian của siêu đường kính bởi người tạo ra Max Kuhn của caret.
http://blog.revolutionanalytics.com/2016/06/bayesian-optimization-of-machine-learning-models.html