社区发现算法-Community Detection-NormalizeCut/Louvain/NMF/LPA

本文详细介绍了几种社区检测算法,包括正则化割(Normalized Cut)、Louvain算法、非负矩阵分解(NMF)和标签传播算法(LPA)。通过对图聚类的探讨,展示了这些算法的工作原理和应用场景,如图谱的模块度优化和数据点的聚类。文章还涵盖了算法的实现细节和实验比较。
摘要由CSDN通过智能技术生成

本文结构安排

  • 图聚类简介

  • 正则化割

  • Louvain

  • 非负矩阵分解(NMF)

  • 其他常见方法

  • 图(graph):是一种由点和边集构成的结构 G = ( V , E ) G=(V,E) G=(V,E)

  • 图聚类(graph clustering) : 将点划分为不同的簇,使得簇内的边尽量多,簇之间的边尽量少。也称为图划分(partitioning)社区检查(community detection)

应用Louvain算法产生的社区检测图示

community.png

Normalized cut

正则化割的基本原理是使各簇之间的割最小,但不是算其最小割,因为这会使相对孤立的边缘点“自成一团”,造成社区大小的不均衡。算法的基本过程的前半部分类似于谱聚类,先由度矩阵和邻接矩阵,计算出拉普拉斯矩阵,得到第二小到K+1小的特征向量,对其进行K-means聚类,预处理得到k’个簇。之后,计算两两簇合并之后,计算其正则化割,选择正则化割最小的两个簇合并。每次合并减小一个簇,直到减小到K个簇。

k-路划分:

(1)计算相似度矩阵W和度矩阵D

(2)计算标准化拉普拉斯矩阵 D − 1 2 ( D − W ) D − 1 2 D^{-\frac{1}{2}}(D−W)D^{-\frac{1}{2}} D21(DW)D21

(3)从第二小的特征值开始找 k ’ k’ k个最小的特征值对应的特征向量构造 n ⋅ k ′ n \cdot k′ nk维度的特征矩阵F

(4)对特征矩阵F按行进行标准化后,进行Kmeans聚类得到 k ’ k’ k

(5)在这 k ’ k’ k个簇中,每次选取两个簇进行合并,直到最后剩下k个簇,选取的策略是最小化Ncut时的合并组合

Ncut.png

Louvain

Louvain算法的基本原理也是采用合并的策略,但是它合并的标准是模块度增益。首先将每个节点初始化为不同社区,计算将节点加入其邻居社区的模块度增益△Q,选择使模块度增益最大的邻居进行合并,合并后的社区看做一个新的节点,直到两两社区合并的模块度增益都不大于0,则停止合并。

deltaQ.png

Louvain算法步骤如下:

(1)初始化每个数据点为一个社区;

(2)对每个数据点,尝试加入其邻居所在的社区,计算比较加入前后的模块度增益ΔQ,选出增益最大的那个邻居社区,若其对应的增益ΔQ>0,则该数据点加入这个社区,否则不改变其原来社区划分;

(3)将得到的社区视为一个节点,社区内节点之间边权重转化为新节点环的权重,社区间的边权重转化为新节点间的边权重;

(4)重复(2)(3)步骤,直至满足收敛条件。

收敛条件可以是迭代了一定的次数,亦或是模块度不再增加。

NMF

  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值