Це функція втрати біноміального відхилення від scikit GradientBoosting,
def __call__(self, y, pred, sample_weight=None):
"""Compute the deviance (= 2 * negative log-likelihood). """
# logaddexp(0, v) == log(1.0 + exp(v))
pred = pred.ravel()
if sample_weight is None:
return -2.0 * np.mean((y * pred) - np.logaddexp(0.0, pred))
else:
return (-2.0 / sample_weight.sum() *
np.sum(sample_weight * ((y * pred) - np.logaddexp(0.0, pred))))
Ця функція втрати не схожа між класом з 0 і класом з 1. Чи може хтось пояснити, як це вважається нормальним.
Наприклад, без ваги вибірки функцією втрат для класу 1 є
-2(pred - log(1 + exp(pred))
vs для класу 0
-2(-log(1+exp(pred))
Сюжет для цих двох не схожий за вартістю. Хтось може допомогти мені зрозуміти.
pred
замінюю коефіцієнти журналу, функція втрат є однаковою для обох класів.