一种局部强化的多标签传播社区发现算法
文章发表时间:2014年6月
1. 算法背景
- 社交网络中常见的“圈子”作为一种承载了重要的“局部社区”信息的元素没有得到足够的重视,圈子的规模比社区小,并且更加强调朋友或者有相同职业相同爱好的人(即,关系更为密切的人),往往是组成社区的核心。
- 现有许多网络是异构的,单标签传播算法容易在传播过程中丢失信息,而多标签传播为每个节点提供了更多合理的选择。
2. 算法相关工作
- 采用无向图 G 表示社交网络中的节点信息,所用到的信息包括:图的节点数、边数、节点x的邻居集合、节点的度。并允许每个节点包含多个标签,每个标签用(c,b)表示,其中 c 表示社区,b 表示归属系数,对于节点x而言,b 之和等于 1.
- 模度定义:
3. LSMLP算法
3.1 算法思想
LSMLP算法由三部分组成,先找出所有的圈子,再迭代的进行局部强化和全图的多标签传播,最后执行2 步模度优化,算法流程如图:
3.2 算法准备工作
3.2.1 圈子的定义
在无向图G{V,E}中,圈子 circle 是一组满足下述条件的子图:
丨
c
i
r
c
l
e
丨
≥
4
并
且
对
于
任
意
的
x
,
y
∈
c
i
r
c
l
e
,
有
丨
x
,
y
丨
≥
(
丨
c
i
r
c
l
e
丨
⋅
(
丨
c
i
r
c
l
e
丨
−
1
)
⋅
σ
)
/
2
丨circle丨≥4 并且对于任意的x,y∈circle,有丨{x,y}丨≥(丨circle丨·(丨circle丨-1)·σ)/2
丨circle丨≥4并且对于任意的x,y∈circle,有丨x,y丨≥(丨circle丨⋅(丨circle丨−1)⋅σ)/2
其中:丨circle丨:表示圈子中节点的数量;
{x , y}∈E,丨{x , y}丨表示圈子内部的边数;
σ 是紧致系数且 σ ∈[0,1],紧致系数为 1 时,圈子为极大团,这时共同邻居更容易找出极大团,当紧致系数非常小时,共同邻居难以发现符合定义的圈子,因此通常设置紧致系数为0.9附近。
3.2.2 局部强化过程
对于每个圈子,在圈子内部进行多标签传播。
**依据:**圈子因为内部紧密性被视为潜在的社区核心,而社区核心通常为位于社区内部,与摄取之外的点几乎没有连接,所以只在圈子内部进行多标签传播,通过传播圈子内部的信息,以巩固社区核心。
具体强化过程:
- for 每个圈子 circle do
- for 每个节点 x ∈ circle do
- 更新x的标签 :
- end for
- end for
3.3算法细节
本文通过求相邻节点x 和 y 的共同邻居N(x)∩ N(y),在取符合圈子定义的点集作为圈子,在第一次迭代中,采用局部强化获取潜在的社区核心的初始估计,然后通过全图的多标签传播提供每个节点多个合理的社区标签,之后的迭代过程中,不断巩固社区核心的信息和传播局部的邻居信息。
节点x属于社区 c 的归属系数 b 用 b(c,x)表示,对于圈子中的每个节点 x ,标签更新规则为:
全图的多标签用来传播局部信息,对于每个节点 x ,标签更新规则为:
在全图多标签更新结点标签时,采用异步的多标签传播。LSMLP 算法重复迭代第二部分直到满足模度不在增加。最后,采用一种2步的模度优化算法:第一步,为每个节点选择唯一的标签,为每个节点选择归属系数最大的社区号作为暂时的社区,此时,整个图的社区分布较为合理,但仍有一些节点分布不合理,因此,为每个节点在其剩下的标签中选择使模度增加最大的标签,即:
模度优化的第二步便是从得到的社区入手,不断合并邻居社区来增大模度。
3.4 算法流程
- 为每个节点赋唯一的标签
- 每个结点的邻居按ID排序
- 找出所有的圈子circle
- while 模度增加
- 执行局部强化过程
- 执行全图的多标签传播
- 结束 while
- 为每个节点赋上唯一的标签 T_x= argmax(b(c,x))
- 为每个节点选择能使模度提高最大的标签
- while 存在社区对(w,v),合并后模度变化Q_wv>0
- 找到使得△Q_ab 最大的模度对(a,b)
- 合并社区a 和社区 b
- end while
存在社区对(w,v),合并后模度变化Q_wv>0
11. 找到使得△Q_ab 最大的模度对(a,b)
12. 合并社区a 和社区 b
13. end while