'You might know'-社交网络中的建议

'You might know'-suggestions in social networks

我有三个主要模型。用户、照片和关系。

关系模型由两个字段组成=from_user、to_user。当userA(from_user)关注UserB(to_user)时,我想向userA显示与userB相似的其他帐户。 userA 将更倾向于关注与 userB 相似的帐户。我应该实施什么方法才能获得此类似帐户列表?

我能立即想到的第一个例子是 Instagram 和 Twitter,它们会在您关注用户后立即显示相似的帐户。我在想,也许他们显示的建议账户是多组交叉的结果。

在 UserB 的所有 "following" 组关注者之间设置交集可能是一个可能的解决方案。这将生成一个集合,显示 UserB 的关注者关注的所有普通用户。当此集合呈现给用户 A 时,用户 A 也可能倾向于关注此集合中的人,因为用户 B 的关注者也关注他们。我的逻辑是用户 B 的关注者可能有共同的兴趣。这种共同的兴趣可能是他们首先关注用户 B 的原因之一。 userB 的关注者很可能也会关注与 userB 类似的其他帐户。

我什至开始思考这个问题的全部原因是我前几天在 Quora 上发现的一个问题。

一位用户提到:

1.你关注的人关注的人。我对 Twitter 的绝大部分使用是关注媒体人,以了解他们在做什么。大多数建议都是他们关注的帐户。

2。匹配的电子邮件。您认识的人为 "mining" 上传了他们的地址簿或电子邮件 activity,您在列表中。 LinkedIn 好像真的很喜欢这个,因为大多数推荐都是我不认识的人,但几年前我通过电子邮件与他们进行了简短的互动。

正如你们中的一些人所建议的,这可能是一个开放式问题,但我决定对其进行破解,看看你们中的一些人还采用了哪些其他实现。如果这个问题不适合堆栈溢出,请帮助我将它指向它所在的某个地方,也许是另一个堆栈交换社区。

谢谢

通过 Internet 搜索后,我意识到 Facebook 有一个很好的资源来说明他们如何制作 "People You May Know" 列表:

https://www.facebook.com/help/501283333222485/

我觉得我的出发点很好。谢谢大家的帮助。

也许你应该使用 Strongly Connected Components 的图论概念。您的模型可以被认为是有向图,其中顶点对应于用户,边是 "follow" 关系。

观察上图。如果 "user b" 跟在 "user c" 之后,推荐 "users d and h" 是合理的,它们在 "user c".

的同一个强连通分量中

这种方法是由 Tim Roughgarden 在他在 Coursera 上的算法导论课程中提出的(如本 answer 中所述)。

您可以对其他类型的定向或非定向关系(如 "studied with"、"worked with" 等)使用类似的方法来查找最有可能 "similar".[=13 的用户=]