尽管许多真实世界网络节点间包含有向的连接,如互联网中各个网页之间的超链接,都是带有方向的,但是过去在有向网络中寻找社区通常都是忽略边的方向性,而直接应用无向网络中的方法。这种做法可能会损失一些包含在连接方向中的有用信息,而这些信息对于寻找社区可能是非常有帮助或至关重要的。为了研宄方便,这里使用无权有向连接的网络。

通常网络中各节点的地位或重要性是不同的,社区通常也会以多个节点围绕某一个或几个比较重要节点的形式出现。本文参考万雪飞等人给出的一种在无向网络中,重叠社区发现的启发式算法,同样采用启发式策略提出了一种有向网络中的社区发现算法。PageRank算法是Google搜索引擎用来衡量网页重要性的算法,本文用PageRank值来刻画节点在网络中的重要性程度,帮助寻找重要性节点,也即中心节点。然后依次以中心节点为核心逐层向外扩展,达到设定的终止条件(如适应度函数)后形成以该中心节点为核心的局部社区,最后对不同的局部社区进行合并,观察模块度值的变化,取模块度值最大的划分为最终结果。由于节点可以属于不同的局部社区,所以该算法对于寻找重叠社区同样适用。最后,分别利用人工合成数据和真实网络数据进行了测试,并与一些其他社区发现算法做了比较,说明了本文算法的可行性和有效性。

Google搜索引擎是目前世界上使用最多的搜索引擎工具,它可以为用户提供优秀的搜索结果。而这些高质量的搜索结果极大地取决于PageRank算法个网页排序的闻效算法。在计算机网络发展的初期,并没有PageRank这些优秀的算法来对网页进行排序,通常都是用用户所要搜索的关键词在一个网页中出现的次数来衡量。但是这种方法有一个缺点,它并不能区分出垃圾网页和广告网页,因为这些网页会故意多次出现这些关键词,以提高被搜索到的概率,搜索结果的质量并不理想。之后,链接人气值的概念引出了网页的入度与出度。从此,就用网页的入度来表示网页的重要性。但是也会存在许多网站故意设置许多指向该网站的链接,而这些链接并没有多大意义,从而也影响了搜索的质量。

与网页的入度不同,PageRank算法在衡量网页重要性的时候,并不是只考虑网页的入度,同时还要考虑网页的出度。PageRank值就被Google搜索引擎用来衡量万维网中网页的重要程度。下式为一个网页的PageRank值的计算公式,即PageRank算法:

式中:PR(A)为网页A的PageRank值;PR(T)为链接到A的网页不的PageRank值;C(T)为网页不的出度;d为阻尼系数,0<d<1,是一个可调参数。

从上式可以看出,网页A的PageRank值取决于那些指向A的网页的PageRank的递归值。

