Имеют ли все пространства имен одно и то же хеш-пространство или каждое пространство имен имеет независимое хеш-пространство? Кроме того, если у них есть независимые хэш-пространства, создают ли они новые хэш-пространства для функций взаимодействия?
Могут ли две функции в двух разных пространствах имен столкнуться при хешировании в vowpal wabbit?
Ответы (1)
vw
использует только одно глобальное хеш-пространство. Размер этого пространства равен 2^b
, где b
— количество хеш-битов. По умолчанию b
равно 18, и его можно изменить, передав аргумент -b <bits>
в vw
.
Итак, ответ на первый вопрос: Да, есть только одно общее хеш-пространство, и могут быть коллизии.
Пространства имен изменяют только начальную точку при вычислении хэша, функции в двух отдельных пространствах имен могут конфликтовать.
Хеш-функция в основном:
hash_func(строка)
где строка, которая передается в hash_func
, равна "<namespace>^<feature_name>"
Легко проверить, слишком ли мал ваш аргумент -b <bits>
: если, увеличив -b ...
, вы получите значительно меньшие потери, то, вероятно, у вас было (много) коллизий при настройке более низкого значения.