Đây là hàm mất lệch nhị thức của 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))))
Hàm mất này không giống nhau giữa lớp có 0 và lớp có 1. Có ai có thể giải thích điều này được coi là OK không.
Ví dụ, không có mẫu nào, hàm mất cho lớp 1 là
-2(pred - log(1 + exp(pred))
so với lớp 0
-2(-log(1+exp(pred))
Cốt truyện cho hai người này không giống nhau về chi phí. Ai có thể giúp tôi hiểu.
pred
bằng tỷ lệ cược log, hàm mất là thống nhất cho cả hai lớp.