2014-12-17 58 views
5

Hi ha un file Vowpal Wabbit con due spazi dei nomi, ad esempio:Vowpal Wabbit ignorare termini lineari, mantenere solo termini di interazione

1.0 |A snow |B ski:10 
0.0 |A snow |B walk:10 
1.0 |A clear |B walk:10 
0.0 |A clear |B walk:5 
1.0 |A clear |B walk:100 
1.0 |A clear |B walk:15 

Utilizzando q AB, posso ottenere i termini di interazione. C'è un modo per me di mantenere solo i termini dell'interazione e di ignorare i termini lineari?

In altre parole, il risultato di vw sample.vw -q AB --invert_hash sample.model in questo momento è questa:

.... 
A^clear:24861:0.153737 
A^clear^B^walk:140680:0.015292 
A^snow:117127:0.126087 
A^snow^B^ski:21312:0.015803 
A^snow^B^walk:28234:-0.010592 
B^ski:107733:0.015803 
B^walk:114655:0.007655 
Constant:116060:0.234153 

vorrei che fosse qualcosa di simile:

.... 
A^clear^B^walk:140680:0.015292 
A^snow^B^ski:21312:0.015803 
A^snow^B^walk:28234:-0.010592 
Constant:116060:0.234153 

Il --keep e opzioni --ignore non producono l'effetto desiderato perché sembrano essere considerati prima che i termini quadratici siano generati. È possibile farlo con vw o ho bisogno di un passo di pre-elaborazione personalizzato che crei tutte le combinazioni?

+0

C'è una buona ragione motivante per ignorare le caratteristiche di ordine inferiore? –

+0

@MartinPopel Se si desidera utilizzare VW per generare un modello di fattorizzazione matrice "puro", si desidera escludere i termini lineari e utilizzare solo le funzioni quadratiche di rango basso per effettuare previsioni. – Zach

risposta

3

John Langford (l'autore principale di VW) ha scritto: Attualmente non esiste un buon modo per farlo. L'approccio più semplice potrebbe essere quello di rendere --ignore applicabile al modello foreach_feature<> nel codice sorgente .

È possibile utilizzare un trucco di trasformare ogni esempio originale in quattro nuovi esempi:

1 |first:1 foo bar gah |second:1 loo too rah 
-1 |first:1 foo bar gah |second:-1 loo too rah 
1 |first:-1 foo bar gah |second:-1 loo too rah 
-1 |first:-1 foo bar gah |second:1 loo too rah 

Questo rende le caratteristiche quadratiche tutti essere perfettamente correlati con l'etichetta , ma le caratteristiche lineari avere zero correlazione con l'etichetta . Quindi una moderata regolarizzazione l1 dovrebbe eliminare le caratteristiche lineari.

Sono scettico sul fatto che ciò migliorerà le prestazioni quanto basta per la cura (da cui il modello ), ma se si ritiene che sia utile, comunicacelo.

vedere i post originali:

https://groups.yahoo.com/neo/groups/vowpal_wabbit/conversations/topics/2964 https://groups.yahoo.com/neo/groups/vowpal_wabbit/conversations/topics/4346

Problemi correlati