Fonction de perte de déviance binomiale de Scikit


11

C'est la fonction de perte de déviance binomiale de scikit 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))))

Cette fonction de perte n'est pas similaire entre la classe avec 0 et la classe avec 1. Quelqu'un peut-il expliquer comment cela est considéré comme OK.

Par exemple, sans poids d'échantillon, la fonction de perte pour la classe 1 est

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

vs pour la classe 0

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

L'intrigue de ces deux ne sont pas similaires en termes de coût. Quelqu'un peut-il m'aider à comprendre.

Réponses:


17

Deux observations sont nécessaires pour comprendre cette implémentation.

La première est que ce predn'est pas une probabilité, c'est une cote de log.

Psklearnpred-2

yJournal(p)+(1-y)Journal(1-p)=Journal(1-p)+yJournal(p1-p)

p=eP1+eP1-p=11+eP1

Journal(1-p)=Journal(11+eP)=-Journal(1+eP)

et

Journal(p1-p)=Journal(eP)=P

Donc, au total, la déviance binomiale est égale à

yP-Journal(1+eP)

Quelle est l'équation sklearnutilisée.


Merci. Si je remplace predpar log odds, la fonction de perte est uniforme pour les deux classes.
Kumaran

Cette même question m'est venue récemment. Je regardais gradientboostedmodels.googlecode.com/git/gbm/inst/doc/gbm.pdf page 10 où le gradient de la déviance est répertorié. Mais il semble que le gradient qu'ils montrent soit pour le log-lik et non pour le log-lik négatif. Est-ce correct - cela semble correspondre à votre explication ici?
B_Miner

1
@B_Miner le lien est rompu
GeneX

Merci beaucoup @Matthew Drury
Catbuilts
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.