基于相似度的好友推荐算法

Similarities based friend recommendation algorithm

我正在尝试构建一个朋友推荐算法,每周向用户推荐一位新朋友。假设我有一个

的数据库
user A
user B
user C
...

他们有一份爱好清单

user A has interests [hobby1, hobby2, hobby3, etc...]
user B has interests [hobby3, hobby6, hobby8, etc...]
user C has interests [hobby1, hobby3, hobby4, etc...]
...

我如何构建一种算法,为每个人配对挑选一个好的推荐,但要注意每周应该不同?

第 1 周

user A -> user C [2 hobbies in common]
user B -> user A [1 hobby in common]
user C -> user B [1 hobby in common]
...

第 2 周

user A -> user B [1 hobby in common]
user B -> user C [1 hobby in common]
user C -> user A [2 hobbies in common]
...

因为根据要求,每周完全随机化所有用户推荐听起来很容易。有什么比这个门槛更好的吗?

首先,您需要一个接受 2 个用户(A 和 B)并输出“相似度分数”的函数。最简单的方法是计算共同爱好的数量。 然后找到与A“相似度得分”最好的用户推荐给A。
保留一个 table 包含对某个人的所有推荐(让我们称之为 t_recommendations),这样,下次你需要向 A 推荐一个新人时,把这个人带最高“相似度得分”,即 不在 t_recommendations.

Table t_recommendations 会有以下列:

  • recommended_to : 收到推荐的用户ID
  • recommended : 被推荐给recommended_to
  • 的用户ID
  • recommendation_date:这个是可选的,但如果你想在一段时间后再次开始推荐人的话可能会有用。