基于动力距离更新的社区检测方法与流程

文档序号:14941464发布日期:2018-07-13 20:57阅读:300来源:国知局

本发明属于计算机技术领域,更进一步涉及社会网络计算技术领域中的一种基于动力距离更新的社区检测方法。本发明可以在不需要任何额外输入参数的情况下,快速高效地从大规模社会网络中检测出有意义的社区结构,为进一步挖掘具有商业价值的信息提供技术支持。



背景技术:

由于社会网络的实用性和普遍性,使得对大规模社会网络的研究成为现阶段一个热点的科学问题,在社会网络中最显著的特征是社区,即社团结构。在研究过程中,我们把社交关系建模成图结构,社交关系中的人对应着图中的节点,社交关系中人与人之间的朋友关系对应着图中的边,这样我们可以利用图进一步进行深入地分析,发现社会网络中的社区结构。在dblp论文合著网络中,论文作者代表节点,作者之间的合著关系用边表示,网络中的一个社区表示这些作者之间的论文合著数量较多,他们研究领域更为相近。在线社交媒体中,用户被视为节点,用户与用户之间的好友关系被视为边,位于同一社区内的好友之间关系更为密切。

邵俊明等人在其发表的论文“communitydetectionbasedondistancedynamics”(acmsigkddconferencesonknowledgediscoveryanddatamining2015)中公开了一种基于动力学的社团检测方法attractor。该方法以迭代地方式不断更新网络中边的距离。该方法的步骤为:步骤1,输入网络紧凑参数;步骤2,计算网络中每条边的就初始距离;步骤3,扫描网络中的每一条边,根据网络的拓扑结构和紧凑参数计算与该边的两个端点相邻的邻居节点对该边距离的影响,从而更新边的距离;步骤4、重复步骤(3)直到图中每条边的距离不再发生变化。该方法存在不足之处是:attractor最终的检测出的社区个数以及社区的大小依赖于一个手动输入参数,这使得该方法缺乏自动性。由于attractor过度依赖于局部结构会产生距离震荡的现象,使得迭代次数过多,该方法较为耗时。通常情况下,attractor总是将网络划分为很多的小社区。

西安电子科技大学在其申请的专利文献“基于振荡器相位同步的符号网络社区检测方法”(专利申请号201310392893.4,公开号cn103475539)中公开一种基于改进的kuramoto动力学模型的社区检测方法。该方法的步骤为:步骤1,根据待网络中节点之间的关系生成邻接矩阵;步骤2,随机产生n个服从均匀分布的随机数,将所产生的随机数一一对应地设为网络中n个节点的初始相位;步骤3,使用改进的kuramoto动力学模型更新节点的相位;步骤4,根据每个节点更新前后的相位值差判断节点的相位达到稳定;步骤5,统计各个子区间节点个数。若子区间节点个数大于等于阈值m,则将该组内所有子区间对应的节点作为网络的一个社区;否则,该组内所有节点为网络的重叠节点。该方法存在的不足在于,对于社区间有正连接的网络最终稳定节点相位不能达到一致,导致社区检测的速度慢。另外,该方法检测出来的社区个数依赖于阈值m,这样的阈值会影响到最终检测结果的准确性。



技术实现要素:

本发明的目的在于针对上述已有技术的不足,提出一种基于动力同步距离更新的社区检测方法,在社会网络数据上检测社区,得到能够满足一定正确率的社区结构。

实现本发明目的的思路是,首先使用人与人之间的关系构建一个由节点和边构成的社会网络;然后使用jaccard距离计算公式计算社会网络中每条边的距离,并把每个节点视为一个社区;其次,根据社会网络的拓扑结构以迭代的方式更新社会网络中每条边的距离,距离更新同时社区与社区会发生合并与分裂,直到社会网络中每一条边的距离要么为0要么为1时迭代终止;最后求所有由距离为0的边构成的最大联通分量,每一个最大联通分量是一个最终的社区。

为实现上述目的,本发明的技术方案包括如下步骤:

(1)构建社会网络:

(1a)将社交关系中的每一个用户作为社会网络中的一个对应节点,并赋予一个唯一的节点标号;

(1b)将社交关系中两个用户之间的关系作为社会网络中对应的边,从而构建出社会网络中节点与节点之间连接的拓扑结构;

(2)初始化社会网络中的社区:

将社会网络中的每个节点初始化为一个对应的社区,并且将节点标号作为社区标号;

(3)初始化社会网络中相邻节点之间边的距离:

根据社会网络中的拓扑结构,使用jaccard距离计算公式,计算社会网络中每条边的距离,将计算的结果作为社会网络中每条边的初始距离;

(4)合并与分裂社区:

