9

我正在尝试使用倒置哈希保存一个 vowpal wabbit 模型。我有一个使用以下内容生成的有效模型:

vw --oaa 2 -b 24 -d mydata.vw --readable_model mymodel.readable

这会产生一个像这样的模型文件:

Version 7.7.0
Min label:-1.000000
Max label:1.000000
bits:24
0 pairs: 
0 triples: 
rank:0
lda:0
0 ngram: 
0 skip: 
options: --oaa 2
:0
66:0.016244
67:-0.016241
80:0.026017
81:-0.026020
84:0.015005
85:-0.015007
104:-0.053924
105:0.053905
112:-0.015402
113:0.015412
122:-0.025704
123:0.025704
...

(等等成千上万的功能)。但是,为了更有用,我需要查看功能名称。似乎是一件相当明显的事情,但我做到了

vw --oaa 2 -b 24 -d mydata.vw --invert_hash mymodel.inverted

它产生了一个像这样的模型文件(不产生权重):

Version 7.7.0
Min label:-1.000000
Max label:1.000000
bits:24
0 pairs: 
0 triples: 
rank:0
lda:0
0 ngram: 
0 skip: 
options: --oaa 2
:0

感觉好像我显然做错了什么,但我认为我正在以记录的方式使用这些选项:

--invert_hash类似于--readable_model,但模型以更易于阅读的格式输出,特征名称后跟权重,而不是哈希索引和权重。

有谁知道为什么我的第二个命令没有产生任何输出?

4

1 回答 1

10

这是由最近修复的大众汽车中的一个错误引起的(由于这个问题),请参阅https://github.com/JohnLangford/vowpal_wabbit/issues/337

顺便说一句,使用--oaa 2. 如果您想要二元分类(也称为逻辑回归),请使用--loss_function=logistic(并确保您的标签为 1 和 -1)。OAA 仅对 N>2 个类有意义(建议与 一起使用--loss_function=logistic--oaa

另请注意,学习--invert_hash速度要慢得多(当然,需要更多的内存)。推荐的方法是如何创建反向哈希模型,尤其是通过多次传递,是学习一个常用的二进制模型,然后使用一次通过训练数据将其转换为反向哈希-t

vw -d mytrain.data -c --passes 4 -oaa 3 -f model.binary
vw -d mytrain.data -t -i model.binary --invert_hash model.humanreadable
于 2014-07-09T17:35:39.700 回答