【发布时间】:2019-06-30 17:09:18
【问题描述】:
我有一个在 VW 中生成的模型,并且我还在相同的数据上生成了两个可读模型(第一个使用“--readable_model”arg,第二个使用“--invert_hash”)。当我在我的测试数据集上运行我的模型并使用 --audit 选项时,与上述可读模型中报告的权重相比,某些功能的报告权重略有不同。例如,这里是在 train.data 上训练的可读模型的一部分:
213006:-0.19007
213008:-0.692261
213009:-0.203193
如您所见,索引为 213008 的特征的权重为 -0.692261 但是当我在 test.data 上使用 -t 选项和 --audit 选项运行我的模型时,审计输出中的某些权重会有所不同:
-3.962444 q^featureXY:213008:1:-0.756017
是什么原因造成的?我有超过 300k 的特征,这可能是由一些哈希冲突引起的吗?但是如果有哈希冲突,Vowpal Wabbit 不应该报告这个吗?如您所见,在测试时使用了选项 -t,因此模型应该是“稳定的”。
【问题讨论】:
-
答案在下面,但鉴于
-t,审计输出和可读模型输出之间的权重差异令人惊讶,可能是一个错误。如果您使用-i加载模型,我建议在 github 上使用完全可重现的示例(完整数据集和完整命令行)报告此问题作为新问题。您应该使用较小的数据集和较低的 -b 来引发冲突。 -
@arielf 好吧,我尝试将 -b 参数更改为 19(2^19 比我拥有的数字功能还多),它确实有帮助,所以很可能这是个问题。
-
使用 300k 功能,您可能需要进一步增加
-b-b 19只会将空间增加一倍,并且由于哈希是随机的,您可能仍然会遇到很多冲突。我至少会尝试-b 22。显然这会使模型变得更大,并且会减慢保存模型文件的速度。
标签: machine-learning hash vowpalwabbit