社会网络中基于标签传播的社区发现新算法
文章发表时间 :2012年3月
1. 本文贡献
- 提出了基于标签影响值的社区发现发算法,在接近线性的时间复杂度下,选取一个小的顶点集合作为种子集进行传播
- 综合考虑了顶点邻居中相同标签所占比例、顶点度数、边的权重等信息,通过计算标签影响值来确定顶点的标签
- 在不同特征数集上的实验表明,生成的社区质量有了明显提高,并且稳定性好
2. 传统标签算法的局限性
- 在传统标签算法中,每个顶点在初始时都会分配一个唯一的标签,在标签的传播过程中进行动态的标签更新,会导致零散的、独立的小社区的出现,导致一些真正意义上的社区无法生成。这些研究意义不大的社区在每次迭代过程中都要进行重复无意义的判断。
- 由于每个顶点在初始时都具有唯一的标签,忽视了顶点的影响力的存在,导致在算法过程中,很多实际影响力很小的顶点反过来影响了影响力很大的顶点,使标签传播过程中出现一种消耗资源的“逆流”现象。
- 在传统的标签传播算法中,每次迭代过程都会存在过多的随机因素,例如:对于顶点 x ,其邻居具有多个满足条件的候选标签时,在更新 x 的标签时,会随机进行标签的选择;在对所有顶点进行迭代遍历时,每次的迭代顺序都是随机的。过多的随机性叠加会导致实验结果有相当程度上的差异性,难以保证算法的稳定性,缺少一个具有确切度量的退出机制。
3. LIB社区发现算法
LIB社区发现算法:基于标签影响值(label-influence-based)的社区发现算法
在网络拓补中引入权值,通过权值来表示顶点之间的紧密程度(即人与人之间的联系密切程度),设定每条边的权值都为正数。
3.1 算法概述
首先选取一个小的顶点集作为种子集,并为每个种子赋予唯一标签,再以种子集作为起点进行传播,在传播过程中综合考虑各种因素:顶点邻居中相同标签所占比例、顶点度数、边的权重等,基于这些信息计算每个顶点的标签影响值来更新顶点的标签。
3.2 种子集的选取
在对顶点标签进行初始化的时候,选择部分顶点作为种子集并赋予唯一标签,期望这些顶点能散落到每一个可能的社区,能尽可能的辐射到图中的绝大多数的顶点,相对于传统的标签传播算法,减少了许多不必要的开销,提高了效率。
种子集选取主要思想:
基于文献《A Potential-Based Node Selection Strategy for Influence Maximization in a Social Network》所提出的方法,但是😱😱😱 不幸的是,文献找不到。
3.3 标签传播过程
LIB算法采用标签异步更新的方式,避免了标签震荡的现象出现 ,在确定种子集之后,对所有顶点按照顶点的度进行排序,我们认为顶点的度越高,其影响力大的可能性越高,因此,按照顶点度的高低进行标签更新.
LIB算法在对一个顶点x进行标签更新时,若x顶点的邻居节点中都没有标签,则不更新x顶点,若有,则根据标签影响力选择标签,标签影响值Influence(l)定义为:
综上,在比较标签的影响值时,若两标签的平均权重的差值大于1 , 则平均权重其决定作用,若平均权重差值小于1,则有平均权重和顶点的度之和共同决定标签的选择.例如:
在上述图中,标签1的平均权重为1.5,标签2和3的平均权重是3,所以看标签2和标签3,对于标签2而言,节点的度之和为3,而标签3节点的度之和为5,所以最终选择标签3为更新结果.
3.4 社区生成算法LIB
Input: G(V,E) , k;
-
计算种子集 S ,对 S 中的每一个顶点赋予一个唯一的标签;
-
计算所有顶点的度,并由高向低排序;
-
t = 1;
-
根据顶点的顺序,更新每个顶点的标签,公式如下:
L a b l e ( x ) = a r g m a x I n f l u e n c e ( l ) ; Lable(x) = argmax Influence(l); Lable(x)=argmaxInfluence(l); -
检查每个顶点的标签影响值是否达到最大
if (true)
算法结束;
else t = t + 1;
goto 4.
4. LIB算法的时间复杂度
设定网络中有n个顶点,m条边,则时间复杂度分析如下:
- 种子集的选取: O(n);
- 种子顶点的标签初始化: O(n);
- 计算所有顶点的度: O(m);
- 用计数排序方法对其排序: O(n);
- 最坏情况下,一次传播迭代过程: O(m);
- 寻找标签相同的点形成社区: O(m+n).
综上,LIB算法具有线性的时间复杂度.
其排序: O(n);
5. 最坏情况下,一次传播迭代过程: O(m);
6. 寻找标签相同的点形成社区: O(m+n).
综上,LIB算法具有线性的时间复杂度.