(4a)将社会网络中的所有距离不大于0的边的两个端点所在的社区合并为一个社区;

(4b)将社会网络中所有距离不小于1的边的两个端点所在的社区分裂开来;

(5)更新社会网络中每条边的距离:

(5a)将社会网络中与每一条距离介于0到1之间的边的两个端点相邻的所有节点分成三类集合;

(5b)根据当前迭代过程中每条边的距离,分别计算每类集合分别对每条边距离产生的影响;

(5c)将三类集合分别对每条边距离产生的影响与当前迭代过程中每条边的距离相加,用相加后的结果更新每条边的距离;

(6)判断社会网络中每条边的距离是否全部为0或者1,若是,则执行步骤(7);否则,执行步骤(4);

(7)确定最终社区:

求社会网路中所有距离为0的边所构成的最大联通分量,将每一个最大联通分量作为一个最终的社区。

本发明与现有的技术相比具有以下优点:

第一,由于本发明采用了根据边上已有的距离合并与分裂现有社区用来得到新社区的方法,克服了现有技术中存在的社区检测速度慢、迭代次数过多的问题,使得本发明能够快速地从大规模社会网络中检测出社区。

第二,由于本发明采用了使用社会网络固有的拓扑结构更新社会网络中每条边的距离的方法,使用该方法更新距离的过程中完全依赖网络的拓扑结构,克服了现有技术参数依赖性缺点,使得本发明能够有效的避免人为因素的影响。

第三,通过分析本发明检测出的社区结果可知,本发明可以检测出丰富的社区,有效的避免了将整个网络中的节点划分为很多的小社区或者将整个网络中的所有节点划分为一个社区的极端情形。

附图说明

图1是本发明的流程图;

图2是本发明在toy网络中检测社区的过程示意图;

图3是本发明对空手道网络检测出的社区示意图;

图4是本发明与现有的其他检测社区方法比较的示意图。

具体实施方式

下面结合附图对本发明做进一步的描述。

参照图1,对本发明的具体做进一步的描述。

步骤1,构建社会网络。

将社交关系中的每一个用户作为社会网络中的一个对应节点,并赋予一个唯一的节点标号。

将社交关系中两个用户之间的关系作为社会网络中对应的边,从而构建出社会网络中节点与节点之间连接的拓扑结构。

步骤2,初始化社会网络中的社区。

将社会网络中的每个节点初始化为一个对应的社区,并且将节点标号作为社区标号。

步骤3,初始化社会网络中相邻节点之间边的距离。

根据社会网络中的拓扑结构,使用jaccard距离计算公式,计算社会网络中每条边的距离,将计算的结果作为社会网络中每条边的初始距离。

所述的jaccard距离计算公式如下:

其中,d(x,y)表示社会网络中第x个节点与其相邻的第y个节点所构成边的距离;n(x)表示由社会网络中第x个节点与第x个节点相邻的所有节点构成的集合;n(y)表示由社会网络中第y个节点与第y个节点相邻的所有节点构成的集合;∩表示求交集操作;∪表示求并集操作;||表示求集合中元素的个数操作。

步骤4,合并与分裂社区。

将社会网络中的所有距离不大于0的边的两个端点所在的社区合并为一个社区。

所述的将社会网络中的所有距离不大于0的边的两个端点所在的社区合并为一个社区是指,将所有位于上述边的两个端点所在社区之间的边的距离置为0,将所含节点个数较少的社区内的节点社区标号改为所含节点个数较多的社区内的节点社区标号,以此合并两个社区为同一个社区。

将社会网络中所有距离不小于1的边的两个端点所在的社区分裂开来。

所述的将社会网络中所有距离不小于1的边的两个端点所在的社区分裂开来是指,将所有位于上述边的两个端点所在社区之间的边的距离置为1。

步骤5,更新社会网络中每条边的距离。

将社会网络中与每一条距离介于0到1之间的边的两个端点相邻的所有节点分成三类集合。

所述的三类集合是指,直接邻居集合,公共邻居集合,独家邻居集合三类集合;其中,直接邻居集合是指社会网络中每一条边的两个端点构成的集合;公共邻居集合是指同时与社会网络中每一条边的两个端点都相邻的所有节点构成的集合;独家邻居集合是指与社会网络中每一条边的两个端点中的一个端点相邻,但与另一个不相邻的所有节点构成的集合。

根据当前迭代过程中每条边的距离,分别计算每类集合分别对每条边距离产生的影响。

所述的计算每类集合对每条边距离产生的影响的公式如下:

a.直接邻居集合对边距离产生的影响的计算公式如下,

