Воспроизведение пользовательской функции потерь LightGBM для регрессии

Я хочу воспроизвести пользовательскую функцию потерь для LightGBM. Вот что я пробовал:

lgb.train(params=params, train_set=dtrain, num_boost_round=num_round, fobj=default_mse_obj)

Если default_mse_obj определяется как:

residual = y_true - y_pred.get_label()
grad = -2.0*residual
hess = 2.0+(residual*0)
return grad, hess

Однако показатели eval для цели «регрессии» по умолчанию отличаются от заданной пользовательской функции потерь. Я хотел бы знать, какая функция по умолчанию используется LightGBM для цели «регрессии»?


person Franc Weser    schedule 18.02.2020    source источник


Ответы (1)


как вы можете видеть, здесь это функция потерь по умолчанию для задачи регрессии

def default_mse_obj(y_pred, dtrain):

    y_true = dtrain.get_label()

    grad = (y_pred - y_true)
    hess = np.ones(len(grad))

    return grad, hess
person Marco Cerliani    schedule 30.04.2020