Vowpal Wabbit可读模型

时间:2014-01-17 15:51:01

标签: machine-learning data-mining vowpalwabbit

我正在使用Vowpal Wabbit并且正在生成训练为可读模型的分类器。

我的数据集有22个功能,可读模型作为输出:

Version 7.2.1
Min label:-50.000000
Max label:50.000000
bits:18
0 pairs:
0 triples:
rank:0
lda:0
0 ngram:
0 skip:
options:
:0
101143:0.035237
101144:0.033885
101145:0.013357
101146:-0.007537
101147:-0.039093
101148:-0.013357
101149:0.001748
116060:0.499471
157941:-0.037318
157942:0.008038
157943:-0.011337
196772:0.138384
196773:0.109454
196774:0.118985
196775:-0.022981
196776:-0.301487
196777:-0.118985
197006:-0.000514
197007:-0.000373
197008:-0.000288
197009:-0.004444
197010:-0.006072
197011:0.000270

有人可以向我解释如何解释文件的最后部分(在选项之后)?我正在使用逻辑回归,我需要检查迭代训练如何更新我的分类器,以便我能够理解何时达到收敛...

提前致谢:)

2 个答案:

答案 0 :(得分:10)

您看到的值是所有22个要素的哈希值和权重,以及在生成的训练模型中的一个额外“常量”要素(其哈希值为116060)。

格式为:

hash_value:weight

要查看原始要素名称而不是哈希值,可以使用以下两种方法之一:

  • 使用训练集中的utl/vw-varinfo(在源树中)实用程序,使用与训练相同的选项。请尝试utl/vw-varinfo获取帮助/使用消息
  • 使用相对较新的--invert_hash readable.model选项

BTW:由于性能损失很大,将哈希值反转回原始功能名称不是默认值。默认情况下,vw在它看到的每个要素字符串上应用单向散列。它根本不维护要素名称与其哈希值之间的哈希映射。

修改

可能感兴趣的另一个小问题是options:之后的第一个条目:

:0

它实质上意味着任何“其他”特征(所有那些不在训练集中,因而没有散列到权重向量中)的特征默认为权重为0.这意味着它在vowpal中是多余的 - wabbit训练值为零的特征,无论如何这是默认值。显式:0值功能根本不会对模型做出任何贡献。当您在训练集中遗漏一个权重时,如:feature_name没有尾随:<value> vowpal wabbit隐含地假设它是二进制要素,值为TRUE。 IOW:它默认所有无值功能,值为1(:1)而不是零值(:0)。 HTH。

答案 1 :(得分:4)

Vowpal Wabbit现在还有一个--invert_hash选项,它会为您提供一个可读的模型,其中包含实际变量以及哈希值。

它消耗了更多的内存,但由于你的模型看起来很小,它可能会有效。