导读:本文来自作者的学习笔记。主要讲解Graph中社群的概念,然后介绍了一种简单的社群发现算法Louvain Algorithm,最后提供可重叠的社群发现,提出BigCLAM算法,用来识别节点从属关系。

01

Granovetter's theory

马克·格兰诺维特(Mark Granovetter,1943年10月20日-),美国社会学家,斯坦福大学教授。格兰诺维特是论文被引用最多的学者之一,根据 Web of Science 的数据,社会学论文被引数排名第一和第三的文章皆出自格兰诺维特之手。格兰诺维特因为对社会网络和经济社会学的研究而成名。其最著名成就是1974年提出的弱连接理论:与自己频繁接触的亲朋好友之间是一种“强连接”,通过这种连接获取到的往往是同质性的信息;但社会上更为广泛的是一种并不深入的人际关系,这种弱关系能够使个体获得通过强关系无法获取到的信息,从而在工作和事业上、在信息的扩散上起到决定作用。

格兰诺维特的研究认为如果两个人之间有共同的朋友,那他们成为朋友的可能性较大。

格兰诺维特的研究也在真实的数据上得到了验证:

1. Edge Overlap

简单解释下,Edge Overlap表示两个节点的邻居节点的重合程度(本身节点不在计算范围内),下图中右边部分右上图,N(i)=4,N(j)=4,去除本身i, j所以N(i)=4,N(j)=4,N(i)∩N(j)=2,所以Oij=1/3。

Edge Overlap被用来当做节点间链接的强弱的一种度量,通过在实际数据集(欧洲通话网络数据集得到验证),在实际数据中,具有高边重叠的边,确实是有着强连接关系的, 这里的强连接关系即用节点间通话次数来表示关系强弱;

2. 社区内强连接,社区间弱连接

上面的研究表明,在图中确实会存在紧密连接的社群概念,社群内的链接基本是强连接, 而社群间的连接是弱连接,强链接偏向将信息流锁紧在社群内部,而边缘连接由于涉及到多个社群之间,在信息传播上更有优势。

02

网络社群的基本概念

网络中的社群的基础定义:紧密连接的节点集合,这些节点间有较多的内部连接,而相对较少的外部连接;

Zachary空手道俱乐部一个在图这块入门级的数据集,用来展示图网络中基本的问题如节点分类、社区发现等等;

如下图,仅靠图的结构化关系,可以比较合理地将俱乐部进行切分,即规划至各自的社群:

另一个例子是NCAA FootBall Network:

1. 如何寻找网络中的社群?

Modularity Q用来衡量网络中社群划分的指标, 其基础含义如下:

其中  需要构建null model,保证相同的degree distribution且连接概率为均匀随机,假定两个节点i,j,其度分别为ki,kj,那么节点间边的期望为p(i,j)=kikj/2m,所以这个图里面所有边的期望为:

所以Modularity Q从:

表示为:

其中:

Q值域为[-1, 1],正值表示社群内的边多于期望,当Q为0.3-0.7之间表明有显著的社群结构。

2. Louvain Algorithm

Louvain Algorithm是一个最大化Modularity Q的贪心算法,主要由两步构成:

过程1:Partitioning

  1. 初始化的时候给所有节点分配一个单独的社区;

  2. 针对每一个节点i,进行以下步骤:

    1. 计算该节点被划分到其邻居节点j所在的社群,并且计算该社群的modularity delta;

    2. 将节点i移入至最好modularity delta的社群;

  3. 迭代,直到modularity delta不再增加;

其中modularity delta ΔQ, 应该包括Δ(i->C) ( 将节点i移入community C增加的Q值 ) 与Δ(D->i) ( 将节点i溢出Community D ),因为Δ(D->i),在步骤1中都一样, 所以ΔQ公式主要依赖于Δ(i->C),如下:

其中:

∑in表示社群内节点之间的边权重和(社群内边);

∑tot表示社群中节点所有的边的边权重和(社群内边与社群外边均考虑);

ki,in表示社群中节点i与其他节点的边权重和;

