我想了解如何在 xgboost sample script 中计算 logloss 函数的梯度和 hessian 。

我已经简化了采用 numpy 数组的函数,并生成了 y_haty_true,它们是脚本中使用的值的示例。

这是一个简化的示例:

import numpy as np


def loglikelihoodloss(y_hat, y_true):
    prob = 1.0 / (1.0 + np.exp(-y_hat))
    grad = prob - y_true
    hess = prob * (1.0 - prob)
    return grad, hess

y_hat = np.array([1.80087972, -1.82414818, -1.82414818,  1.80087972, -2.08465433,
                  -1.82414818, -1.82414818,  1.80087972, -1.82414818, -1.82414818])
y_true = np.array([1.,  0.,  0.,  1.,  0.,  0.,  0.,  1.,  0.,  0.])

loglikelihoodloss(y_hat, y_true)

对数损失函数是 numpy - 在 xgboost 的 github 存储库中的自定义目标函数示例脚本中,如何计算对数损失的梯度和 Hessian?-LMLPHP 的总和,其中 numpy - 在 xgboost 的 github 存储库中的自定义目标函数示例脚本中,如何计算对数损失的梯度和 Hessian?-LMLPHP

梯度(相对于 p)是 numpy - 在 xgboost 的 github 存储库中的自定义目标函数示例脚本中,如何计算对数损失的梯度和 Hessian?-LMLPHP 但是在代码中它是 numpy - 在 xgboost 的 github 存储库中的自定义目标函数示例脚本中,如何计算对数损失的梯度和 Hessian?-LMLPHP

同样,二阶导数(相对于 p)是 numpy - 在 xgboost 的 github 存储库中的自定义目标函数示例脚本中,如何计算对数损失的梯度和 Hessian?-LMLPHP 但在代码中它是 numpy - 在 xgboost 的 github 存储库中的自定义目标函数示例脚本中,如何计算对数损失的梯度和 Hessian?-LMLPHP

方程如何相等?

最佳答案

对数损失函数给出为:

numpy - 在 xgboost 的 github 存储库中的自定义目标函数示例脚本中,如何计算对数损失的梯度和 Hessian?-LMLPHP

在哪里

numpy - 在 xgboost 的 github 存储库中的自定义目标函数示例脚本中,如何计算对数损失的梯度和 Hessian?-LMLPHP

取偏导数,我们得到梯度为

numpy - 在 xgboost 的 github 存储库中的自定义目标函数示例脚本中,如何计算对数损失的梯度和 Hessian?-LMLPHP

因此我们得到梯度的负值作为 p-y

可以进行类似的计算以获得粗麻布。

关于numpy - 在 xgboost 的 github 存储库中的自定义目标函数示例脚本中,如何计算对数损失的梯度和 Hessian?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39093683/

10-12 23:47