其中,表示在第t次迭代过程中直接邻居集合de,对第x个节点与其相邻的第y个节点所构成边的距离产生的影响;sin表示正弦操作;d(t)(x,y)表示社会网络中第x个节点与其相邻的第y个节点所构成边在第t次迭代的距离;deg(x)表示与社会网络中第x个节点相邻的节点总数;deg(y)表示与社会网络中第y个节点相邻的节点总数;

b.公共邻居集合对边距离产生的影响的计算公式如下,

其中,表示在第t次迭代过程中公共邻居集合ce,对第x个节点与其相邻的第y个节点所构成边的距离产生的影响;∑表示累加操作符号;z表示公共邻居集合中节点的序号;∈表示属于符号;d(t)(x,z)表示在第t次迭代过程中社会网络中第x个节点与位于公共邻居集合ce中的第z个节点所构成边的距离;d(t)(y,z)表示在第t次迭代过程中社会网络中第y个节点与位于公共邻居集合中ce的第z个节点所构成边的距离;

c.独家邻居集合对边距离产生的影响的计算公式如下,

其中,表示在第t次迭代过程中社会网络中独家邻居集合ee,对第x个节点与其相邻的第y个节点所构成边的距离产生的影响;p表示节点集合ee(x)中节点的序号;ee(x)表示节点集合,该集合中的节点与社会网络中第x个节点相邻,但不与第y个节点相邻;d(t)(x,p)表示在第t次迭代过程中,社会网络中第x个节点与节点集合ee(x)中第p个节点所构成边的距离;*表示相乘操作;λ(t)(p)表示在第t次迭代过程中,社会网络中第x个节点与节点集合ee(x)中第p个节点的紧凑系数;q表示节点集合ee(y)中节点的序号;ee(y)表示节点集合,该集合中的节点与社会网络中第y个节点相邻,但不与第x个节点相邻;d(t)(y,q)表示在第t次迭代过程中,社会网络中第y个节点与节点集合ee(y)中第q个节点所构成边的距离;λ(t)(q)表示在第t次迭代过程中,社会网络中第y个节点与节点集合ee(y)中第q个节点的紧凑系数。

所述的在第t次迭代过程中,社会网络中第x个节点与节点集合ee(x)中第p个节点的紧凑系数λ(t)(p)是由下述方法获得的:

第一步,使用下式,计算社会网络中第x个节点与节点集合ee(x)中第p个节点的相似度值;

其中,s(t)(x,p)表示在第t次迭代过程中,社会网络中第x个节点与节点集合ee(x)中第p个节点的相似度值;u表示同时与社会网络中第x个节点和节点集合ee(x)中第p个节点都相邻节点的序号;i表示与社会网络中第x个节点相邻节点的序号;j表示与节点集合ee(x)中第p个节点相邻节点的序号;

第二步,使用下式,计算社会网络中第y个节点与节点集合ee(x)中第p个节点的相似度值;

其中,s(t)(y,p)表示在第t次迭代过程中,社会网络中第y个节点与节点集合ee(x)中第p个节点的相似度值;w表示同时与社会网络中第y个节点和节点集合ee(x)中第p个节点都相邻节点的序号;m表示与社会网络中第y个节点相邻节点的序号;

第三步,判断s(t)(x,p)是否小于s(t)(y,p),若是,紧凑系数λ(t)(p)取值为s(t)(y,p);否则,紧凑系数λ(t)(p)取值为s(t)(y,p)-s(t)(x,p);

所述的在第t次迭代过程中社会网络中第y个节点与节点集合ee(y)中第q个节点的紧凑系数λ(t)(q)是由下述方法获得的:

第一步,使用下式,计算社会网络中第y个节点与节点集合ee(y)中第q个节点的相似度值;

其中,s(t)(y,q)表示在第t次迭代过程中,社会网络中第y个节点与节点集合ee(y)中第q个节点的相似度值;v表示同时与社会网络中第y个节点和节点集合ee(y)中第q个节点都相邻的节点序号;s表示与节点集合中第q个节点相邻节点的序号;

第二步,使用下式,计算社会网络中第x个节点与节点集合ee(y)中第q个节点的相似度值;

其中,s(t)(x,q)表示在第t次迭代过程中,社会网络中第x个节点与节点集合ee(y)中第q个节点的相似度值;h表示同时与社会网络中第x个节点和节点集合ee(y)中第q个节点都相邻的节点序号;

第三步,判断s(t)(y,q)是否小于s(t)(x,q),若是,紧凑系数λ(t)(q)取值为s(t)(y,q);否则,紧凑系数λ(t)(p)取值为s(t)(y,q)-s(t)(x,q)。

将三类集合分别对每条边距离产生的影响与当前迭代过程中每条边的距离相加,用相加后的结果更新每条边的距离。

