【发布时间】: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