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

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(yp)2p

pP(yf(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=yilog(pi)+(1yi)log(1pi)

pipi=11+ey^iy^i

L=yilog(11+ey^i)+(1yi)log(ey^i1+ey^i)

Primo derivato ottenuto utilizzando Wolfram Alpha:

L=yi(1yi)ey^i1+ey^i

ey^iey^i

L=yiey^i+yi11+ey^i=yi(1+ey^i)1+ey^i11+ey^i=yipi

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

piyi

2
y^yν1pi(1pi)(yipi)
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.