Classificazione con incremento gradiente: come mantenere la previsione in [0,1]


17

La domanda

Faccio fatica a capire come la previsione viene mantenuta entro l' intervallo quando si esegue la classificazione binaria con Gradient Boosting.[0,1]

Supponiamo di lavorare su un problema di classificazione binaria e la nostra funzione oggettiva è la perdita del log, , dove è la variabile target e è il nostro modello attuale.yilog(Hm(xi))+(1yi)log(1Hm(xi))y{0,1}H

Quando si allena il prossimo studente debole tale che il nostro nuovo modello sia , qual è il meccanismo che dovrebbe mantenere ? O, forse una domanda più pertinente, esiste un tale meccanismo?hiHi=Hi1+hiHi[0,1]


Maggiori informazioni su cosa sto facendo

Sto cercando di implementare il potenziamento del gradiente, usando alberi di regressione. Quello che faccio per evitare è che moltiplica per un fattore , in modo tale che non scenda al di sotto di zero o al di sopra uno e seleziono la in questo intervallo che minimizza la funzione di perdita. c [ 0 , c max ] H + c max h chic[0,cmax]H+cmaxhc

Questo porta il seguente problema: dopo alcuni round, ho un punto che è perfettamente classificato e la migliore divisione disponibile per spingere il classificatore nella direzione del gradiente vuole spingere questo punto sopra uno, che mi assicuro non accada impostazione . Pertanto, tutte le iterazioni successive selezioneranno la stessa divisione e la stessa .c = 0c=0c=0

Ho provato pratiche di regolarizzazione comuni

  • Diminuendo il tasso di apprendimento moltiplicando per \ mu = 0,01 . Questo ritarda solo il problema.μ = 0,01cμ=0.01
  • Sottocampionando lo spazio delle caratteristiche, ma alcuni punti sono molto facili da classificare, spuntano quasi tutte le caselle del "è un positivo?" forma, e quasi ogni "buona divisione" mostra questo comportamento.

Penso che questo non sia un problema di parametri, e ci dovrebbe essere un modo più sano per risolvere questo problema. Non sto scartando la possibilità che la mia implementazione venga interrotta, ma non ho trovato nulla che risolva questo problema.

Ciò che stiamo manipolando, nel contesto della perdita logistica, dovrebbe essere una probabilità, quindi come possiamo evitarlo?


La mia intuizione sarebbe quella di mettere il modello che stiamo costruendo, , in una funzione sigmoidea tale che sia limitato a , e immagino che funzionerebbe, ma voglio sapere se ci sono altre soluzioni. Poiché il potenziamento del gradiente sembra essere utilizzato con successo nelle attività di classificazione, dovrebbe esistere una soluzione "corretta" (cioè con giustificazione).[ 0 , 1 ]H[0,1]


Potresti richiedere che sia moltiplicativo, in quanto si comporta in modo aggiuntivo con gli altri tuoi esperti. ln ( H )Hln(H)
Alex R.

Risposte:


21

Mi piace pensarlo in analogia con il caso dei modelli lineari e della loro estensione ai GLM (modelli lineari generalizzati).

In un modello lineare, inseriamo una funzione lineare per prevedere la nostra risposta

y^=β0+β1x1+βnxn

Per generalizzare ad altre situazioni, introduciamo una funzione di collegamento, che trasforma la parte lineare del modello sulla scala della risposta (tecnicamente si tratta di un collegamento inverso, ma penso che sia più facile pensarlo in questo modo, trasformando il predittore lineare in una risposta, piuttosto che trasformare la risposta in un predittore lineare).

Ad esempio, il modello logistico utilizza la funzione sigmoid (o logit)

y^=11+exp((β0+β1x1+βnxn))

e la regressione di Poisson usa una funzione esponenziale

y^=exp(β0+β1x1+βnxn)

Per costruire un'analogia con il potenziamento del gradiente, sostituiamo la parte lineare di questi modelli con la somma degli alberi potenziati. Quindi, ad esempio, il caso gaussiano (analogo alla regressione lineare) diventa il noto

y^=ihi

dove è la nostra sequenza di discenti deboli. Il caso binomiale è analogo alla regressione logistica (come notato nella risposta)hi

y^=11+exp(ihi)

e il potenziamento del poisson è analogo alla regressione del poisson

y^=exp(ihi)

La domanda rimane: come si adattano questi modelli potenziati quando è coinvolta la funzione di collegamento? Per il caso gaussiano, in cui il collegamento è la funzione identitaria, il mantra spesso sentito di adattamento dei deboli studenti ai residui dell'attuale modello di lavoro funziona, ma questo non si generalizza ai modelli più complicati. Il trucco è scrivere la funzione di perdita minimizzata in funzione della parte lineare del modello (ovvero la parte della formulazione GLM).iβixi

Ad esempio, la perdita binomiale si riscontra di solito come

iyilog(pi)+(1yi)log(1pi)

Qui, la perdita è una funzione di , i valori previsti sulla stessa scala della risposta e è una trasformazione non lineare del predittore lineare . Invece, possiamo come una funzione di , (in questo caso noto anche come quota di registro)pipiLiLi

iyiLilog(1+exp(Li))

Quindi possiamo prendere il gradiente di questo rispetto a e aumentare per minimizzare direttamente questa quantità.L

Solo alla fine, quando vogliamo produrre previsioni per l'utente, applichiamo la funzione di collegamento alla sequenza finale di studenti deboli per mettere le previsioni sulla stessa scala della risposta. Mentre montiamo il modello, lavoriamo internamente sulla scala lineare per tutto il tempo.


2
Concordare con "scrivere la funzione di perdita minimizzata in funzione della parte lineare del modello". Ma penso che un modo semplice per capirlo senza derivare le probabilità del registro sia: per la parte lineare del modello, ovvero , pensare alla funzione di perdita come - i ( y i log 1r(,), e lo pseudo-residuo è solo per rendere la derivata della perdita wrtr. i(yilog11+er+(1yi)log(111+er))r
user2830451,

@ matthew-drury Puoi per favore aggiungere un po 'di luce sulla sezione multinomiale di classe K dello stesso algoritmo in cui un'idea simile viene estesa per funzionare per essa?
MixCoded

6

Dopo alcune ricerche, sembra che il mio intuito e il commento di Alex R. siano giusti.

Per costruire un modello continuo con previsioni in , si può mettere il modello H in una funzione logistica (Wikipedia) , in modo tale che per H R , abbiamo 1[0,1]HHR I passaggi di incremento del gradiente prendono quindi la derivata rispetto aHe aggiornano il modello, come se la funzione logistica fosse parte della funzione di costo e funziona.

11+eH[0,1]
H

Ciò è stato suggerito nel documento La regressione logistica additiva: una visione statistica di potenziamento , da parte di Friedman, Hastie e Tibshirani, per costruire LogitBoost (Wikipedia) , un adattamento di AdaBoost (Wikipedia) alla perdita logistica.

In termini molto basilari, se è possibile passare dalla regressione lineare alla regressione logistica mediante l'aggiunta di un sigmoide, funziona anche per convertire l'incremento della regressione in quello della classificazione.

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.