Evolutionary Computation for Community Detection in Networks: a Review

归纳了基于遗传算子的策略,讨论了问题建模,编码方案,遗传算子,适应度函数

社区网络结构的图表示

一个网络将建模为一个图G=(V,E,W)。

V是节点

E是边

W:VxV—>R是一个函数,如果i,j之间存在一条边,则为其分配权重,不存在边则分配0 。

图G可以用一个邻接矩阵A表示。

而社区就是内部边密度大,外部边稀疏的子图。
一个节点的度:ki=∑jAij一个节点相对于它所属于的社区C的度数ki(C)=kiin(C)+kiout(C)kiin(C)=∑j∈CAij一个节点的度:k_i=\sum {_j}A_{ij}\\ 一个节点相对于它所属于的社区C的度数k_i(C)=k_i^{in}(C)+k_i^{out}(C)\\ k_i^{in}(C)=\sum{_{j\in{C}}}A_{ij} 一个节点的度:ki​=∑j​Aij​一个节点相对于它所属于的社区C的度数ki​(C)=kiin​(C)+kiout​(C)kiin​(C)=∑j∈C​Aij​

建模

community detection 抽象为优化问题(optimization problem),包含单目标和多目标

单目标

多目标

寻找Pareto最优

编码

一个社区的例子

Label-Based

例如对上述图的一个基于标签的编码,划分为三个社区

但是这种编码方式有两个缺陷:(highly redundant)

1)如果一个基因型代表k个分组,就会有k!种方式代表相同的染色体。比如11122223333和222111133333代表的是同一种社区划分。

2)标签可以是1-n的任意数字,所以444666699999也表示相同的社区划分。搜索空间是n的n次方。

Locus-Based

基于轨迹的编码方式。一开始提出用于聚类,后来被开发为多目标聚类方法。

一个个体由n个基因构成,每个基因可以假定等位基因值在1-n之间,分配给第 i 个基因的值 j 被解释为节点 i 和 j 之间的链接。这样使得表示出来的子图一般呈树形。这样的方法最后要使用解码的步骤确定社区划分。

缺点:

在适应度评估之前,需要进行解码,如果在种群和节点数量都很庞大的情况下,会降低算法的速度。

Medoid-based

基于中心的编码方式。使用维度为k的数组,k必须作为输入的参数(k代表社区数)。数组的第 i 个元素包含组成社区的节点之一。如上图就可以表示为 [1 5 10],1,5,10分别是三个社区的一个节点。1就是社区{1,2,3}的prototype(原型)。

缺点:
1)社区的数量必须知道

2)redundant。因为社区里的任意一个节点都可以作为中心。

Permutation-based

基于排列的编码方式。可以运用于重叠社区。一个基因序列的表示方式是

是所有节点的一个排列

ci表示节点i所在的社区。

作者采用了一个解码器生成A< C >,,解码器步骤如下:

1)按照序列P中的顺序检测每一个节点,如果适应度函数增强,就将这个节点添加到现有的社区中,否则将创建一个单独的社区。这样同一个节点可以提高不同社区的适应度函数值,从而加入到许多的社区中。

2)检测完所有的节点,如果社区有至少50%的节点是相同的,则将他们合并。

解码器有两个问题:

1)为了生成序列C,必须执行一个解码器的算法,解码计算可能很昂贵。

2)会生成很多单独的社区。

总结

前三种编码方式都只能运用于不重叠的社区(一个节点只能属于一个社区)的情况,第四种编码方式的提出,解决了重叠社区的编码方式。

遗传算子

常用的遗传算子

交叉算子

传统的交叉算子运用到社区检测会出现诸多的问题,这些问题和所用的方法有关,所以不同的编码提出了不同的交叉算子。

  1. 传统的one-point(随机设置一个交叉点,然后交换两个配对个体的部分染色体)或者two-point crossover 运用到基于标签的编码上会出现两个缺陷:第一个缺陷是一个社区可能会包含没有边相连的节点组;第二个缺陷是会破坏已经获得的一些块,没有继承亲代的遗传特征。

     ——提出了one-way crossover
    

两个亲代source和destination,随机选择一个节点i,找到source中与节点i属于同一社区标签的所有节点,在destination中替换为节点i的社区标签。

  1. Standard uniform crossover

    适合于基于轨迹的编码方式。这种方式会先随机生成一个二进制的数组,如果节点i的对应的数字是0,则继承第一个亲代的基因,如果是1则继承第二个亲代的基因。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-y3RO4Xjc-1668761836356)(https://gitee.com/lvs1y1ing/drawing-bed/raw/master/img/202211181655671.jpg)]

    这样可以保证亲代相连的点也能够被子代继承(因为基于轨迹的编码方式在第i个位置记录的都是节点i的邻居)

  2. Binomial crossover

     一个新的个体u继承一个目标向量x和一个突变载体v的基因[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8Vvc7S41-1668761836356)(../assets/wps2.jpg)]
    

jrand是一个在1-n之间的随机整数,rand是0-1之间的数,CR控制的参数。

