【发布时间】:2018-01-02 21:33:11
【问题描述】:
LightFM 和其他库要求 32 位整数 id,例如用户。但是,我们的用户 id 是一个 UUID,例如0003374a-a35c-46ed-96d2-0ea32b753199。我想知道在这种情况下你会推荐什么。我想出的是:
- 在内存或数据库中创建双向字典以保持 UUID Int 映射。例如https://github.com/jab/bidict
- 使用非加密哈希函数,例如 MurmurHash3 或 xxHash。例如对于 1000 万个 UUID,我使用
xxhash得到了大约 11,521 或 0.1% 的冲突。这对于推荐系统来说可以忽略不计吗?
我也很好奇这将如何应用于在线预测场景,在给定 UUID、用户交互和模型的情况下,我必须预测需要 32 位整数的模型的建议。如果我使用内存中的 bidict 方法,那么在这种情况下这将不起作用,因此我可能不得不在最坏的情况下创建一个持久的键值存储。
【问题讨论】:
-
使用 UUID 的目的是什么?也许用户 id 可以使用顺序 guid?否则你会想要检查碰撞,但听起来你无论如何都需要这样做......
-
@BurnsBA。这是我们在开始考虑推荐系统之前做出的跨设备分析系统的生产决策。很遗憾,现在无法更改。
标签: hash hashtable recommendation-engine