ki表示节点i连接的所有边的权重和。

过程2:Restructuring

经过第一步之后,会出现很多超级节点,这些超级节点间所在的社群间如果有任意的边连接,那么我们要连接超级节点,超级节点间的边的权重等于他们相应的社群间所有边权重的和;

具体的伪代码如图,逻辑还是相对比较简单的:

3. 回顾与真实数据展示

每一个pass包含:partitioning和restructuring两个部分,如下,迭代直到收敛:

真实数据集上的一个例子:

03

检测有重叠的社群算法:BigCLAM

1. 何谓有重叠的社群?

无重叠的社群与有重叠的社群:

很多实际数据集中,存在有重叠的社群:

facebook的Ego-Network:

PPI

2. BigCLAM

BigCLAM主要步骤如下:

  1. 基于节点所属的社群,构造一个图生成模型,构造方法为AGM ( Community Affiliation Graph Model );

  2. 根据我们实际的图G,假设它是用AGM生成的。寻找一个最优的AGM,能产生我们实际的图G, 通过这个AGM,确定每个节点所属的社区

Community Affiliation Graph Model

如下图,左边部分主要包括节点V,社群C,从属关系,其中每一个社群的概率为pc:

1. 社群c内的节点,彼此连接形成边的概率是pc;

2. 对于从属于多个社群的节点,如果其在一个社群内没有连接,其边在另外社群的连接也是可能存在的;

AGM可以生成多种不同的社群结构,如Non-overlapping, Overlapping, Nested:

Detecting Communities with AGM

使用AGM来做社群发现就转换成一个给定graph G,如何反推AGM的各个参数F:Affiliation Graph M,社群个数C,以及社群内连接概率pc。

给定G和F,计算器似然函数:

上式中前一个连乘表示图当中所有的边的似然函数,后一个表示不在该graph边集合的似然。考虑到每个节点属于各个社区的权重是不同的,向量Fu表示节点u属于各个社群的权重,加上log转换,所以log似然函数为:

这里和lr的梯度下降很类似,其实就是一样,只需要用梯度下降公式带进去自然就可以算出收敛时的F的参数;

有了F之后, 我们的节点从属社群关系就极其明显了。

04

总结

今天,主要讲解的是graph中社群的概念,通过Granovetter's theory和真实数据的对比,验证了图当中的强弱连接,从而引出社群概念,然后介绍了一种简单的社群发现算法Louvain Algorithm,通过最大化Modularity Q来保证节点与社群的从属, 最后提供可重叠的社群发现,提出BigCLAM算法,通过最大化log似然函数优化AGM生成对应真实Graph,来得到AGM, 从而得到包括社群从属关系在内的各个参数,进而识别节点从属。

原文链接:

https://zhuanlan.zhihu.com/p/262235147

