一种基于共同邻居节点和社团结构的互联网链路预测方法与流程

文档序号:15230380发布日期:2018-08-21 19:21阅读:381来源:国知局

本发明涉及网络科学中的链路预测领域,尤其是涉及一种基于共同邻居节点和社团结构的互联网链路预测方法。



背景技术:

随着以互联网为代表的网络信息技术的迅速发展,人类社会已经迈入了复杂网络时代。人类的生活与生产活动越来越多地依赖于各种复杂网络系统安全可靠和有效的运行。例如,计算机领域中的万维网,能源领域的电力网络,交通领域的航空网络,社交领域的在线交友网络等等。作为一个跨学科的新兴领域,网络科学已经逐步形成并获得了迅猛发展。网络中的链路预测问题,得益于学术界对网络科学本身重要性的认识,也成为横跨多个学科的核心科学问题。链路预测是通过对已知的网络节点以及网络结构等信息的分析,来评估不相连的两个节点之间产生连接的可能性,进而实现预测。这种预测既包含对未知链接的预测,也包含了对未来链接的预测。链路预测研究具有广泛的实际应用价值。链路预测算法,可以帮助提高生物实验的效率,可以用于在线社交网络中的好友推荐和电子商务中的个性化产品推荐,甚至可以用来预测美国联邦最高法院法官的投票。

目前,传统链路预测算法分为三大类:利用节点属性等外部信息进行预测,利用似然分析构造网络结构进而实现预测,利用网络结构的相似性进行预测。第一类算法需要获取节点属性等外部信息,但是很多情况这些信息的获取是很困难的,实用性较差。第二类算法由于需要构造整个网络系综,计算量非常大,处理几千个节点的网络也会感到吃力。第三类相似性算法也可以分为两种:基于局部信息的算法和基于全局信息的算法。仅考虑网络的局部信息,其计算量远远小于基于全局信息的算法,特别是在网络规模较大且稀疏的情况下,局部路径算法的优势更加明显,因此应用较为广泛。最简单的基于局部信息的相似性算法是直接利用共同邻居节点的相似性进行预测,其中比较经典的指标有共同邻居(cn)指标、adamic-adar(aa)指标以及资源分配(ra)指标。然而,这类基于共同邻居节点的相似性指标由于使用的信息非常有限,没有考虑社团结构等网络其他拓扑结构特征,因而其预测精度受到限制。



技术实现要素:

本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种基于共同邻居节点和社团结构的互联网链路预测方法。

本发明的目的可以通过以下技术方案来实现:

一种基于共同邻居节点和社团结构的互联网链路预测方法,包括以下步骤:

1)根据原始网络数据,对网络进行初始化,获取不存在链接的节点对列表ln;

2)采用快速社团检测算法bgll对网络中的每个节点进行社团划分,并对划分后的每个节点赋予唯一的社团标签;

3)根据基于节点社团结构信息的相似度指标和根据节点共同邻居信息的改进ra指标求和获取网络间任意两个节点间的相似度sx,y;

4)根据相似度sx,y值的大小将列表ln中的节点对从高到底排列,选取列表ln中的前l个节点对,即为预测到的网络中最有可能存在或者将来会产生的链接。

所述的步骤3)中,获取基于节点社团结构信息的相似度指标具体包括以下步骤:

301)将不存在链接的节点对列表ln按节点编号大小从小到大排列;

302)从ln中的第一个节点对开始,依次判断当前节点对中两个节点是否属于同一个社团,若否,则其相似度指标值为0,返回步骤302),并计算下一节点对的相似度指标若是,则进行步骤303);

303)获取当前节点对中两个节点的共同邻居节点集合λx,y以及集合λx,y中与该节点对中两个节点属于同一个社团的节点的集合

304)计算当前节点对的基于节点社团结构信息的相似度指标

305)重复步骤301)-304)得到ln中所有节点对的相似度指标

所述的步骤306)中,基于节点社团结构信息的相似度指标的计算式为:

