1.基于多标签传播的网络社区检测方法,具体步骤如下:
步骤1:数据预处理阶段,计算各个节点的密度值与距离值;密度值ρ,距离值δ以及密度-距离值γ的计算公式如公式(1)(2)(3)(4)所示:ξi=∑jηj (1)
ρi=ξi+ηi (2)
γi=ρi×δi (4)
其中ηj表示节点j的度数,ξi表示节点i的所有邻居节点的度数之和,ρi表示节点i的密度值;dij表示节点i和节点j的图最短路径长度,其中节点j为密度值大于节点i的节点,δi表示节点i的密度值;
步骤2:社区中心点选择;利用各个节点的密度值与距离值,通过DPC决策图选取社区中心点;
2.1对节点的密度值和距离值分别进行Z-score标准化,标准化后的密度值ρ*,距离值ξ*以及标准化后的密度-距离值γ*的计算公式如公式(5)(6)(7)所示:其中ρi表示节点i的密度值,μρ表示所有节点的密度值的平均值,σρ表示所有节点的密度值的标准差, 表示节点i标准化后的密度值;δi表示节点i的距离值,μδ表示所有节点的距离值的平均值,σδ表示所有节点的距离值的标准差, 表示节点i标准化后的距离值;
表示节点i标准化后的密度-距离值;
2.2DPC算法是一个聚类算法,其中的DPC决策图是一个散点图,通过绘制决策图可以识别出各簇的中心点;利用以上步骤得到的各节点标准化后的密度-距离值,按照从小到大排序,绘制出如图1所示的可视化决策图(横坐标为排序后序号,纵坐标为密度-距离值);通过观察决策图中点的分布,找到具有较高的密度-距离值的节点,图1中位于图右上方的两个黑色节点具有较高的密度-距离值,这些节点即识别为社区中心点;
步骤3:根据社区中心点进行多标签传播,传播结果即为社区检测结果;多标签传播方法具体步骤如下:(1)对m个节点N={n1,n2,...,nm}的密度-距离值γ进行降序排序,得到序列T={T1,T2,...,Tm};
(2)初始化标签结果集L=[0,0,...,0],|L|=m;对各节点设定初始标签{(l1,0),(l2,
0),...,(lk,0)},其中k为识别出的社区中心点个数;
(3)对识别出的k个中心点集C={C1,C2,...,Ck}分配不同的标签,中心点Ci的标签中的li项置为1,且更新(4)遍历所有节点N,如果节点ni不为中心点,且只与一个中心点Cj的图最短路径距离dij=1,则将节点ni的标签中的lj项置为1,且更新(5)根据序列T进行遍历,对于节点Ti,如果 则更新节点Ti的标签;标签更新计算公式如公式(8)(9)所示:其中N(i)表示与节点i图最短路径距离为1的节点以及节点i本身,|N(i)|表示N(i)中节点数量;Simi,j表示节点i与节点j的结构相似度;Tj为节点Ti的邻居节点, 表示节点Tj的第k个标签项;
节点Ti标签更新计算完成后,对标签进行归一化,使得:
其中最大标签项对应的标签ml为:
ml=argmax(li)
更新
(6)对于标签结果集L,相同数值项对应的节点归属于同一社区,从而将网络划分为k个社区;
步骤4:将社区检测结果与数据集中各节点的真实标签进行比较,证明方法的有效性;
采用准确率(Acc),兰德指数(ARI)和标准互信息(NMI)三个指标来衡量社区划分质量,它们的定义如公式(10)(11)(12)所示:其中ai表示正确识别的属于第i个社区的节点数量,l表示社区的数目,n表示节点数目;
其中N11表示通过检测方法得到的社区划分与实际社区划分里都属于同一社区的节点对数目,N00表示通过检测方法得到的社区划分与实际社区划分里都不属于同一社区的节点对数目,N01表示通过检测方法得到的社区划分里不属于同一社区而在实际社区划分里属于同一社区的节点对数目,N10表示通过检测方法得到的社区划分里属于同一社区而在实际社区划分里不属于同一社区的节点对数目;
其中N表示节点数目,C表示混淆矩阵,混淆矩阵中的项Cij表示同时属于在A划分下的i社区和在B划分下的j社区的节点数目;CA(CB)表示在A(B)划分下社区的数目,Ci.(C.j)表示矩阵C中各项的总和;
基于多标签传播进行社区检测的方法流程至此结束。