我正在研究推荐引擎,我经历了 paper它定义了 Google 新闻如何根据协同过滤向用户推荐他们可能感兴趣的新闻项目。
他们提到的一项有趣的技术是 Minhashing。我经历了它的作用,但我很确定我所拥有的是一个模糊的想法,而且我很可能是错的。以下是我可以从中得出的结论:-
- 收集一组所有 条新闻。
- 为用户定义哈希函数。此哈希函数返回此用户查看的新闻项目中第一个项目的索引,在所有 新闻项目的列表中。
- 收集,说出“n”个这样的值,并用这个值列表表示一个用户。
- 根据这些列表之间的相似度计数,我们可以计算用户之间的相似度作为共同项目的数量。这大大减少了比较次数。
- 根据这些相似性度量,将用户分组到不同的集群中。
这正是我认为的可能。在第 2 步中,我们可能不定义常量哈希函数,而是以返回不同元素索引的方式改变哈希函数。因此,一个哈希函数可以返回用户列表中第一个元素的索引,另一个哈希函数可以返回用户列表中第二个元素的索引,依此类推。所以哈希函数的性质满足 minwise independent permutations条件,这听起来确实是一种可能的方法。
谁能证实我的想法是否正确?或者 Google News Recommendations 的 minhashing 部分以其他方式运行?我是建议的内部实现的新手。非常感谢任何帮助。
谢谢!
最佳答案
我认为你很接近。
首先,哈希函数首先随机排列所有新闻条目,然后对于任何给定的人查看第一个条目。由于每个人都有相同的排列,因此两个人很有可能拥有相同的第一项。
然后,为了获得一个新的哈希函数,而不是选择第二个元素(这会对第一个元素产生一些令人困惑的依赖性),他们选择一个全新的排列并再次采用第一个元素。
恰好2-4次哈希值相同(即2-4次排列中第一个元素相同)的人被放在一个簇中。该算法重复 10-20 次,因此每个人都被分为 10-20 个集群。最后,基于 10-20 个集群中的(少数)其他人给出推荐。由于所有这些工作都是通过散列法完成的,因此人们直接被放入他们集群的桶中,不需要进行大量比较。
关于algorithm - 用于在 Google 新闻中生成推荐的算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2719927/