5

Qualcuno è riuscito a eseguire una regressione ordinaria dei minimi quadrati in Vowpal Wabbit? Sto cercando di confermare che restituirà la stessa risposta come la soluzione esatta, vale a dire quando si sceglie un minimizzare ||y - X a||_2 + ||Ra||_2 (dove R è la regolarizzazione) Voglio ottenere la risposta analitica a = (X^T X + R^T R)^(-1) X^T y. Fare questo tipo di regressione richiede circa 5 righe in Python numpy.Regressione ordinaria dei minimi quadrati in Wabbit Vowpal

La documentazione di VW suggerisce che è possibile farlo (presumibilmente la funzione di perdita "al quadrato") ma finora non sono stato in grado di farlo arrivare nemmeno vicino alla corrispondenza dei risultati di Python. Becuase quadrato è la funzione di perdita di default, sto semplicemente chiamando:

$ vw-varinfo input.txt 

dove input.txt ha linee come

1.4 | 0:3.4 1:-1.2 2:4.0 .... etc 

Ho bisogno di alcuni altri parametri della VW chiamare? Non riesco a trovare la documentazione (piuttosto minimale).

+0

Non chiaro quale sia la domanda. Puoi fornire maggiori informazioni per spiegare cosa ti aspetti rispetto a ciò che ottieni? – Spaceghost

+1

Ricorda che vw è un algoritmo online che aggiorna i pesi del modello (coefficienti dell'OLS) solo leggermente per ogni esempio e non torna mai indietro o fuori uso. Se si desidera ottenere prestazioni simili a un algoritmo batch, soprattutto quando il numero di esempi non è molto più grande del numero di funzionalità, sarà probabilmente necessario eseguire più passaggi sull'input fino alla convergenza (ad esempio '-c --passa 100 '). – arielf

+0

"--loss_function classic" darà minimi quadrati di vaniglia. "--loss_function squared" spesso sovraperforma, perché ha "Aggiornamenti con peso di importanza per l'importanza online" (vedi: http://arxiv.org/abs/1011.1576) –

risposta

3

Credo che si dovrebbe utilizzare questa sintassi (vowpal wabbit versione 7.3.1):

vw -d input.txt -f linear_model -c --passes 50 --holdout_off --loss_function squared --invert_hash model_readable.txt 

Questa sintassi istruirà VW per leggere il file input.txt, scrivere su disco un record modello ed una cache (necessario per la convergenza multi-passaggio) e adattare una regressione utilizzando la funzione di perdita al quadrato. Inoltre scriverà i coefficienti del modello in modo leggibile in un file chiamato model_readable.txt.

L'opzione --holdout_off è una recente aggiunta per sopprimere il calcolo della perdita automatica fuori campione (se si sta utilizzando una versione precedente è necessario rimuoverla).

Fondamentalmente un'analisi di regressione basata sulla discesa del gradiente stocastico fornirà un vettore di coefficienti simile alla soluzione esatta solo quando non viene applicata la regolarizzazione e quando il numero di passaggi è elevato (suggerirei 50 o anche più, anche mischiare casualmente le righe del file di input aiuterebbe l'algoritmo a convergere meglio).

Problemi correlati