在 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 ...
你得到一个显着较低的损失,那么很可能你在较低的位置发生了(很多)碰撞值设置。
是否所有名称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 ...
你得到一个显着较低的损失,那么很可能你在较低的位置发生了(很多)碰撞值设置。