У меня проблема с машинным обучением, и я считаю, что функция отрицательной биномиальной потери хорошо подойдет, но в пакете light gbm ее нет в качестве стандарта, я пытаюсь ее реализовать, но я не знаете, как получить градиент и гессиан, кто-нибудь знает, как я могу это сделать? Мне удалось добраться до функции потерь, но я не могу добраться до градиента и гессиана.
import math
def custom_asymmetric_valid(y_pred,y_true):
y_true = y_true.get_label()
p = 0.5
n = y_pred
loss = math.gamma(n) + math.gamma(y_true + 1) - math.gamma(n + y_true) - n * math.log(p) - y_true * math.log(1 - p)
return "custom_asymmetric_eval", np.mean(loss), False
Теперь, как получить градиент и гессиан?
def custom_asymmetric_train(y_pred,y_true):
residual = (y_true.get_label() - y_pred).astype("float")
grad = ?
hess = ?
return grad, hess
Кто-нибудь мог помощь