【问题标题】:Vowpal Wabbit ignore linear terms, only keep interaction termsVowpal Wabbit 忽略线性项,只保留交互项
【发布时间】:2015-02-16 08:11:07
【问题描述】:

您好,有一个带有两个命名空间的 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

使用 -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

我希望它是这样的:

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

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

【问题讨论】:

  • 忽略低阶特征是否有充分的动机?
  • @MartinPopel 如果您想使用 VW 生成“纯”矩阵分解模型,您需要排除线性项并仅使用低秩二次特征进行预测。
  • @MartinPopel 我要补充一点,对于我之前训练过的一些预测模型,交互项(例如用户和特征之间)会提高性能,而不是把所有特征放在一起可以提供良好的性能,并且包括功能但没有交互会给出最差的性能。因此,删除线性特征并仅包含交互特征是有意义的。

标签: feature-selection interaction vowpalwabbit


【解决方案1】:

John Langford(大众汽车的主要作者)写道: 目前没有很好的方法来做到这一点。最简单的方法 将是使--ignore 应用于foreach_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

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

我怀疑这是否会提高性能足以引起关注(因此 设计),但如果你觉得它有用,请告诉我们。

查看原帖:

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

【讨论】:

    猜你喜欢
    • 2014-11-17
    • 2016-09-21
    • 2020-10-28
    • 2018-01-20
    • 1970-01-01
    • 2015-01-06
    • 2013-12-15
    • 2018-04-05
    • 1970-01-01
    相关资源
    最近更新 更多