PR(劝值并不是均等影响网页A的,指向A的一个网页C(助对A的PageRank值的影响还要考虑这个网页的出度。也就是说,C(T,.)的出度越大,它对A的影响就越小。如果A的入度为。,则由式((4.1)知PR(A)=1-d

图4.1所示是一个有向图,它由12个节点构成,图中给出了d = 0.85时,各个节点的PangRank值。从图中可以看出,PageRank值最大的节点,它的度并不一定也是最大的,而PageRank值对节点在网络中重要性程度的刻画更为准确,从而可以帮助我们寻找到中心节点。

网络中的社区通常是由某些节点围绕着一个或多个中心节点形成的,中心节点在社区中都有比较重要的作用,如充当领导或组织协调的作用。本文把某个社区中PageRank值最大的节点作为中心节点。参照Sun等人在文章中对边界点(Outlier)和桥接节点(Hub)的定义,本文给出了下面几种定义。

局部社区

定义4.1 (局部社区)给定一个中心节点后,就可以围绕这个中心节点逐层向外扩展,当达到某一终止条件后,如适应度函数,停止扩展,此时形成的小社区,称为局部社区。
        整体网络是由若干个PageRank值较大的局部核心而形成的局部社区相互连接而组成,每个局部社区内呈现明显的逐层节点PageRank值不断下降的趋势,最终到达网络的边缘,形成一个自然的局部区域内节点连接比较紧密且区域间节点连接比较稀疏的社区结构。

如图4.2所示的网络,其PageRank值如图4.1所示。节点7的PageRank值最大,则选其为中心节点,作为初始社区:{7}。经过第一层扩展,将初始社区内节点的邻居节点加入,形成临时社区:{7,6,8,12}。若此时达到局部社区扩展的终止条件,则:{7,6,8,12}即形成为一个局部社区。

主要成员

定义4.2 (主要成员)以PageRank值最大的节点为局部中心节点,逐层向外扩展其邻居节点,形成该社区内节点的影响力不断逐层衰减的趋势,该局部社区所覆盖的节点,即为该局部社区的主要成员,它们受到中心节点的紧密作用与影响,同时也反作用于该局部社区的中心节点,表示为:,其中C",表不第i个局部社区,Vci表示第i个局部社区内的节点,为该局部社区的中心节点,members为其扩展的主要成员节点集合。

边际节点

边际节点以局部中心节点进行扩展的过程中发现的没有被覆盖的节点,且他们又与该局部社区存在着关联,通常处于社区结构的边际位置,对网络中其他节点的影响较小,表示为:,其中Ci表示第i个局部社区,brims为其扩展的边际节点集合。

重叠节点

重叠节点以局部中心节点进行向外扩展的过程中,被两个以上局部社区同时覆盖的节点,体现了不同局部社区之间的强连接关系,同样可以进行社区间的信息传递,表示为:,其中表示属于第i个局部社区内的主要成员节点,为i,j两个局部社区的临时重叠节点集合。但是局部社区并不代表最终的社区划分结果,之后还要对局部社区进行合并,在确定最终的社区结构后,仍然属于两个以上社区的节点,我们称之为重叠节点。

适应度函数

节点适应度

局部社区相似度

基于pagerank的复杂网络社区发现算法

传统的社区发现方法通常只能对节点归属于哪个社区进行判断,不能发现节点之间的差异性信息。在网络拓扑结构中,每个节点由于其位置和特征参数的差异,它们在网络中的地位也是不同的。本文算法采用启发式思想,首先通过计算PageRank值找到局部中心节点,再以此节点为核心,利用适应度函数逐层向外扩展,寻找到局部社区,然后通过局部社区相似度不断合并社区,直到所有节点都被合并到一个社区为止,再通过有向模块度的判断找到最终的网络划分,在此过程中,也寻找到了边际节点、连接节点、重叠节点等,更好的区分了网络中节点的不同地位,对于理解网络结构与功能有很大帮助。

给定一个子图,我们把与该子图内节点存在连边且在该子图外的节点叫做他的邻居节点,记为neighbours(G)。在整个网络图中,我们把已经分配到某个局部社区中的节点叫做已覆盖节点,记为VF,尚未分配到局部社区的节点叫做未覆盖节点,记为Vunf。

算法的详细过程分为两个阶段,第一阶段为求取网络中的局部社区,如下所示:

第二个阶段为对所求得的局部社区进行合并,并用模块度来判断最终结果。

简单的社区计算

以上为PageRank实现社区发现算法的详细过程。

基于PageRank的复杂网络社区发现相关推荐

  1. 基于BAS算法实现复杂网络社区发现问题——附python代码

    基于智能优化算法的复杂网络社区发现问题 第一章 基于天牛须算法求解复杂网络社区发现问题 文章目录 基于智能优化算法的复杂网络社区发现问题 前言 一.基本天牛须算法 二.关于社区发现 基本问题 总结 前 ...

  2. 标签传播算法_复杂网络社区发现算法汇总

    社区发现 这篇文章汇总了一些常见的社区发现概念和算法,包括 Modularity Q Fast Unfolding(Louvain Algorithm) LPA SLPA KL算法 GN算法 社区: ...

  3. 附源码|复杂网络社区发现——标签传播算法(LPA)

    本文通过Python 3.7实现了标签传播算法的两个代码(1.自己写的,2.调包实现),并通过空手道俱乐部的例子进行可视化显示. 标签传播是一种半监督机器学习算法,它将标签分配给以前未标记的数据点.在 ...

  4. 学习记录 重叠网络权威知识——多尺度复杂网络社区发现的链接

    参考文献 [1]Ahn Y Y,Bagrow J P,Lehmann S.Link communities reveal muhiscale complexity in networks[J].Nat ...

  5. 深度学习助力网络科学:基于深度学习的社区发现最新综述

    来源:AMiner科技 论文题目: A Comprehensive Survey on Community Detection with Deep Learning 论文网址: https://arx ...

  6. 复杂网络之社区发现算法

    GN算法 2002年Girvan等提出了GN(Girvan - Newman ,命名是取自两位提出作者名)算法<Community Structure in Social and Biologi ...

  7. 社会网络中基于标签传播的社区发现新算法

    社会网络中基于标签传播的社区发现新算法 文章发表时间 :2012年3月 1. 本文贡献 提出了基于标签影响值的社区发现发算法,在接近线性的时间复杂度下,选取一个小的顶点集合作为种子集进行传播 综合考虑 ...

  8. 网络算法系列之社区发现(一):标签传播算法

    社区发现简介   社区发现问题实际上是从子图分割的问题演变而来.在社交网络中,有些用户连接非常紧密,有些用户连接较为稀疏,这些连接紧密的用户可以看做一个社区,而社区之间连接较为稀疏.下图就展示了一个社 ...

  9. 【深度学习】最新「深度学习社区发现」综述论文,174篇文献概述六大类方法(含Github资源)...

    | 作者:Xing Su | 单位:麦考瑞大学 | 研究方向:人工智能与数据科学 社区发现能够揭示各类网络中成员的特征与联系,在网络分析中具有重要意义.近年来,深度学习技术在发现社区结构时,以处理高维 ...

最新文章

  1. 飞书面向所有企业和组织免费开放,2020我们一起拥抱线上协作新方式
  2. 手把手教你实现一个 JSON 解析器!
  3. 关于产品 / 市场契合点 PMF 的 12 个问题全解读(上)
  4. C#中 paint()与Onpaint()的区别
  5. [LeetCode]--20. Valid Parentheses
  6. C. Goodbye Souvenir(CDQ 或 树套树)
  7. python字典的值可以是字典吗_python字典的值可以是字典吗
  8. c 语言从文件中读取字符串数组,C从文本文件读取到数组/字符串
  9. 隐含社交信任度和基于情感的方法的推荐系统
  10. 【王道操作系统笔记】操作系统的运行机制和体系结构
  11. java 随机抽取_java随机抽取指定范围不重复的数字
  12. jdk1.8以上连接Access数据库
  13. ESET NOD32 Antivirus – 免费 3个月/ 3PC
  14. 欧冠之王!曼联3球大逆转,球王C罗再度绝杀救主!
  15. 运动重构(SFM)学习笔记一
  16. vmware linux top si高以及网卡队列、软负载相关优化
  17. Windows11 下屏幕亮度自动调整的问题解决
  18. 案例分析|戴森如何以DTC全渠道营销打造百亿规模增长
  19. Java用户注册手机短信验证码校验功能实现
  20. 【未解决】CMD窗口无法显示带颜色文字输出

热门文章

  1. WhatsApp的Erlang世界
  2. c语言sort函数从小到大排序指针,sort排序是从小到大
  3. ipv6一致性(packet too big)测试
  4. H.264 高度压缩数字视频编解码器标准
  5. 12v电量显示制作方法_制作12V电池电压表
  6. 【庖丁解牛】configure: error: Cannot find libpq-fe.h. Please specify correct PostgreSQL installation path
  7. 99.999999%人看不出来的水印,专治各种盗图
  8. Linux常用命令-1
  9. java js 高德api_地图-参考手册-地图 JS API | 高德地图API
  10. 电脑假死卡的动不了_电脑卡机动不了怎么解决 电脑突然卡死动不了如何处理...