首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XGBoost中的tweedie nloglike与实际的nloglike有什么关系?

XGBoost中的tweedie nloglike与实际的nloglike有什么关系?
EN

Stack Overflow用户
提问于 2020-05-22 01:44:16
回答 1查看 380关注 0票数 0

当查看XGBoost如何计算tweedie评估指标的代码时,我们可以看到它是这样计算的:

代码语言:javascript
复制
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计算的值是什么,它与负对数可能性有什么关系?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 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中实现的实际损失只是一般的对数似然。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61940580

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档