यह स्कैडिट ग्रैडिएंटबॉस्टिंग का द्विपद अवमूल्यन हानि कार्य है,
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))
बनाम कक्षा ० के लिए
-2(-log(1+exp(pred))
लागत के मामले में इन दोनों के लिए कथानक समान नहीं हैं। क्या कोई मुझे समझने में मदद कर सकता है
pred
लॉग ऑड्स के साथ प्रतिस्थापित करता हूं , तो नुकसान फ़ंक्शन दोनों वर्गों के लिए समान है।