相关疑难解决方法(0)

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

我想了解如何在xgboost示例脚本中计算logloss函数的梯度和粗糙度.

我已经简化功能采取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)
Run Code Online (Sandbox Code Playgroud)

对数丢失函数是总和 在此输入图像描述 哪里 在此输入图像描述.

然后是梯度(相对于p) 在此输入图像描述 但是在代码中它 在此输入图像描述.

同样,二阶导数(相对于p)是 在此输入图像描述 但是在代码中它是 在此输入图像描述.

方程式如何相等?

numpy machine-learning entropy derivative xgboost

6
推荐指数
1
解决办法
3114
查看次数

XGBoost的多类别分类是如何工作的?

我试图了解 XGBoost 中的多类分类是如何工作的。我已经阅读了 Chen 和 Guestrin 的论文(2016,https://arxiv.org/abs/1603.02754),但细节我仍然不清楚:

假设我想为 3 类别分类任务生成一个概率分类器。如果我理解正确的话,XGBoost 将回归树拟合为“弱学习器”或增强模型的组件。因此,如果将新的预测向量传递给 XGB 模型,回归树会生成一个实际值作为“预测”,其(加权)组合是增强模型预测。

这个问题和论文中的文档,我了解到softmax激活函数应用于增强模型预测(真实值?),并且树结构(例如分裂点)是通过优化交叉熵损失来确定的将 softmax 应用于模型输出后的函数。

我不清楚的是三类概率到底是如何获得的。如果模型输出只是一个实值(各个回归树输出的加权组合),那么 softmax 函数的应用如何返回 3 个概率?

我在 Python 和 R 中使用 XGBoost 库,但这可能没有什么区别。

python r machine-learning xgboost

2
推荐指数
1
解决办法
1499
查看次数

标签 统计

machine-learning ×2

xgboost ×2

derivative ×1

entropy ×1

numpy ×1

python ×1

r ×1