其中,为共同邻居节点集合λx,y的节点个数,|λx,y|为集合的节点个数。

所述的步骤3)中,获取根据节点共同邻居信息的改进ra指标具体包括以下步骤:

401)将不存在链接的节点对列表ln按节点编号大小从小到大排列;

402)从ln中的第一个节点对开始,判断当前节点对中两个节点是否拥有共同邻居节点,若否,则其改进ra指标值为0,返回步骤402),并计算下一节点对的改进ra指标若是,则进行步骤403);

403)获取当前节点对中两个节点的共同邻居节点集合λx,y,并计算当前节点对中两个节点的度数k(x)、k(y)以及集合λx,y中全部共同邻居节点的度数k(z1)、k(z1)...k(zn),节点的度数定义为:与该节点直接相连的节点的个数;

404)计算当前节点对的根据节点共同邻居信息的改进ra指标并返回步骤到402)步;

405)重复步骤401)-404)得到ln中所有节点对的改进ra指标第一、二列为节点的编号,第三列为对应的相似度值。

所述的步骤304)中,根据节点共同邻居信息的改进ra指标的计算式为:

其中,k(x)和k(y)为当前节点对中两个节点的度数,k(zn)为共同邻居节点的度数,n为当前节点对中两个节点的共同邻居节点的个数。

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

1.改进了资源分配指标(ra),重新定义了基于共同邻居节点信息的相似性指标,提高了链路预测的准确度;

2.创新地将社团结构这一重要网络拓扑结构特征引入链路预测算法中,有效地融合了网络的共同邻居节点信息和社团结构信息,很大程度上提高了链路预测的精度,同时保证了链路预测的效率;

3.本发明不仅仅适用于互联网,在其他各种复杂网络中,如交通网络、生物网络、社会关系网络等,均有着较高的链路预测准确度。

本发明不仅仅适用于互联网,在其他各种复杂网络中,如交通网络、生物网络、社会关系网络等,均有着较高的链路预测准确度。

附图说明

图1为bgll算法进行社团划分的程序图。

图2为本发明链路预测方案的整体流程图。

图3为具体实施例中的网络分析图,其中,图(3a)为网络结构图,图(3b)为划分结果图。

具体实施方式

下面结合附图和具体实施例对本发明进行详细说明。

实施例

如图2所示,本发明提供一种基于共同邻居节点和社团结构的互联网链路预测方法,包括以下步骤:

(1)如图3(a),输入原始网络数据g(7,9),对网络进行初始化,获取不存在链接的节点对列表ln,一共有12条不存在的链接,即:

{(1,5),(1,6),(1,7),(2,5),(2,6),(2,7),(3,4),(3,5),(3,6),(3,7),(4,7),(6,7)};

(2)采用快速社团检测算法bgll对网络g(7,9)中的每个节点进行社团划分,划分完成后每个节点都被赋予唯一的社团标签:c1和c2;

(3)利用基于节点社团结构信息的相似度指标,计算任意两节点之间的相似度,得到本链路预测方法的第一部分s1,具体包括以下步骤:

31)将不存在链接的节点对列表ln按照节点编号大小从小到大排列,即:{(1,5),(1,6),(1,7),(2,5),(2,6),(2,7),(3,4),(3,5),(3,6),(3,7),(4,7),(6,7)};

32)从ln中的第一对节点(x,y)即(1,5)开始,依次计算每对节点的相似度

33)判断x和y是否属于同一个社团,若否,则其相似度回到32)步,计算下一对节点的相似度;若是,则继续;

34)找到x和y的共同邻居节点的集合λx,y,用|λx,y|代表该集合中节点的个数,如λ6,7={5},|λ6,7|=1;

35)从集合λx,y中找出与x和y属于同一个社团的节点的集合λx,yin,用|λx,yin|代表该集合中节点的个数,如

36)则x和y两节点的相似度为回到32)步;

37)遍历ln中节点对完后,得到由所有节点对及其相似度值组成的相似度矩阵s1,行、列为节点的编号,元素为对应的相似度值,有:

