0

查看 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 计算的值是什么以及它与负对数似然的关系如何?

谢谢!

4

1 回答 1

1

我知道这是一个有点老的问题,但我把我的发现留在这里(这当然可能是错误的)。XGBoost 和 LightGBM 在广义线性模型 (GLM) 的上下文中使用 Tweedie 损失。假设我们的响应函数遵循泊松分布

$$y \sim \mathit{泊松}(\mu)$$

并且 $\mu$ 是作为向量 $x$ 中分组的几个协变量的线性组合获得的;$\mu = w^T x$。然而,我们知道 $\mu$ 受到我们正在使用的发行版施加的一些限制。对于泊松,我们需要它是正数,所以我们可以使用指数函数,使得

$$\mu = \exp(w^T x)$$

或者,为了简化计算

$$\log(\mu) = w^T x$$。

$\log()$ 称为链接函数,它是多个分布(包括 Tweedie)的默认选择,它还链接到指数色散模型 (EDM) 的规范形式。检查以下来源以获取更多详细信息https://bookdown.org/steve_midway/BHME/Ch7.html

由于我们已经对 $\mu$ 进行了对数转换,因此在公式中我们不会有 $\mu^{1 - p}$ 而是 $\log(\mu)^{1 - p} = (1 - p)\log (\亩)$。使用 $\exp((1 - p)\log(\mu))$,我们检索要插入对数似然的正确数量。

总而言之,当 $\log()$ 函数用作链接函数时,XGBoost 中实现的实际损失只是一般的对数似然。

于 2021-03-25T12:27:24.080 回答