在 vowpal wabbit 中散列时,两个不同命名空间中的两个特征是否会发生冲突?

Can two features in two different namspaces collide while hashing in vowpal wabbit?

是否所有名称space都具有相同的哈希值space,或者每个名称space是否具有独立的哈希值space?此外,如果他们确实有独立的散列 spaces,他们是否会为交互功能创建新的散列 spaces?

vw 仅使用一个全局哈希-space。 space 的大小是 2^b,其中 b 是散列位数。默认情况下 b 为 18,可以通过将 -b <bits> 参数传递给 vw.

来更改它

所以第一个问题的答案是是的,只有一个,共同的哈希-space,并且可能会发生冲突。

Name spaces 只是改变了 hash 计算的起点,两个独立的 name spaces 中的特征仍然可以碰撞。

哈希函数基本上是:

hash_func(string)

传递给 hash_func 的字符串是 "<namespace>^<feature_name>"

很容易检查你的 -b <bits> 参数是否太小:如果通过增加 -b ... 你得到一个显着较低的损失,那么很可能你在较低的位置发生了(很多)碰撞值设置。