首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >推荐系统:为推荐库将UUID转换为32位ints

推荐系统:为推荐库将UUID转换为32位ints
EN

Stack Overflow用户
提问于 2018-01-02 21:33:11
回答 1查看 247关注 0票数 1

LightFM和其他库要求为用户提供32位整数id。但是,我们的用户id是UUID,例如0003374a-a35c-46ed-96d2-0ea32b753199。我想知道在这样的场景中你会推荐什么。我想出的是:

  • 在内存或数据库中创建双向字典,以保持UUID <-> Int映射。例如https://github.com/jab/bidict
  • 使用非加密散列函数,如MurmurHash3或xxHash。例如,对于1,000万UUID,我使用xxhash获得了大约11,521或0.1%的碰撞。这对推荐人系统来说是微不足道的吗?

我也很好奇这将如何应用到在线预测场景中,在这种情况下,考虑到UUID、用户交互和模型,我必须预测需要32位整数的模型的建议。如果我使用内存条件下的命令,那么这种方法在这种情况下是行不通的,因此在最坏的情况下,我可能不得不创建一个持久的键值存储。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-02 21:53:19

  1. 这是绝对可行的,而且可能是绝大多数用户都会选择的解决方案。当然,缺点在于必须保持映射。
  2. 哈希函数也能工作。事实上,有一些方法可以将所需嵌入层的哈希( 减少 维数 )哈希化。值得记住的一点是,产生的哈希范围应该是相对紧凑的:大多数实现将为所有可能的值分配参数,因此能够散列到非常大的值的散列函数将需要大量的内存。跟着模块函数的散列可以很好地工作;然后,在存储所有参数所需的内存和碰撞概率之间进行权衡。

在LightFM和大多数其他实现中,建议只能针对在培训期间出现的用户和项(或至少针对用户和项特性)。然后映射将成为模型本身的一部分,并被有效地冻结,直到一个新的模型被训练。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48068147

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档