【问题标题】:XGBoost python custom objective functionXGBoost python自定义目标函数
【发布时间】:2018-05-03 21:48:24
【问题描述】:

根据文档, http://xgboost.readthedocs.io/en/latest/python/python_api.html 如果我们要定义自定义目标函数,它应该有签名

objective(y_true, y_pred) -> grad, hess

在哪里

hess: array_like of shape [n_samples]
The value of the second derivative for each sample point

但是,如果我们有损失函数,取决于 N 个变量,我们应该有 NxN 的二阶导数矩阵,但我们的 hess 的形状只有 Nx1。我们应该排除“交叉变量”衍生品吗?或者还有什么?

【问题讨论】:

标签: python xgboost custom-function hessian hessian-matrix


【解决方案1】:

我认为,您必须采用的导数是关于 Booster 返回的分数。因此,每个训练示例 (=sample) 产生一个值,导致 [n_samples] 数组。分数是您的目标函数中的分数,即 MSE 中 (x-m)**2 中的 x 或逻辑函数中 1/(1+exp(-x)) 中的 x。

【讨论】:

    猜你喜欢
    • 2017-09-24
    • 2020-10-09
    • 2020-02-02
    • 1970-01-01
    • 2017-12-23
    • 1970-01-01
    • 2017-08-17
    • 2019-01-06
    • 1970-01-01
    相关资源
    最近更新 更多