当前位置:   article > 正文

损失函数_XGBoost损失函数优化

xgb损失函数不可导怎么处理

9fdb2e0982e816b3761f6e211c67fb6c.png

欢迎关注微信公众号:剑指风险(剑指风险)

一.XGBoost损失函数的预备知识

  • 损失函数:损失函数描述了预测值和真实标签的差异,通过对损失函数的优化来获得对学习任务的一个近似求解方法
  • boosting类算法的损失函数的作用: Boosting的框架, 无论是GBDT还是Adaboost, 其在每一轮迭代中, 根本没有理会损失函数具体是什么, 仅仅用到了损失函数的一阶导数通过随机梯度下降来参数更新
  • 二阶导数:GBDT在模型训练时只使用了代价函数的一阶导数信息,XGBoost对代价函数进行二阶泰勒展开,可以同时使用一阶和二阶导数
  • 牛顿法梯度更新:XGBoost是用了牛顿法进行的梯度更新。通过对损失进行分解得到一阶导数和二阶导数并通过牛顿法来迭代更新梯度。

二.xgboost损失函数修正的方法

基于XGBoost的损失函数的分解求导,可以知道XGBoost的除正则项以外的核心影响因子是损失函数的1阶导和2阶导,所以对于任意的学习任务的损失函数,可以对其求一阶导数和二阶导数带入到XGBoost的自定义损失函数范式里面进行处理。

  1. def custom_obj(pred, dtrain):#pred 和dtrain 的顺序不能弄反
  2. # STEP1 获得label
  3. label = dtrain.get
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/在线问答5/article/detail/912103
推荐阅读
相关标签
  

闽ICP备14008679号