我想知道如何在用户帐户之间找到有趣的关系,例如基于与他人的联系的最有联系或最有价值的用户。
下面是我使用的两张桌子。一个拥有所有用户,另一个拥有他们关注的用户的密钥。
User
{
id,
name
}
Follows {
user_id -> user.id,
following_id -> user.id
}
我在寻找什么类型的算法?
假设不重要的人几乎没有追随者,我怎么能找到图表中心的人?我认为他们会很重要,因为他们有重要的人追随他们。
更新
正如David和Steve所指出的,给定节点的距离有多近,哪些节点形成了子社区,哪些用户的连接最紧密,这些都是可以从这个模式中提取有用数据的例子。
由于这种"追随者"设计现在被许多网站使用,我开始了一项奖励,希望获得一些对各种人有用的可靠SQL或编程语言实现。
值得注意的是,虽然一些算法的结果很吸引人,但其他算法(如查找相关节点)对我们网站的用户来说是有价值的,因为我们可以向他们推荐一些东西。
如果你只关注链接,试试这些流行的中心性度量(假设G是图):
- Degree:节点i的Degree定义为ki/(N-1),其中ki是到节点i的链接数,N为节点总数。更高的学位意味着重要
- 贴近度:节点i的贴近度定义为(N-1)/(∑_。这强调了一个节点到社交网络中所有其他节点的距离
- Betweenness:Betweennes定义为(∑_(j<k∈G)njk(i)/njk)/((N-1)(2-2)),其中N jk表示节点j和k之间最短路径的数量,njk这些路径中通过节点i的路径。节点i的间距更高意味着节点i可能是一个好的中心,任何其他两个节点之间都有许多连接需要通过节点1
仅通过链接信息就可以很容易地计算出上述度量,并且您可以使用一个或多个这些中心性度量来找出社交网络中的重要节点。无论如何,根据"重要"的定义,你可能需要其他不同的措施。