Scikit Binomial Deviance Loss Function


11

Jest to funkcja utraty dwumianowej dewiacji przez 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))))

Ta funkcja strat nie jest podobna dla klasy z 0 i klasy z 1. Czy ktoś może wyjaśnić, jak to jest uważane za OK.

Na przykład, bez wagi próbki, funkcją straty dla klasy 1 jest

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

vs dla klasy 0

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

Fabuła dla tych dwóch nie jest podobna pod względem kosztów. Czy ktoś może mi pomóc zrozumieć.

Odpowiedzi:


17

Aby zrozumieć tę implementację, potrzebne są dwie uwagi.

Po pierwsze, predto nie jest prawdopodobieństwo, to jest logarytm.

Drugi to standardowa algebraiczna manipulacja dewiacją dwumianową, która przebiega w ten sposób. Niech będzie logarytmicznym prawdopodobieństwem, jakie połączenia . Zatem definicją dwumianowego odchylenia obserwacji jest (do współczynnika - 2P.sklearnpred-2) )

ylog(p)+(1-y)log(1-p)=log(1-p)+ylog(p1-p)

Teraz zauważ, że p=miP.1+miP.1-p=11+miP.1

log(1-p)=log(11+miP.)=-log(1+miP.)

i

log(p1-p)=log(miP.)=P.

W sumie dwumianowe odchylenie jest równe

yP.-log(1+miP.)

Które to równanie sklearnwykorzystuje.


Dzięki Ci. Jeśli zastąpię predlogarytmiczne szanse, funkcja straty jest jednolita dla obu klas.
Kumaran

To samo pytanie pojawiło się ostatnio dla mnie. Patrzyłem na gradientboostedmodels.googlecode.com/git/gbm/inst/doc/gbm.pdf strona 10, gdzie znajduje się gradient odchylenia. Wygląda jednak na to, że gradient, który pokazują, jest podobny do logarytmu, a nie do logarytmu ujemnego. Czy to prawda - wydaje się pasować do twojego wyjaśnienia tutaj?
B_Miner

1
@B_Miner link jest zepsuty
GeneX

Wielkie dzięki @Mathew Drury
Catbuilts
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.