图网络中的社群及社群发现算法相关推荐

  1. 综述 | 生成对抗网络(GAN)在图网络中的应用

    导语: 生成对抗网络(Generative Adversarial Network,简称GAN)是非监督式学习的一种方法,通过让两个神经网络相互博弈的方式进行学习.自2014年GAN网络提出以来,其在 ...

  2. 卷积神经网络流程图_AAAI 2020 | 北大:图卷积中的多阶段自监督学习算法

    作者 | 孙科 编辑 | 唐里 本文对北京大学林宙辰团队完成,被AAAI-20录用的论文<Multi-Stage Self-Supervised Learning for Graph Convo ...

  3. 深度学习核心技术精讲100篇(二)-图网络中的社群及社群发现算法

    前言 本篇博文主要讲解Graph中社群的概念,然后介绍了一种简单的社群发现算法Louvain Algorithm,最后提供可重叠的社群发现,提出BigCLAM算法,用来识别节点从属关系. 01 Gra ...

  4. louvain算法python_复杂网络任务6:Louvain社区发现算法的原理、细节和实现,作业,六,以及...

    Δ Q = [ ∑ i n 2 ∗ m + k i , i n 2 ∗ m − ( ∑ t o t 2 ∗ m ) 2 − ( 2 ∗ ∑ t o t ∗ k i 4 ∗ m 2 ) − ( k i ...

  5. 开源复杂网络分析软件中社团发现算法总结

    复杂网络研究中的一个重要部分就是社团发现(Community Detection)算法的研究,密歇根大学物理学系教授Mark Newman就主要在社团发现方面做出了很多贡献.今天简单总结一下几个开源复 ...

  6. 如何发现网络中的设备 设备发现协议(收集)

    如何发现网络中的设备(收集) 如何发现网络中的设备(收集) 好吧,每次要SSH到树莓派都很麻烦,我是没找什么办法,每次都得连上显示器鼠标键盘.才能知道IP地址. 看了点python,写了个脚本来发出 ...

  7. 网络化计算机代表图片,图网络——悄然兴起的深度学习新浪潮 | AISociety

    原标题:图网络--悄然兴起的深度学习新浪潮 | AI&Society 现实世界中的大量问题都可以抽象成图模型(Graph Model),也就是节点和连边的集合.从知识图谱到概率图模型,从蛋白质 ...

  8. 【深度学习】图网络——悄然兴起的深度学习新浪潮

    [深度学习]图网络--悄然兴起的深度学习新浪潮 https://mp.weixin.qq.com/s/mOZDN9u7YCdtYs6DbUml0Q 现实世界中的大量问题都可以抽象成图模型(Graph ...

  9. 图网络 | Graph Attention Networks | ICLR 2018 | 代码讲解

    [前言]:之前断断续续看了很多图网络.图卷积网络的讲解和视频.现在对于图网络的理解已经不能单从文字信息中加深了,所以我们要来看代码部分.现在开始看第一篇图网络的论文和代码,来正式进入图网络的科研领域. ...

最新文章

  1. vue 封装组件供全局使用_vue 封装组件的基本操作
  2. 【Python基础】Python处理文件的几个常用小知识
  3. 有望取代Spark,Michael Jordan和Ion Stoica提出下一代分布式实时机器学习框架Ray牛在哪?...
  4. 15个顶级Java多线程面试题及答案
  5. 一篇弄懂 HTTP和HTTPS基本关系
  6. 信息系统项目的应急预案方案_从环评到验收、排污许可证、应急预案,都应在项目什么阶段开展? 先后顺序是什么?...
  7. 蔺永华:虚拟化你的大数据应用
  8. nginx 多个root_dockerfile定制自己的nginx
  9. 2008年6月6日今天终于调回公司本部啦,记录历史的一天。
  10. nginx实战(五) 正向代理支持https
  11. 基于物联网技术的3DGIS智慧园区信息系统研究
  12. 嫦娥五号顺利升空,NASA、欧洲航天局回应
  13. 学习 Json解析数据
  14. html骨架效果,html5 页面基本骨架
  15. 【阿里云-如何实现实名认证】
  16. Tp5.0对接腾讯云语音验证码
  17. 牛客网 SQL17 10月的新户客单价和获客成本
  18. springboot下载网络图片到本地及Linux服务器(超详细)
  19. C#三点法计算圆心坐标和圆半径
  20. 最长公共子序列(LCS)算法

热门文章

  1. xp系统怎么关dhcp服务器,怎样解决Win XP操作系统DHCP故障:获取未使用的IP地址
  2. 偏置面命令_UG10.0 入门图文教程——同步建模之移动面
  3. java中判断两个方法是否相同
  4. 集群(二)——LVS-DR-Keepalived
  5. 池州天气预报软件测试,池州天气预报15天
  6. linux下加载qdm找不到驱动,Linux下共享文件夹的设置方法
  7. python歌词统计单词词频_Python爬虫网易云歌词及词频统计
  8. 计算机二级语义网络的研究现状与展望,计算机二级access选择题题库研究.doc
  9. php5.3无法加载mysql数据库模块_PHP_php5.3不能连接mssql数据库的解决方法,本文实例讲述了php5.3不能连接m - phpStudy...
  10. bat 启动 不弹出对话框_CAD中转换出的PDF文件模糊要怎么办