Scikit Binom Sapma Kaybı İşlevi


11

Bu scikit GradientBoosting'in binom sapma kaybı fonksiyonudur,

   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))))

Bu kayıp fonksiyonları 0 ile sınıf ve 1 ile sınıf arasında benzer değildir. Herkes bunun nasıl iyi kabul edildiğini açıklayabilir.

Örneğin, herhangi bir örnek ağırlığı olmadan, sınıf 1 için kayıp fonksiyonu

-2(pred - log(1 + exp(pred))

vs sınıf 0

-2(-log(1+exp(pred))

Bu ikisinin konusu maliyet açısından benzer değildir. Biri anlamama yardımcı olabilir mi?

Yanıtlar:


18

Bu uygulamayı anlamak için iki gözlem gereklidir.

İlk olmasıdır predolduğu değil bir günlük oran ise, bir olasılık.

Psklearnpred2

ylog(p)+(1y)log(1p)=log(1p)+ylog(p1p)

p=eP1+eP1p=11+eP1

log(1p)=log(11+eP)=log(1+eP)

ve

log(p1p)=log(eP)=P

Tamamen, binom sapması eşittir

yPlog(1+eP)

Hangi denklemi sklearnkullanıyor.


Teşekkürler. İ predlog olasılıkları ile değiştirirsek , kayıp fonksiyonu her iki sınıf için de aynıdır.
Kumaran

Aynı soru son zamanlarda benim için geldi. Ben bakıyordu gradientboostedmodels.googlecode.com/git/gbm/inst/doc/gbm.pdf sapma degrade listelenir sayfa 10. Ancak, gösterdikleri gradyan negatif log-lik için değil log-lik içindir. Bu doğru mu - burada açıklamanızla eşleşiyor gibi görünüyor mu?
B_Miner

1
@B_Miner bağlantı koptu
GeneX

@Matthew Drury
Catbuilts
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.