当前位置: 首页 > 数据分析师 > 数据分析师实战技能 > 数据分析师数据分析 > R语言xgboost自定义目标函数

R语言xgboost自定义目标函数

发布时间:2020年09月29日 01:49:39 来源: 点击量:639

【摘要】R语言xgboost自定义目标函数要自定义xgboost的目标函数,有两种方式 自定义目标函数(objective) 自定义评价函数(feval)。如果是自定义目

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,有可能效果不是很好。

分享到: 编辑:wangmin

就业培训申请领取
您的姓名
您的电话
意向课程
点击领取

环球青藤

官方QQ

扫描上方二维码或点击一键加群,免费领取大礼包,加群暗号:青藤。 一键加群

绑定手机号

应《中华人民共和国网络安全法》加强实名认证机制要求,同时为更加全面的体验产品服务,烦请您绑定手机号.

预约成功

本直播为付费学员的直播课节

请您购买课程后再预约

环球青藤移动课堂APP 直播、听课。职达未来!

安卓版

下载

iPhone版

下载
环球青藤官方微信服务平台

刷题看课 APP下载

免费直播 一键购课

代报名等人工服务

课程咨询 学员服务 公众号

扫描关注微信公众号

APP

扫描下载APP

返回顶部