基于相似度的好友推荐算法
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
:这个是可选的,但如果你想在一段时间后再次开始推荐人的话可能会有用。
我正在尝试构建一个朋友推荐算法,每周向用户推荐一位新朋友。假设我有一个
的数据库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
: 收到推荐的用户IDrecommended
: 被推荐给recommended_to
的用户ID
recommendation_date
:这个是可选的,但如果你想在一段时间后再次开始推荐人的话可能会有用。