3

我正在研究推荐引擎,我阅读了这篇论文,该论文定义了 Google 新闻如何基于协同过滤为用户生成他们可能感兴趣的新闻项目的推荐。

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

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

这正是我认为的可能。在第 2 步中,我们可能没有定义一个常量散列函数,而是改变散列函数,使其返回不同元素的索引。所以一个哈希函数可以返回用户列表中第一个元素的索引,另一个哈希函数可以返回用户列表中第二个元素的索引,依此类推。因此,满足minwise 独立排列条件的散列函数的性质,这听起来确实是一种可能的方法。

谁能确认我的想法是否正确?还是 Google 新闻推荐的 minhashing 部分以其他方式发挥作用?我对建议的内部实施不熟悉。非常感谢任何帮助。

谢谢!

4

1 回答 1

2

我想你很接近。

首先,散列函数首先随机排列所有新闻项目,然后针对任何给定的人查看第一个项目。由于每个人都有相同的排列,所以两个人很有可能拥有相同的第一项。

然后,为了获得一个新的哈希函数,而不是选择第二个元素(这会对第一个元素有一些令人困惑的依赖关系),他们选择了一个全新的排列并再次获取第一个元素。

碰巧拥有相同哈希值 2-4 次(即 2-4 次排列中相同的第一个元素)的人被放在一个集群中。该算法重复 10-20 次,因此每个人被放入 10-20 个集群。最后,基于 10-20 个集群中的其他人(少数)给出建议。由于所有这些工作都是通过散列完成的,因此人们被直接放入他们的集群的桶中,不需要进行大量比较。

于 2010-04-27T18:01:33.027 回答