熱線電話:13121318867

登錄
首頁精彩閱讀R語言xgboost自定義目標函數
R語言xgboost自定義目標函數
2018-01-06
收藏

R語言xgboost自定義目標函數

要自定義xgboost的目標函數,有兩種方式
    自定義目標函數(objective)
    自定義評價函數(feval)。
如果是自定義目標函數你需要求解該目標函數的梯度以及二階梯度。
例子:自定義的objective
logregobj <- function(preds, dtrain) {
  labels <- getinfo(dtrain, "label")
  preds <- 1/(1 + exp(-preds))
  grad <- preds - labels
  hess <- preds * (1 - preds)
  return(list(grad = grad, hess = hess))
}
而另一個則是自定義評價函數,參數:feval 。它的作用并不是用來訓練,僅僅是用來評價,比如說,你可以使用logloss作為目標函數來訓練,但是使用ks評分來評價,你可以根據這個評價來設計early stopping,或者調參。

例子:自定義的feval
evalerror <- function(preds, dtrain) {
  labels <- getinfo(dtrain, "label")
  err <- as.numeric(sum(labels != (preds > 0)))/length(labels)
  return(list(metric = "error", value = err))
}
param <- list(max_depth=2, eta=1, nthread = 2, silent=1,objective=logregobj, eval_metric=evalerror)
bst <- xgb.train(param, dtrain, num_round, watchlist)
一般我推薦使用第二種方法,也就是自定義feval的方法,不建議使用自定義 objective,因為首先,有的評分你根本沒法求梯度,然后自己寫的目標函數難免沒有bug,有可能效果不是很好。

數據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