Vowpal Wabbit忽略线性术语,仅保留交互术语

Man*_*Tov 5 interaction feature-selection vowpalwabbit

嗨有一个带有两个名称空间的Vowpal Wabbit文件,例如:

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
Run Code Online (Sandbox Code Playgroud)

使用-q AB,我可以获得交互术语.有没有办法让我只保留交互条款而忽略线性条款?

换句话说,vw sample.vw -q AB --invert_hash sample.model现在的结果是这样的:

....
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
Run Code Online (Sandbox Code Playgroud)

我希望它是这样的:

....
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
Run Code Online (Sandbox Code Playgroud)

--keep和--ignore选项不会产生所需的效果,因为它们似乎在生成二次项之前被考虑.是否可以使用vw执行此操作,还是需要创建所有组合的自定义预处理步骤?

Mar*_*pel 4

John Langford(VW的主要作者)写道: 目前还没有一个好的方法可以做到这一点。最简单的方法是应用--ignoreforeach_feature<>代码中的模板。

您可以使用一个技巧将每个原始示例转换为四个新示例:

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
Run Code Online (Sandbox Code Playgroud)

这使得二次特征都与标签完全相关,但线性特征与标签零相关。因此,温和的 l1 正则化应该消除线性特征。

我怀疑这是否会提高足够的性能来关心(因此设计),但如果您确实发现它有用,请告诉我们。

请参阅原帖:

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