微信怎么看共同好友多少个群聊 微信怎么看共同好友多少个( 四 )


现在,我们再看看其他判定维度下的算法会不会得出一样的结论呢?
Betweenness Centrality作为另一个流行的节点重要性算法 , 通过计算一个节点在图中起到多少桥梁作用来衡量节点的重要性 。这里的桥梁作用是有数学定义的量化算法,这里就不展开说了 。不过从感官上,可以看出它是另一个符合直觉去评估节点重要性的方法 。
我们重新在画布上查询所有的点边之后,在浏览器里运行 Betweenness Centrality 算法,这次的结果是:

微信怎么看共同好友多少个群聊 微信怎么看共同好友多少个


从它的五跳内子图可以看出 , 与之前 PageRank 所得的关键人物 Tim Duncan 呈现的星状不同,Dejounte Murray 的子图呈现簇状 , 在感官、直觉上可以想象 Dejounte Murray 真的在很多节点之间的最小路径上,而 Tim Duncan 则似乎和更多的重要连接者产生了关联 。
微信怎么看共同好友多少个群聊 微信怎么看共同好友多少个


在实际的应用场景中,针对不同需求我们会选择不同的算法 。一般来说,要尝试各种定义、试验各种执行结果,以便分析去找到我们关注的关键人物产生影响的结构特征 。
找出社区、聚集群体社交网络中的社区检测是一种通过分析社交关系来发现社区结构的技术 。社区结构是指在社交网络、图谱中互相联系密切的一组节点 , 这些节点通常具有相似的特征 。例如,社区结构其中一种表现形式为:都对某类的话题或内容感兴趣而聚集的一组用户 。
社区检测的目的是通过对社交网络进行分析,找出不同社区的边界,并确定每个社区中的节点 。这个过程可以通过各种算法来完成,例如:标签传播算法、弱联通分量算法和 Louvain 算法等 。通过发现社区结构 , 可以更好地了解社交网络的结构和特征,并有助于社交网络服务方更好地推断和预测社交网络中的行为,协助治理社交网络、广告投放、市场营销等行为 。
由于我们的数据集是模拟的,在不同的算法之下得出的结果未必能展现其真实的面貌,所以本章只是简单地展示下利用若干图算法进行社区识别之后的结果 。在真实世界的案例中,我们应该在此基础之上结合领域知识或者其他技术手段协同给出不同群体、社区的画像、标签 。
标签传播算法效果:
微信怎么看共同好友多少个群聊 微信怎么看共同好友多少个


Louvain 算法效果:
微信怎么看共同好友多少个群聊 微信怎么看共同好友多少个


弱联通分量算法效果:
微信怎么看共同好友多少个群聊 微信怎么看共同好友多少个


在后面的章节 , 我们会在更小、更简单的子图上再次验证这几个算法,结果会更具有可解释性 。
好友亲密度通过社区识别算法,其实能在一定程度上在全局计算中获得兴趣相近、关联紧密的好友 。那么,如何获得一个指定用户的其他亲密好友呢?
我们可以通过计算得到这个用户的好友,根据该好友和用户拥有的共同好友数进行排序 , 最后得到结果 。
这里以 "Tim Duncan" 举例,他的两度好友(好友的好友)相关语句是 (:player{name: "Tim Duncan"})-[:follow]-(f:player)-[:follow]-(fof:player) 。如果 Tim Duncan 的两度好友同时也是他的好友的话,那么这个中间好友就是 Tim Duncan 和这个两度好友的共同好友 Mutual Friend 。我们有理由相信那些和 Tim Duncan 有更多共同好友的人可能跟他有更高的亲密度:
MATCH (start:`player`{name: "Tim Duncan"})-[:`follow`]-(f:`player`)-[:`follow`]-(fof:`player`),(start:`player`)-[:`follow`]-(fof:`player`)RETURN fof.`player`.name, count(DISTINCT f) AS NrOfMutualF ORDER BY NrOfMutualF DESC;

推荐阅读