当查看XGBoost如何计算tweedie评估指标的代码时,我们可以看到它是这样计算的:
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
该表达式确实显示出与p值在1-2之间的tweedy偏差的表达式相似,但似乎没有精确的映射。根据维基百科的报道:

如果我从维基百科中删除常量并取表达式的负对数,我不会从XGBoost中得到一个等于-a +b的表达式。我的问题是,XGBoost计算的值是什么,它与负对数可能性有什么关系?
谢谢!
发布于 2021-03-25 20:27:24
我知道这是一个有点老的问题,但我在这里留下我的发现(当然,这可能是错误的)。与LightGBM一样,XGBoost在广义线性模型(GLM)的上下文中使用花纹损失。假设我们的响应函数服从泊松分布
$$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^{1 - p}$,而是$\log(\u)^{1- p} = (1 -p)\ $\mu$ (\u)$。使用$\exp((1 - p)\log(\mu))$,我们检索要插入对数似然的正确数量。
总而言之,当$\log()$函数用作链接函数时,在XGBoost中实现的实际损失只是一般的对数似然。
https://stackoverflow.com/questions/61940580
复制相似问题