Gradiente per la funzione di perdita logistica


12

Farei una domanda relativa a questa .

Ho trovato un esempio di scrittura della funzione di perdita personalizzata per xgboost qui :

loglossobj <- function(preds, dtrain) {
  # dtrain is the internal format of the training data
  # We extract the labels from the training data
  labels <- getinfo(dtrain, "label")
  # We compute the 1st and 2nd gradient, as grad and hess
  preds <- 1/(1 + exp(-preds))
  grad <- preds - labels
  hess <- preds * (1 - preds)
  # Return the result as a list
  return(list(grad = grad, hess = hess))
}

La funzione di perdita logistica è

log(1+e−yP)

dove è probabilità di log e y è etichette (0 o 1).Py

La mia domanda è: come possiamo ottenere un gradiente (prima derivata) semplicemente uguale alla differenza tra valori reali e probabilità previste (calcolati dalle probabilità del registro come preds <- 1/(1 + exp(-preds)))?


p(y−p)2p

pP(y−f(x))2f(x)−y

Quando dici il "gradiente", quale gradiente intendi? Il gradiente della perdita? È una semplice relazione matematica che se la derivata di un'espressione è una differenza lineare, allora l'espressione è una differenza quadratica o perdita di errore al quadrato.
— AdamO,

Sì, si tratta solo del gradiente della perdita. È semplice, quando la funzione di perdita è un errore al quadrato. In questo caso la funzione di perdita è la perdita logistica ( en.wikipedia.org/wiki/LogitBoost ) e non riesco a trovare la corrispondenza tra il gradiente di questa funzione e un esempio di codice.
— Ogurtsov,

Risposte:


19

La mia risposta alla mia domanda: sì, si può dimostrare che il gradiente per la perdita logistica è uguale alla differenza tra valori reali e probabilità previste. Una breve spiegazione è stata trovata qui .

Innanzitutto, la perdita logistica è solo una probabilità logaritmica negativa, quindi possiamo iniziare con un'espressione per verosimiglianza logaritmica ( p. 74 - questa espressione è la verosimiglianza logaritmica, non una verosimiglianza negativa):

L=yi⋅log(pi)+(1−yi)⋅log(1−pi)

pipi=11+e−y^iy^i

L=yi⋅log(11+e−y^i)+(1−yi)⋅log(e−y^i1+e−y^i)

Primo derivato ottenuto utilizzando Wolfram Alpha:

L′=yi−(1−yi)⋅ey^i1+ey^i

e−y^ie−y^i

L′=yi⋅e−y^i+yi−11+e−y^i=yi⋅(1+e−y^i)1+e−y^i−11+e−y^i=yi−pi

Dopo aver cambiato segno abbiamo espressione per il gradiente della funzione di perdita logistica:

pi−yi

2
y^yν1pi(1−pi)(yi−pi)
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.