步骤6,判断社会网络中每条边的距离是否全部为0或者1,若是,则执行步骤7;否则,执行步骤4。

步骤7,确定最终社区。

求社会网路中所有距离为0的边所构成的最大联通分量,将每一个最大联通分量作为一个最终的社区。

下面结合仿真图对本发明的效果做进一步说明。

1.仿真实验条件:

本发明的硬件测试平台是:处理器为intel(r)core(tm)i3-2120cpu@3.30ghz,内存为4.0gb,硬盘为460g;软件平台为:microsoftwindows7操作系统和visualstudio2013。

2.仿真内容与仿真结果分析:

本发明的仿真实验1是采用本发明的方法,在toy网络中进行社区检测,具体步骤如图2所示。该toy网络中含有16个节点27条边。图2中每个节点中的数字表示社会网络中节点的序号,节点之间的边表示社会网络中节点之间的相邻关系,每条边上的数字表示当前迭代过程中对应边的距离,黑色虚线框中的节点表示这些节点在同一社区内,子图之间的箭头表示本发明在toy网络上执行的状态转移方向。

图2(a)表示使用toy网络构造出的社会网络的初始状态图,图中每条边上的距离为初始距离;图2(b)表示对图2(a)中的每条边的距离进行社区合并与分裂的结果图;图2(c)表示对社会网络中所有边的距离进行更新后的图;图2(d)表示根据图2(c)中每条边的距离进行社区合并与分裂后得到的图;图2(e)表示对社会网络中所有边的距离进行更新后的图;图2(f)表示本发明在toy网络上检测到的最终社区示意图。

由图2(f)可见,每个椭圆虚线内部连接紧密的节点构成一个最终社区,但是椭圆虚线之间的连边稀疏,说明本发明能够将连接紧密的节点划分到同一社区内,将连接稀疏的节点划分到不同社区内。

本发明的仿真实验2是采用本发明的方法,在空手道网络中进行社区检测,其结果如图3所示。该空手道网络中含有34个节点78条边。图3中每个节点内的数字表示节点在社会网络中的节点的序号,节点之间的边表示社会网络中节点之间的相邻关系,所有灰色节点属于同一个社区,所有白色节点属于另一个社区。

图3所示结果表明,本发明在空手道网络中检测出两个社区,分别是白色节点带表的社区和黑色节点代表的社区,这样的结果与现实生活中空手道网络的真实社区一致。

本发明的仿真实验3是采用本发明的方法与现有技术的四种社区检测方法(louvain社区检测方法、attractor社区检测方法、lpa社区检测方法、cnm社区检测方法),对检测出的社区优劣进行比较,比较结果如图4所示。

图4中的横轴表示社会网络的混合系数取值,混合系数取值越大,表示社会网络的社区越不容易被检测到,混合系数值越小,表示社会网络的社区结构越容易被检测到。图4中的纵轴表示度量社区检测方法检测出的社区好坏的指标取值,该指标是由下式计算得到的:

其中,nmi表示度量社区检测方法好坏的指标,c0表示真实的社区结构,ce表示实验检测得到的社区结构,h(c0)表示社区结构c0的香农信息熵,h(ce)表示社区结构ce的香农信息熵,h(c0,c)表示社区结构c0和社区结构ce的香农信息熵,表示开根号操作。

度量社区检测方法好坏的指标值通常介于0到1之间,该指标的值越高,说明检测到的社区越接近于社会网络的真实社区;该指标的值越低,说明检测到的社区与社会网络的真实社区相差较远。

图4中以圆圈标示的曲线表示本发明的方法在社会网络中检测到的社区的nmi值;以正方形标示的曲线表示attractor社区检测方法在社会网络中检测到的社区的nmi值;以菱形标示的曲线表示cnm社区检测方法在社会网络中检测到的社区的nmi值;以五角星标示的曲线表示lpa社区检测方法在社会网络中检测到的社区的nmi值;以三角形标示的曲线表示louvain社区检测方法在社会网络中检测到的社区的nmi值。

图4中各个方法对比可知,当横轴所表示的混合系数值不大于0.75时,本发明方法检测到社区的nmi值要高于louvain社区检测方法、attractor社区检测方法、lpa社区检测方法、cnm社区检测方法检测到社区的nmi值。当横轴所表示的混合系数值大于0.75时,本发明方法检测到社区的nmi值略低于louvain社区检测方法检测到的社区的nmi值,但是仍然高于attractor社区检测方法、lpa社区检测方法、cnm社区检测方法检测到社区的nmi值。

通过将本发明的方法与现有技术的四种社区检测方法检测到社区的nmi值进行比较,说明本发明的社区检测方法检测到的社区结构具有较高的准确性,本发明是一种有效的社区检测方法。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1