2014-12-17 3 views
5

Hallo habe einen Vowpal Wabbit mit zwei Namespace-Datei, zum Beispiel:Vowpal Wabbit lineare Terme ignorieren, hält nur Interaktion Begriffe

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 

Mit -q AB, kann ich die Interaktionsbedingungen bekommen. Gibt es eine Möglichkeit für mich, nur die Interaktionsbedingungen zu behalten und die linearen Begriffe zu ignorieren?

Mit anderen Worten, ist das Ergebnis vw sample.vw -q AB --invert_hash sample.model jetzt das:

.... 
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 

Ich möchte es so etwas sein:

.... 
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 

Die --keep und --ignore Optionen erzeugen nicht den gewünschten Effekt, weil sie scheinbar berücksichtigt werden, bevor die quadratischen Terme erzeugt werden. Ist es möglich, dies mit vw zu tun, oder brauche ich einen benutzerdefinierten Vorverarbeitungsschritt, der alle Kombinationen erstellt?

+0

Gibt es einen guten motivierende Grund für das Ignorieren niedrigere Ordnung Funktionen? –

+0

10 @MartinPopel Wenn Sie VW verwenden möchten, um ein "reines" Matrixfaktorisierungsmodell zu generieren, sollten Sie die linearen Ausdrücke ausschließen und nur die quadratischen Merkmale mit niedrigem Rang für die Erstellung von Vorhersagen verwenden. – Zach

Antwort

3

John Langford (der Hauptautor von VW) schrieb: Es gibt keinen guten Weg, dies zur Zeit zu tun. Der einfachste Ansatz wäre --ignore für die foreach_feature<> Vorlage im Quellcode gelten.

können Sie einen Trick verwenden, um mit jedem ursprünglichen Beispiel in vier neue Beispiele Transformation:

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 

Dies macht die quadratischen Funktionen all perfekt mit dem Label korreliert werden, aber die linearen Eigenschaften haben Null-Korrelation mit der Bezeichnung . Daher sollte eine milde l1 Regularisierung die linearen Merkmale töten.

Ich bin skeptisch, dass dies Leistung genug zu pflegen (daher das Design) verbessert, aber wenn Sie finden, dass es nützlich ist, bitte erzählen Sie uns davon. Siehe

die Original-Beiträge:

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

Verwandte Themen