将这种方式与one-way crossover结合,运用于基于标签的编码方式,这样不仅节点j的社区标签会改变,和节点j属于同一个社区的所有节点的社区标签也会改变。

变异算子

mutation的目的是为了朝着尚未检查过的区域进行探索。

种群初始化

一般都是为每个个体分配随机值。但是对于社区检测,这样的策略会给出质量差的网络的初步划分,导致真正的社区高度混合。所以针对不同编码类型也有不同的初始化方式。

对于基于标签的编码方式选择几个节点,将他们的社区标签分配给他们的邻居。

局部搜索算子

遗传算子会产生将节点分配到错误社区的解决方案,为了提高社区分工的质量,提出了一些启发式的方法。

  1. clean-up process。在每一代结束的时候,选择一些节点计算他们的社区方差(community variance)
    CV(i)=∑(i,j)∈Ef(i,j)kiCV(i)=\frac{\sum_{(i,j)\in{E}}f_{(i,j)}}{k_i} CV(i)=ki​∑(i,j)∈E​f(i,j)​​

ki是节点i的度,f(i,j)如果i和j属于同一个社区则为0,否则为1。所以社区方差实际上就是计算节点i于其邻居之间不同社区数量与其邻居数量之间的比率。如果这个值高于固定的阈值,那么就将节点i以及他所有的相邻节点分配给包含最多节点数的社区。社区方差可以让相连的节点分到同一个组。

  1. 每一代结束后只有对具有最佳适应度值的个体进行局部搜索。

适应度函数

适应度函数的选择也是一个关键的步骤。在社区检测中最常用的函数就是模块化(modularity)。
Q=12m∑(Aij−kikj2m)δ(Ci,Cj)Q=\frac{1}{2m}\sum(A_{ij}-\frac{k_ik_j}{2m})\delta(C_i,C_j) Q=2m1​∑(Aij​−2mki​kj​​)δ(Ci​,Cj​)
A是图的邻接矩阵,m是边的数量,k就是节点的度。δ\deltaδ表示如果节点i和节点j在同一个社区中,则为1,否则为0.高于0.3的值表示良好的社区结构。

对于处理有权重的网络,模块度又可以重新定义为:
Q=12w∑ij(Wij−wioutwjin2w)δ(Ci,Cj)Q=\frac{1}{2w}\sum_{ij}(W_{ij}-\frac{w_i^{out}w_j^{in}}{2w})\delta(C_i,C_j) Q=2w1​ij∑​(Wij​−2wwiout​wjin​​)δ(Ci​,Cj​)
wiout=∑jWijw_i^{out}=\sum_jW_{ij}wiout​=j∑​Wij​,wjin=∑iWijw_j^{in}=\sum_iW_{ij}wjin​=i∑​Wij​,2w=∑i∑jWij2w=\sum_i\sum_jW_{ij}2w=i∑​j∑​Wij​。2w也就是权重之和。

重叠社区也有自己的适应度函数:

Ov表示节点v参与的社区的数量。

多目标优化

社区网络的不同类型

signed network

包含正负两种关系的二维复杂网络。这种网络广泛存在于社会中。例如社会系统中喜欢,表扬属于正关系,厌恶,责备属于负关系。

符号网络的模块度:

m+m^+m+表示所有正关系的数量,m−m^-m−表示所有负关系的数量,a表示的是节点度的数量。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1pE0Hxtu-1668761836358)(Evolutionary Computation for Community Detection in Networks a Review.assets/image-20221117124732837.png)]

检测符号网络中的社区的多目标不仅使用了modularity,还有一个Frustration F(C)函数,定义为同一社区内节点之间的负边数与节点进入不同社区的正边数之和。

Li等人对比了几种算法:EA-SN,CSA-SN,EAHC-SN,CSAHC-SN(时间很早,2014年),实验证明CSAHC-SN的表现比其他的方法更好。

Multilayer Networks

多层网络的每一层表示不同的特征组合,成为aspect或者facets(方面,分面),所以对于每一方面a都有对应的一组元素La,每一组元素称为elementary layer。

一个多层网络定义为:M=(VM,EM,V,L)M=(V_M,E_M,V,L)M=(VM​,EM​,V,L),V是节点集,L=Laa=1lL={L_a}_{a=1}^lL=La​a=1l​是基本层La的集合序列。VM就是指有效存在与层中的节点和基本层的集合,EM指一些可能 的组合。

当一个网络只有有一个基本层具有多种类型的边和同一组节点是,称为多路复用(multiplex)。

对于多层网络的社区检测存在的方法还很少。一些方法是针对多路复用网络,还有一些就是针对动态网络,动态网络(dynamic network)可以视为限制在两个方面的多层网络。第一方面L1={T1,…,TT}表示时间信息,表示两个节点之间发生连接的时间;第二方面L2={D1,…,Dd}给出了节点之间的交互类型。

重叠社区探索

通过将社区检测方法应用于折线图生成原始交互网络的重叠部分,从而允许一个节点存在多个社区之中。

