图论-图论算法之Louvain
社区发现算法简介之Louvain算法
在本次文章中,我们将会介绍经典的社区发现方法,也就是Louvain算法。这种算法在社群发现等应用的效果较好,是比较经典的图挖掘类算法,在金融风控行业挖掘诈骗团伙等应用里有比较显著的效果。社区发现方法的目标是在整个图里面发现一些有聚集性特征的群体,这些群体的特征是内部的互相联系较为紧密,外部和其他点的联系较为稀疏。下面我们对算法思路和步骤进行介绍。
Louvain算法的核心就是模块度的计算,它每一次将模块度变化更大的邻居团伙作为当前点的目标团伙,反复计算迭代后可以得到最终的社团发现结果。其中模块度的计算公式如下所示,我们发现其中A其实就是全图的邻接矩阵的某个位置的元素,而m其实是A矩阵所有元素的求和结果,这个公式的最后面有一个0-1函数,它的作用是如果两个点不属于同一个社区,那么将设置Q值为0,也就是不需要计算。
在得到了模块度的公式后,我们进一步求模块度的变化结果,也就是计算当新的点加入到社区的时候,对于原有两个社区的变化,而公式也是用新的模块度Q值去减去原有两个旧的模块度Q值,经过化简后得到下述的式子。其中K(i,in) 指的是当前社区内部的所有节点和新的节点i所连接的边的权值之和;而K(i) 则是所有和节点i直接相连的边的权值之和