(1)根据节点的共同邻居信息,利用改进的相似性链路预测指标ra,计算任意两节点之间的相似度,得到本链路预测方法的第二部分s2,具体包括以下步骤:

41)将不存在链接的节点对列表ln按照节点编号大小从小到大排列,即:{(1,5),(1,6),(1,7),(2,5),(2,6),(2,7),(3,4),(3,5),(3,6),(3,7),(4,7),(6,7)};

42)从ln中的第一对节点(x,y)即(1,5)开始,依次计算每对节点的相似度

43)判断x和y是否拥有共同邻居节点,若否,则其相似度回到42)步,计算下一对节点的相似度,若是,则继续;

44)找到x和y的共同邻居节点的集合λx,y,计算x和y及其每一个共同邻居节点的度数k(x),k(y),k(z),如λ6,7={5},k(6)=2,k(7)=1,k(5)=3;

45)则x和y两节点的相似度为

回到32)步;

46)遍历ln中节点对完后,得到由所有节点对及其相似度值组成的相似度矩阵s2,行、列为节点的编号,元素为对应的相似度值,有:

(2)对步骤(3)(4)计算出来的结果进行求和,所得即为依据本链路预测方法求出的任意两节点之间的相似度sx,y=s1+s2,有:

(3)按照相似度值sx,y的大小将列表ln从高到底排列,有:

{(3,4),(4,7),(6,7),(1,5),(1,6),(2,5),(2,6),(1,7),(2,7),(3,5),(3,6),(3,7),}取列表中前l(l为自定义)个节点对即为本方法预测的该网络最有可能存在或者将来会产生的链接。

如图1所示,本发明中利用bgll算法对网络中的每个节点进行社团划分具体包括以下步骤:

(1)输入原始网络数据g=(v,e),v表示节点,e表示连边,如图3(a)为g(7,9);

(2)对网络进行初始化,生成邻接列表l和构造二维邻接矩阵m,对网络g(7,9),邻接列表l为:

{(1,2),(1,3),(1,4),(2,3),(2,4),(4,5),(4,6),(5,7)}

二维邻接矩阵m为:

(3)为每个节点分配一个社团编号,从1开始,如其中a1,a2,…,an为节点即1,2,…,7,c1,c2,…,cn为社团编号(n>1,n为节点个数);

(4)从第一个节点开始,将该节点移入其邻居节点所在的社团中,计算移动后的模块度增益若δq>0,则认可此次移动,更新该节点的社团编号,否则将该节点移入其他邻居节点所在社团中,继续计算δq,判断是否需要更新节点的社团编号,若遍历其邻居节点,δq均不大于0,则不移动该节点,保留原社团编号;

(5)重复步骤(4),直到所有的节点都遍历完毕,计算剩下的社团个数,从1开始重新对每个节点进行社团编号,如其中1,a2,…,an为节点,c1,c2,…,cm为社团编号(n>1,n为节点个数,m>1,m为社团个数),计算模块度值

(6)将所有社团视为单个节点,从第一个社团开始,将该社团移入与其有连边的邻居社团中,计算模块度增益δq,若δq>0,则认可此次移动,更新该社团所有节点的社团编号,否则将该社团移入其他与其有连边的邻居社团中,继续计算δq,判断是否需要更新该社团的编号,若遍历与其有连边的邻居社团,δq均不大于0,则不移动该社团,保留原社团编号;

(7)重复步骤(6),直到所有社团都遍历完毕,计算此时的模块度值q';

(8)若q′比之前的q大,则表示此次社团合并有效,更新q值,从1开始重新对每个节点进行社团编号,重复步骤(6)(7),继续上述社团合并过程;

若q′不比之前的q大,则停止社团合并,返回q值最大时的社团划分结果,对图3(a)中网络g(7,9)的划分结果如图3(b)所示,节点1,2和3划分在第一个社团中,节点4,5,6和7划分在第二个社团中。

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