Algoritmo dei minimi quadrati regolarizzati ricorsivi (online)


12

Qualcuno può indicarmi la direzione di un algoritmo online (ricorsivo) per la regolarizzazione di Tikhonov (minimi quadrati regolarizzati)?

In un'impostazione offline, calcolerei usando il mio set di dati originale dove λ si trova usando la convalida incrociata n-fold. È possibile prevedere un nuovo valore y per un dato x usando y = x ^ T \ hat \ beta .β^=(XTX+λI)1XTYλyxy=xTβ^

In un ambiente online, continuo a disegnare nuovi punti dati. Come posso aggiornare β^ quando disegno nuovi campioni di dati aggiuntivi senza fare un ricalcolo completo sull'intero set di dati (originale + nuovo)?


1
I tuoi minimi quadrati regolarizzati da Tikhonov sono forse più comunemente chiamati Levenberg-Marquardt nei circoli statistici, anche se applicati a problemi puramente lineari (come qui). C'è un articolo sul Levenberg Marquardt online qui . Non so se sia di aiuto.
Glen_b

Risposte:


11

β^n=(XXT+λI)1i=0n1xiyi

Lascia che Mn1=(XXT+λI)1 , quindi

β^n+1=Mn+11(i=0n1xiyi+xnyn) e

Mn+1Mn=xnxnT , possiamo ottenere

β^n+1=β^n+Mn+11xn(ynxnTβ^n)

Secondo la formula di Woodbury , abbiamo

Mn+11=Mn1Mn1xnxnTMn1(1+xnTMn1xn)

Di conseguenza,

β^n+1=β^n+Mn11+xnTMn1xnxn(ynxnTβ^n)

La media Polyak indica che è possibile utilizzare per approssimare con intervalli da a . Puoi provare nel tuo caso a selezionare il miglior per la tua ricorsione.M - 1 nηn=nα α0,51αMn11+xnTMn1xnα0.51α


Penso che funzioni anche se si applica un algoritmo di gradiente batch:

β^n+1=β^n+ηnni=0n1xi(yixiTβ^n)


Cosa succede se aggiorno ogni volta il mio regressore con campioni batch di nuovi dati, in cui ogni batch successivo viene estratto da una distribuzione leggermente diversa? cioè non IID. In questo caso vorrei che il regressore prendesse in considerazione i nuovi dati, ma non influenzasse le sue previsioni nella località dei vecchi dati (lotti precedenti)? Puoi indicarmi qualsiasi letteratura che potresti ritenere utile?
rimodella il

Bella domanda, ma scusate al momento non posso dire quanto influenzerebbe il vostro modello se state ancora usando la formula del gradiente batch nella risposta, o approssimando applicando direttamente il modulo matrice: eta ^ (- alpha) * X (Y-X 'beta_n) dove X, Y sono i tuoi nuovi campioni batch
lennon310,

ciao, sembra che il coefficiente di regolarizzazione non sia coinvolto nella formula di aggiornamento ricorsivo? o importa solo nell'inizializzazione della matrice M inversa?
Peng Zhao,

4

Un punto che nessuno ha affrontato finora è che in genere non ha senso mantenere costante il parametro di regolarizzazione quando vengono aggiunti punti dati. Il motivo è che in genere crescerà linearmente con il numero di punti dati, mentre il termine di regolarizzazione no. λλ β 2Xβy2λβ2


Questo è un punto interessante. Ma esattamente perché "non ha senso"? Mantenere costante sicuramente è matematicamente valido, quindi "non ha senso" deve essere compreso in qualche tipo di contesto statistico. Ma quale contesto? Cosa non va? Ci sarebbe una sorta di soluzione semplice, come sostituire le somme di quadrati con quadrati medi? λ
whuber

Sostituire la somma dei quadrati con una versione ridimensionata (ad esempio l'errore quadratico medio) avrebbe senso, ma semplicemente usando i minimi quadrati ricorsivi non lo si otterrebbe.
Brian Borchers,

Per quanto riguarda ciò che potrebbe andare storto, a seconda della scelta di , otterresti una soluzione molto sottoregolarizzata con un gran numero di punti dati o una soluzione molto sovra-regolamentata con un piccolo numero di punti dati. λ
Brian Borchers,

Si potrebbe sospettare che, ma se viene inizialmente sintonizzato dopo aver ricevuto punti dati e quindi vengono aggiunti più punti dati, se le soluzioni risultanti con più punti dati e lo stesso siano sovra o sotto-regolarizzate dipenderà da quelle nuove datapoints. Questo può essere analizzato assumendo datapoints comportano come un campione iid da una distribuzione multivariata, nel qual caso appare dovrebbe essere impostato su nella fase . Ciò cambierebbe le formule di aggiornamento, ma in modo così regolare e semplice che sarebbe ancora possibile un calcolo efficiente. (+1)n λ λ N / n NλnλλN/nN
whuber

3

Forse qualcosa come la discesa gradiente stocastica potrebbe funzionare qui. Calcola usando la tua equazione sopra nel set di dati iniziale, che sarà la tua stima iniziale. Per ogni nuovo punto dati è possibile eseguire una fase di discesa gradiente per aggiornare la stima dei parametri.β^


Da allora mi rendo conto che SGD (forse minibatch) è la strada da percorrere per problemi online come questo, ad esempio l'aggiornamento delle approssimazioni delle funzioni.
rimodella l'

1

Nella regressione lineare, una possibilità è l'aggiornamento diretto della decomposizione QR di , come spiegato qui . Immagino che, a meno che non si desideri rivalutare dopo aver aggiunto ogni nuovo datapoint, si può fare qualcosa di molto simile con la regressione della cresta.λXλ


0

Ecco un approccio alternativo (e meno complesso) rispetto all'utilizzo della formula di Woodbury. Si noti che e possono essere scritti come somme . Dal momento che stiamo calcolando le cose on-line e non vogliamo che la somma da far saltare in aria, possiamo in alternativa usare mezzi ( e ).XTXXTyXTX/nXTy/n

Se scrivi e come:Xy

X=(x1TxnT),y=(y1yn),

possiamo scrivere gli aggiornamenti online per e (calcolato fino al fila -esima) come:XTX/nXTy/nt

At=(11t)At1+1txtxtT,

bt=(11t)bt1+1txtyt.

La stima online di diventa quindiβ

β^t=(At+λI)1bt.

Nota che questo aiuta anche a mantenere costante l'interpretazione di quando aggiungi osservazioni!λ

Questa procedura spiega come https://github.com/joshday/OnlineStats.jl calcola le stime online della regressione lineare / cresta.

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.