【发布时间】:2020-02-12 23:07:34
【问题描述】:
是所有命名空间都有相同的哈希空间还是每个命名空间都有独立的哈希空间?另外,如果他们确实有独立的哈希空间,他们会为交互特征创建新的哈希空间吗?
【问题讨论】:
标签: hash vowpalwabbit hash-collision
是所有命名空间都有相同的哈希空间还是每个命名空间都有独立的哈希空间?另外,如果他们确实有独立的哈希空间,他们会为交互特征创建新的哈希空间吗?
【问题讨论】:
标签: hash vowpalwabbit hash-collision
vw 只使用一个全局散列空间。这个空间的大小是2^b,其中b 是哈希位数。默认b 为18,可以通过将-b <bits> 参数传递给vw 来更改。
所以第一个问题的答案是是的,只有一个公共哈希空间,并且可能存在冲突。
命名空间只改变计算哈希的起点,两个独立的命名空间中的特征仍然可能发生冲突。
哈希函数基本上是:
hash_func(string)
传递给hash_func 的字符串是"<namespace>^<feature_name>"
很容易检查您的 -b <bits> 参数是否太小:如果通过增加 -b ... 您获得的损失显着降低,那么您很可能在较低的值设置中发生了(很多)冲突。
【讨论】: