社区发现
-
这有一篇有趣的例子解释什么是风控,还有一篇讲风控的使用——如何通过校园卡消费记录识别情侣、基友、渣男和狗
-
什么是社区发现(Community Detection),简单说就是在一个关系网络(带权无向图)中找到潜在的特定组织结构,那些联系紧密的组织往往具有明显的社群关系,挖掘社群关系是社区发现的价值所在
-
作为风控的重要研究对象,社区发现在社交、金融、心理、公安等各个领域开花结果,之前有幸主导过一个借助社区发现构建评价指标体系来预测某行业团伙挖掘模型应用的设计开发,本文给社区发现做个导航
模块度
- 社区发现的最终目标就是对社区网络进行社团(community)或块(cluster)划分,社区/块内部关系越紧密、外部关系越稀疏(内紧外松)说明算法效果越好
- 模块度(modularity)是最常用的度量方法
- 物理含义是社区内节点的连边数与随机情况下边数之差,取值范围[-0.5, 1)
- 模块度越接近1,社团/块的划分效果越明显
- 社区发现算法流派很多,模块度是当下普遍认可的一种衡量标准,而Louvain就是基于模块度优化的启发式社区发现算法
Louvain
算法来源
-
Louvain算法出自比利时鲁汶大学Vincent D. Blondel教授等人2008年发表的论文Fast unfolding of communities in large networks,也称为Fast Unfolding算法,业界则直接取校名称呼该算法
-
引用论文摘要先简单介绍下该算法:
We propose a simple method to extract the community structure of large networks. Our method is a heuristic method that is based on modularity optimization. It is shown to outperform all other known community detection method in terms of computation time. Moreover, the quality of the communities detected is very good, as measured by the so-called modularity. This is shown first by identifying language communities in a Belgian mobile phone network of 2.6 million customers and by analyzing a web graph of 118 million nodes and more than one billion links. The accuracy of our algorithm is also verified on ad-hoc modular networks.
-
大致意思是说:Louvain是一种可以快速提取大型网络中社区结构的算法。这是一种基于模块化优化的启发式方法,当时来说是被证明在所有社区发现算法中平均时间复杂度最低的,用模块度衡量社区发现的质量也很好。不论是在比利时用260万用户通话数据上亿节点十几亿连接来做验证,还是在ad-hoc网络上验证都是没问题的
算法原理
-
核心思想:遍历网络中所有相邻节点,将可以使模块度增量最大的节点(计算 Δ Q \Delta Q