【问题标题】:Xgboost early.stop.round error with custom metric带有自定义指标的 Xgboost early.stop.round 错误
【发布时间】:2017-04-19 23:52:30
【问题描述】:

我正在尝试通过使用自定义评估指标(即“feval”函数)在验证集上使用 xgb.train(xgboost 库 - R)的“early.stop.round”函数。但是,我收到以下错误消息:

 xgbMatrixTrain <- xgb.DMatrix(as.matrix(train[,-c(1,2)]), label         =train$y,missing="NAN")
 xgbMatrixValid <- xgb.DMatrix(as.matrix(valid[,-c(1,2)]), label = valid$y,      missing="NAN")


MAE <- function(preds, dtrain) {

labels <- getinfo(dtrain, "label")
 err <- as.numeric(sum(abs(exp(labels) - exp(preds))))/length(labels)
  return(list(metric = "mae error", value = err))
}

myWatch <- list(val=xgbMatrixValid,train=xgbMatrixTrain)
 bst.mae2<- xgb.train(params = param.noerr, 
                 data = xgbMatrixTrain, 
                 feval = MAE,                       nround=150, 
                  print.every.n = 1, 
                  watchlist=myWatch, 
                  early.stop.round = 20, 
                 maximize = FALSE)

[0] val-mae error:0.59831651363868  train-mae error:0.598864823842993

if ((maximize && score > bestScore) || (!maximize && score

通过不使用停止循环功能,我可以避免这个错误。关于如何通过同时保留停止轮函数来解决这个问题的任何想法?

非常感谢大家! 狮子座

【问题讨论】:

    标签: python r machine-learning xgboost


    【解决方案1】:

    如果没有可重现的示例,我将无法运行您的代码。 您得到的错误可能与您的代码无关,但可能来自数据中的错误,但没有数据很难说! 当二进制响应变量中缺少 0 或 1 个值时,我看到了像您这样的错误消息。 Xgboost 只处理数字数据,所以这可能值得一试。 缺少="NAN" 是否会导致您的数据出现问题? 如果删除缺少响应的行会发生什么? HTH,表弟皮特

    【讨论】:

      猜你喜欢
      • 2016-08-21
      • 2023-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-18
      • 1970-01-01
      • 1970-01-01
      • 2016-09-23
      相关资源
      最近更新 更多