นี่คือฟังก์ชั่นการสูญเสียส่วนเบี่ยงเบนทวินามของ 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 ทุกคนสามารถอธิบายได้ว่าวิธีนี้ถือว่าโอเคไหม
ตัวอย่างเช่นไม่มี weigth ตัวอย่างฟังก์ชันการสูญเสียสำหรับคลาส 1 คือ
-2(pred - log(1 + exp(pred))
vs สำหรับคลาส 0
-2(-log(1+exp(pred))
เนื้อเรื่องสำหรับสองสิ่งนี้ไม่เหมือนกันในแง่ของต้นทุน มีใครช่วยฉันเข้าใจไหม
pred
ด้วยอัตราต่อรองฟังก์ชั่นการสูญเสียเป็นชุดสำหรับทั้งชั้นเรียน