feature-selection - Vowpal Wabbit 忽略线性项,只保留交互项

标签 feature-selection interaction 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

使用 -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 执行此操作,或者我是否需要创建所有组合的自定义预处理步骤?

最佳答案

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

关于feature-selection - Vowpal Wabbit 忽略线性项,只保留交互项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27531345/

相关文章:

python - 解释 sklearn 集成方法中的 feature_importances_

python - 如何使用热门单词创建特征向量(scikit-learn 中的特征选择)

machine-learning - 如果数据集具有多个不同格式的列,处理此类数据的最佳方法是什么?

objective-c - Objective C 从另一个应用程序中检索数据

python - 在前 X 个最重要的特征上运行 XGBoost 与使用变换方法之间的区别

python - 不和谐.py 未找到 : 404 Not Found (error code: 10062): Unknown interaction

c++ - 与其他应用程序的交互

python - 使用 Vowpal Wabbit 的命名实体识别似乎可以记住训练数据

machine-learning - Vowpal Wabbit 可以处理 ~ 90 GB 的数据吗?

r - 如何计算 vowpal wabbit 中 LDA 模型的对数似然