在社交网络数据中查找朋友组

数据挖掘 图表 社会网络分析
2021-09-21 11:21:49

我有一些社交网络数据,我想在其中识别属于 5 个朋友组的人。这些是与其他 4 个人成为朋友的用户,他们彼此也是朋友。

在图的意义上,此任务涉及识别图中的组件,其中每个节点在组件中的每个其他节点之间都有一条边,并且该组件包含至少 5 个节点。

有没有众所周知的算法来做到这一点?我正在研究中心性、聚类系数和强连通分量等指标,但这些都不是我想要的。

谢谢!

2个回答

社区检测和集团渗透:

这是一个社区检测问题。这是一篇非常详细的评论文章,对最新技术进行了调查。

Clique Percolation Method探索也很有用,因为它几乎可以解决您可能需要知道的问题。您还可以了解Matching是什么,并将该概念与Blossom Algorithm联系起来。虽然,这会找到最大匹配,但您可以稍微修改算法以至少获得 5 个最小匹配。

与其说是“算法”,不如说是 Neo4j 允许您查询图网络,并且这种类型的问题在他们的演示中非常重要。以下是您可能必须在社交网络案例中使用的 Cypher 语言语法示例:

MATCH (a:Person)-[:FRIENDS_WITH]->(b:Person), (b)-[:FRIENDS_WITH]->(c:Person) 
WITH b.name AS Friends, count(c) as MutualFriends    
WHERE a.name = "Ollie" AND NOT (a)-[:FRIENDS_WITH]->(c) AND MutualFriends > 5
RETURN Friends, MutualFriends

代码可能并不完美,但它是为了展示。这种查询非常快速地返回中型到大型图的结果,尤其是如果您可以加载数据并使用索引按名称搜索。取决于你是否想从头开始!