Vowpal Wabbit reverse_hash 选项产生空输出,但为啥呢?
Posted
技术标签:
【中文标题】Vowpal Wabbit reverse_hash 选项产生空输出,但为啥呢?【英文标题】:Vowpal Wabbit inverted_hash option produces empty output, but why?Vowpal Wabbit reverse_hash 选项产生空输出,但为什么呢? 【发布时间】:2014-08-17 16:44:43 【问题描述】:我正在尝试使用倒置哈希保存一个 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
感觉好像我显然做错了什么,但我认为我正在使用documented way中的选项:
--invert_hash
类似于--readable_model
,但模型以更易于阅读的格式输出,特征名称后跟 权重,而不是哈希索引和权重。
有人知道为什么我的第二个命令没有产生任何输出吗?
【问题讨论】:
【参考方案1】:这是由最近修复的大众汽车中的一个错误引起的(由于这个问题),请参阅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
【讨论】:
有趣。实验上,我发现结果可能被解释为不同意你关于--oaa
的观点。只有-b 31
,它报告的平均损失为 0.6。使用-b 31 --loss_function=logistic
,它报告了0.48的损失(并且摆弄-l
和--l1
和--passes
并没有真正改变它)。使用-b 31 --oaa 2 -c -k --passes 3 -l 0.25
,大众只报告了 0.19 的损失。如果--oaa 2
没有意义,那么为什么它的性能会好很多?我不是要讨人厌;我只是想明白。
您不应该比较苹果(0/1 损失)和橙子(逻辑或平方损失)。对于 OAA,大众总是报告 0/1 损失。如果没有 OAA(或其他多类减少),大众会报告您要求的损失(方形、逻辑、铰链......)。
您可以强制大众使用--binary
报告二进制分类的 0/1 损失。
我承认 --oaa 2
有时会稍微提供更好的结果。见***.com/questions/24674880/…
嗯,好的。如果我同时使用--loss_function=logistic --binary
,它产生的结果与--oaa 2
产生的结果非常相似。以上是关于Vowpal Wabbit reverse_hash 选项产生空输出,但为啥呢?的主要内容,如果未能解决你的问题,请参考以下文章