查看 XGBoost 如何计算 tweedie 评估指标 (tweedie-nloglik) 的代码时,我们可以看到它的计算方式如下:
bst_float a = y * std::exp((1 - rho_) * std::log(p)) / (1 - rho_);
bst_float b = std::exp((2 - rho_) * std::log(p)) / (2 - rho_);
return -a + b;
资料来源:以下第 310-313 行: https ://github.com/dmlc/xgboost/blob/master/src/metric/elementwise_metric.cu
对于 1-2 之间的 p 值,该表达式确实显示出与粗花呢偏差表达式的相似性,但似乎没有精确的映射。根据维基百科的 Tweedie 偏差:
如果我删除常量并从 Wikipedia 获取表达式的负对数,我最终不会得到 XGBoost 中等于 -a + b 的表达式。那么我的问题是 XGBoost 计算的值是什么以及它与负对数似然的关系如何?
谢谢!