无向图G的折线图(line graph)L(G)也是一个图,L(G)的每个顶点表示G的一个边,L(G)的两个顶点相邻当且仅当他们在图G中代表的边共享一个公共端点。折线图表示图G边之间的邻接关系。下图举个例子。这种方式也采用基于轨迹的编码方式 。并且用算法找到折线图的社区结构,然后计算原始图G的相应的社区得分来评估这次社区检测的质量。

Shi等人提出了类似上述思想的方法,使用了由Ahn等人提出的分配密度(partition density)概念作为适应度函数,因为划分密度是基于边的数量的,所以可以作为适应度函数评估原始图G的质量。

其他仿生方法

PSO

ACO

Firefly Algorithm

Bat Algorithm

来评估这次社区检测的质量。

[外链图片转存中…(img-OvauniTp-1668761836359)]

Shi等人提出了类似上述思想的方法,使用了由Ahn等人提出的分配密度(partition density)概念作为适应度函数,因为划分密度是基于边的数量的,所以可以作为适应度函数评估原始图G的质量。

其他仿生方法

PSO

ACO

Firefly Algorithm

Bat Algorithm

Evolutionary Computation for Community Detection in Networks a Review相关推荐

  1. cs224w(图机器学习)2021冬季课程学习笔记16 Community Detection in Networks

    诸神缄默不语-个人CSDN博文目录 cs224w(图机器学习)2021冬季课程学习笔记集合 文章目录 1. Community Detection in Networks 2. Network Com ...

  2. 【论文阅读】【三维目标检测】StarNet: Targeted Computation for Object Detection in Point Clouds

    文章目录 StarNet Center selection Featurizing local point clouds After Constructing final predictions fr ...

  3. 进化计算(Evolutionary Computation)

    来源: https://baike.baidu.com/item/%E8%BF%9B%E5%8C%96%E8%AE%A1%E7%AE%97/3768586?fr=aladdin 在计算机科学领域,进化 ...

  4. Graph Neural Networks: A Review of Methods and Applications(图神经网络:方法与应用综述)

    Graph Neural Networks: A Review of Methods and Applications 图神经网络:方法与应用综述 Jie Zhou , Ganqu Cui , Zhe ...

  5. Paper:《Graph Neural Networks: A Review of Methods and Applications—图神经网络:方法与应用综述》翻译与解读

    Paper:<Graph Neural Networks: A Review of Methods and Applications-图神经网络:方法与应用综述>翻译与解读 目录 < ...

  6. Paper:《Graph Neural Networks: A Review of Methods and Applications》翻译与解读

    Paper:<Graph Neural Networks: A Review of Methods and Applications>翻译与解读 目录 <Graph Neural N ...

  7. Graph Neural Networks: A Review of Methods and Applications(Semantic Segmentation应用解读)

    Graph Neural Networks Graph Neural Networks: A Review of Methods and Applications 下载链接:https://arxiv ...

  8. 《Continual lifelong learning with neural networks : A review》阅读笔记

    增量学习更多的起源于认知科学神经科学对记忆和遗忘机制的研究,Continual lifelong learning with neural networks : A review综述探讨了增量学习在生 ...

  9. 《Graph Neural Networks: A Review of Methods and Applications》图网络综述 -- 解析笔记

    Graph Neural Networks: A Review of Methods and Applications 相关推荐 概要 原文链接 内容概括 要点分析 图神经网络 生疏词汇 笔记 符号表 ...

最新文章

  1. leetcode算法题--和为s的连续正数序列
  2. startActivityForResult用法详解
  3. bootcmd和bootargs
  4. 最简单的基于FFmpeg的移动端样例:IOS 视频转码器
  5. 蓝湖完成 10 亿元 C+ 轮融资,发布一站式产品设计协作工具
  6. 【微信开发】-- 企业转账到用户
  7. k means sse python_python实现kMeans算法
  8. 这样的代码才是好代码
  9. eclipse远程发布代码的方法(SSH自动同步)
  10. Google的十个核心技术,互联网营销
  11. windows7破解登陆密码
  12. linux系统上安装微信(Ubuntu/Debian 微信安装)
  13. Egret之Eui.Button换肤
  14. 脑机接口技术使瘫痪病人重获运动能力,4D打印技术已经到来!|技术前沿洞察...
  15. 编程比赛项目和时间汇总
  16. 华为数通笔记-ISIS基础
  17. 问卷调查 批量模拟真人填写 爬虫 实战
  18. 基于函数回调方法对qsort()进行修改,使用冒泡排序实现对不同类型数据的排序
  19. Ubuntu1804-Docker相关开发环境搭建
  20. 解读:政务信息资源整合共享难点分析及对策研究

热门文章

  1. Mybatis Plus SQL语句中 字段为数据库关键字的解决方案
  2. 2022年服贸会圆满落幕,迦太利华(自由客)备受关注
  3. mac软件:微信双开,一步到位
  4. android 拍照 录视频教程,手机如何录制视频,详细录制教程分享给大家
  5. Arduino中的滑动开关和按钮开关
  6. 准备进入默默无闻模式
  7. (转)2、软件架构前提
  8. java宝典app_java修炼手册app下载
  9. VMware Workstation 7.1 Release Notes
  10. 自媒体神器,一天可以批量剪辑几百个视频,还能批量采集视频素材