【转载】社团发现算法分类及简介

hxy    2018-11-19 21:19

相关概念

复杂网络:具有自组织、自相似、吸引子、小世界、无标度中部分或全部性质的网络称为复杂网络。

社团结构:网络中的顶点可以分成组,组内顶点间的连接比较稠密,组间顶点的连接比较稀疏。

算法分类

1. 非重叠社团发现算法

1.1 模块度优化算法

模块度:取值范围[-0.5, 1), 用它来定量衡量网络社区划分质量,其值接近1,表示划分质量越好。

模块度优化类算法分类:

聚合:FN、CNM、MSG-MV

分裂:GN

直接寻优:EO

Newman快速算法:

将每个节点看作是一个社团,每次迭代选择产生最大Q值的两个社团合并,直到整个网络合并成一个社团。在整个过程中选择模块度最大的划分得到最终的社团结构。

CNM算法:

在Newman快速算法的基础上采用堆数据结构计算和更新网络的模块度,提升了计算速度。

MSG-MV算法:

在Newman快速算法的基础上,引入多步扩展,每一次迭代过程中可以合并多对社团以避免过早地收缩到少数较大的社团。

GN算法:

依次删除网络中边介数(网络中经过每条边的最短路径数)最大的边,直至每个节点单独退化为社团,在整个删除过程中选取对应模块度Q值最大时的结果。

缺点:计算复杂度高,O(n3)。

EO算法:

将每个节点对模块度Q值贡献大小定义为局部变量,然后在随机初始划分的基础上,通过贪婪策略调整局部变量(具有最小贡献度的变量)来提高全局目标函数Q值。

评价:

模块度优化算法无法发现小于一定粒度的社团,尤其在大规模网络中,社团大小不一,该问题尤为突出;模块度计算的复杂性决定了此类方法的计算复杂性高,不适合大规模网络中的社团划分。

1.2 基于谱分析的社团发现算法

思想:

利用图的邻接矩阵和对角矩阵将图用特定矩阵表示出来,如图的拉普拉斯矩阵L=D-W,D为以每个节点的度为对角元的对角矩阵,W为图的邻接矩阵。同一社团的节点对应的特征分量近似相等,这是谱分析方法实现社团发现的理论基础。将节点对应的矩阵特征分量看作空间坐标,将网络中的节点映射到多维特征向量空间中,用传统的聚类方法将节点聚类成社团。

评价:

因为需要计算矩阵特征值,计算开销大;但是因为将问题转化为欧拉空间的向量聚类问题,可以采用此领域的众多方法进行聚类,灵活性大。

1.3 基于标号传播的社团发现算法

思想:

首先为每个节点指派唯一的标号,在每一步迭代中,每个节点将自己的标号更新为其邻居节点中出现次数最多的标号,若存在多个相同的最多标号,随机选择一个作为更新值,若干次迭代后密集相连的节点会收敛于同一标号,具有相同标号的节点归为一个社团。

评价:

LPA算法的优点在于不需要任何参数输入,而且算法具有线性时间复杂度,收敛速度非常快,适用于规模较大的复杂网络。

2. 重叠社团发现算法

2.1 基于团渗透改进的重叠社团发现

思想:

社团是由一系列相互可达的k-团(大小为k的完全子图)组成,通过合并相邻的k-团实现社团发现。

快速团渗透算法:

1.      将网络的边按顺序(权值大小)插入到网络中,同时检测出现的k-团

2.      将检测到的k-团根据是否与已有k-社团近邻,并入k-社团形成新的k-社团。

评价:

基于团渗透思想的算法需要以团为基本单位来发现重叠,这对于真实网络,特别是稀疏网络而言条件过于严格,只能发现少量的重叠社团。

2.2 基于种子扩散思想的重叠社团发现

思想:

以具有某种特征的子网络为种子,通过合并、扩展等操作向邻接节点扩展,直至获得评价函数最大的社团。

LMF算法:

定义两个适应度函数:社团的适应度和节点对社团的适应度。以单个节点v为初始社团g,考虑与其相邻的节点a,将对其适应度最大的邻节点加入到当前社团形成g’,重新计算g’中各节点的适应度,将适应度为负的节点剔除,重复上述过程直到扩展后的社团其邻节点对它的适应度均为负。最终由扩展得到的若干个局部社团生成整个网络的覆盖,得到网络的社团划分结果。

评价:

算法的社团划分结果取决于种子选择策略和扩展评价函数,常用的种子包括单一节点、子图。扩展评价函数的设定也比较灵活,有较大的提升空间。

2.3 基于边聚类的重叠社团发现

思想:

将原网络转换为加权线图,原网络中的边映射为线图中的节点,线图中的节点存在边当且仅当原网络中所对应的边存在共享节点。通过对网络的转换,可以直接应用非重叠社团发现算法检测原网络中的重叠社团。

评价:

巧妙地将重叠社团检测问题转化为非重叠社团检测问题,可以应用非重叠社团检测的若干方法。

Last Modified: 2019-07-03 11:25
Views: 3.1K

[[total]] comments

Post your comment
  1. [[item.time]]
    [[item.user.username]] [[item.floor]]Floor
  2. Click to load more...
  3. Post your comment