algorithm - 用于在 Google 新闻中生成推荐的算法?

标签 algorithm hash permutation recommendation-engine

我正在研究推荐引擎,我经历了 paper它定义了 Google 新闻如何根据协同过滤向用户推荐他们可能感兴趣的新闻项目。

他们提到的一项有趣的技术是 Minhashing。我经历了它的作用,但我很确定我所拥有的是一个模糊的想法,而且我很可能是错的。以下是我可以从中得出的结论:-

  1. 收集一组所有 条新闻。
  2. 为用户定义哈希函数。此哈希函数返回此用户查看的新闻项目中第一个项目的索引,在所有 新闻项目的列表中。
  3. 收集,说出“n”个这样的值,并用这个值列表表示一个用户。
  4. 根据这些列表之间的相似度计数,我们可以计算用户之间的相似度作为共同项目的数量。这大大减少了比较次数。
  5. 根据这些相似性度量,将用户分组到不同的集群中。

这正是我认为的可能。在第 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/

相关文章:

php - WordPress 使用什么类型的哈希?

algorithm - 为什么计算机科学中的对数被假定为以 2 为底的对数?

具有两个参数 Function(n,m) 的阶乘算法

excel - 从单列到 3X8 表

c++ - 生成给定字符串的条件排列

C#排列数组列表?

r - 如何在 R 模型中生成变量的所有可能组合?

algorithm - 移动查询点的 K 最近邻

python - 对 Python 中方法的内容进行哈希处理

perl - 在Perl中切片嵌套的哈希