小编Gia*_*moP的帖子

XGBoost 中的自定义损失未更新

语境

我正在尝试对 XGBoost 二元分类器使用自定义损失函数。

这个想法是在 XGBoost 中实现 soft-Fbeta 损失,我在这里读到了这一点。简单地说:不使用标准的对数损失,而是使用直接优化 Fbeta 分数的损失函数。

警告

当然,Fbeta 本身是不可微分的,因此不能直接开箱即用。然而,我们的想法是使用概率(因此,在阈值化之前)来创建某种连续的 TP、FP 和 FN。在参考的 Medium 文章中查找更多详细信息。

试图

我的尝试如下(受到几个不同人的启发)。

import numpy as np
import xgboost as xgb

def gradient(y: np.array, p: np.array, beta: float):

    """Compute the gradient of the loss function. y is the true label, p
    the probability predicted by the model """
    
    # Define the denominator
    D = p.sum() + beta**2 * y.sum() 
    
    # Compute the gradient
    grad = (1 + beta**2) * y …
Run Code Online (Sandbox Code Playgroud)

python xgboost loss-function xgbclassifier

7
推荐指数
1
解决办法
477
查看次数

标签 统计

loss-function ×1

python ×1

xgbclassifier ×1

xgboost ×1