В этой статье https://towardsdatascience.com/custom-loss-functions-for-gradient-boosting-f79c1b40466d Он использует настраиваемую целевую функцию, чтобы назначить штраф за пасмурность. Ниже приведена функция, которую он использовал в обучении Lightgbm. У меня есть пара вопросов.
- Как он получает -2? почему отрицательный 2?
Почему в функции гессисана он использовал положительное 2?
def custom_asymmetric_train (y_true, y_pred):
residual = (y_true - y_pred).astype("float")
grad = np.where(residual<0, -2*10.0*residual, -2*residual)
hess = np.where(residual<0, 2*10.0, 2.0)
return grad, hess
def custom_asymmetric_valid (y_true, y_pred):
residual = (y_true - y_pred).astype("float")
loss = np.where(residual < 0, (residual**2)*10.0, residual**2)
return "custom_asymmetric_eval", np.mean(loss), False