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.