我正在使用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
有人可以向我解释如何解释文件的最后部分(在选项之后)?我正在使用逻辑回归,我需要检查迭代训练如何更新我的分类器,以便我能够理解何时达到收敛...
提前致谢:)
答案 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
选项,它会为您提供一个可读的模型,其中包含实际变量以及哈希值。
它消耗了更多的内存,但由于你的模型看起来很小,它可能会有效。