社区发现快速入门
参考:https://www.bilibili.com/video/BV1gL411Y7c9/
一、图:关系型数据的一种描述方式
关系型数据,又名“表格数据”,指关系数学模型中以二维表的形式来描述的数据,它以表格形式组织,使用行和列来存储和表示数据之间的关系。
关系型数据可以用实体、属性和边来描述,以**学生表(Students)**为例:
学生ID | 姓名 | 性别 | 年龄 |
---|---|---|---|
1 | 张三 | 男 | 20 |
2 | 李四 | 女 | 22 |
- 实体:表格中的每一行对应一个实体(如,实体1:学生“张三”;实体2:学生“李四”)
- 关系:用于描述实体之间的某种关系(如,学生“张三”和学生“李四”是朋友;学生“张三”向学生“李四”发送邮件;学生“张三”、学生“李四”和学生“王五”在同一个班级)
- 属性:表格中的每一列对应实体的一个属性(如,学生“张三”的属性包括“性别”:男;“年龄”:20)
在图模型中,可以使用图的节点和边来建模关系型数据,关系型数据被建模为图(graphs)或超图(hypergraphs)。
- 实体——点
- 关系——边
- 属性——特征
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zIswjOfa-1690376405047)(assets/image-20230724201507842.png)]
二、图的描述与生成
2.1 图与社区的相关概念
-
节点的度(degree):与该节点直接相连的边的数量
-
度分布:节点的度数的频率分布情况
-
友谊悖论:在社交网络中,大多数人的朋友数量要比他们自己的朋友数量平均值要高。即,节点邻居的平均度通常高于其自身的度。
-
-
边介数(edge betweenness):通过这条边的所有最短路径的数量,用于衡量图中边的重要性。
-
中心性(centrality):一组用于衡量图中节点重要性或影响力的指标。中心性是通过数值化节点与图中其他节点之间的关系,从而评估节点在网络中的位置和影响力。
- 度中心性(Degree Centrality):度中心性是指一个节点在图中与其他节点直接相连的边的数量。度中心性较高的节点被认为在网络中较为重要,因为它们与更多的其他节点有连接。在无向图中,度中心性等于节点的度;在有向图中,分为入度中心性和出度中心性。
- 中枢/权威中心性(hub/ authority):中心节点或者权威节点的度中心性
- 中枢节点:有向图中,出度比较大的节点
- 权威节点:有向图中,入度比较大的节点
- 中枢/权威中心性(hub/ authority):中心节点或者权威节点的度中心性
- 接近中心性(Closeness Centrality):接近中心性测量节点到其他节点的平均距离。距离是指节点之间的最短路径长度【又名测地线(geodesic)】。具有较低平均距离的节点被认为在网络中更为中心,因为它们更容易与其他节点快速地进行交流。
- 介数中心性(Betweenness Centrality):介数中心性度量节点在图中其他节点之间的重要性。一个节点的介数中心性高表示它在图中扮演着连接不同节点之间的关键角色。介数中心性较高的节点通常在信息传递、通信或资源传递中起到重要作用。
- 特征向量中心性(Eigenvector Centrality):特征向量中心性考虑了节点本身的重要性以及其直接连接节点的重要性。该指标假设与高度中心性节点直接相连的节点也具有较高的中心性。因此,特征向量中心性可以被视为节点在整个网络中的影响力。
- PageRank中心性:PageRank是一种特殊的特征向量中心性,最初由谷歌用于对网页进行排名。它将网络视为马尔可夫链,并在网络上进行随机游走,根据节点的传入链接数量和链接的质量来分配节点的排名。
- Δ中心性(delta-centrality):每对节点之间的最短路径经过该节点的数量被定义为该节点的Δ中心性,用于衡量图中节点对网络连通性的贡献程度。
- 度中心性(Degree Centrality):度中心性是指一个节点在图中与其他节点直接相连的边的数量。度中心性较高的节点被认为在网络中较为重要,因为它们与更多的其他节点有连接。在无向图中,度中心性等于节点的度;在有向图中,分为入度中心性和出度中心性。
-
连通图(Connected Graph):从图中的任意一个节点出发,都可以通过边沿不同的路径到达图中的任意其他节点的无向图
- 巨型连通分量(Giant Connected Component,巨片):由大量节点相互连接形成的最大连通子图。它是网络中规模最大的强连通分量。
- 集团(clique):完全连通的子图。
- k核(k-core):是G的一个最大连接子图,其中所有节点的度数至少为k
- 我们可以通过反复删除所有度数小于k的节点来找到k-cores
- 如果一个节点属于k-core但不属于(k+1)-core,那么这个节点的核心度(coreness)为k
-
幂律网络(Scale-free Network):具有幂律分布度数的网络拓扑结构,该网络中,节点的度数(连接数)遵循幂律分布。
- 幂律分布(Power-law distribution):一种特殊的概率分布,幂律分布的概率密度函数与随机变量的取值 x 成反比,通常用公式 f ( x ) ∝ x − α f(x) ∝ x^{-α} f(x)∝x−α来表示,其中 α 是分布的幂律指数(power-law exponent),通常取大于1的正值。
- BA网络(Barabasi-Albert):一种典型的幂律分布网络,该网络倾向于依附于高度节点,从而形成枢纽,也被称为“富者愈富”。
-
小世界网络(Small World Network):一种特殊类型的网络模型,其特点是具有高度的聚集性和较短的平均最短路径长度,这意味着网络中的节点之间通过少数几步就可以相互到达,同时节点之间形成了紧密的聚集群。
-
模块度(Modularity):网络分析中用于衡量网络社区结构质量的重要指标。模块度测量了网络社区结构与随机网络相比的紧密程度。它通过比较网络内实际边的数量与随机网络期望边的数量之间的差异来衡量社区结构的优劣。
-
分辨率:网络或图的粒度或细节程度
-
基于模块化的算法受到分辨率限制问题的影响。
基于模块化的算法是一类用于社区发现的方法,旨在将网络划分为具有高内聚性和低耦合性的社区(也称为模块)。这些算法通常通过最大化网络内部的连接强度(模块度)来寻找最佳的社区划分。
然而,当网络或图的分辨率较低时,也就是说,网络中的节点和边的粒度较大,算法可能会受到限制。这是因为低分辨率下,较小的社区可能无法被准确地识别或者在划分过程中被合并到其他更大的社区中。
换言之,如果网络的分辨率过低,算法可能会将本应是独立的小社区合并成一个更大的社区,导致社区结构的损失和模糊性增加。这会导致算法对具有更细粒度社区结构的网络或图的理解能力下降。
因此,在使用基于模块化的算法进行社区发现时,需要注意网络或图的分辨率,尽量选择适合给定数据结构的算法和参数设置。同时,对于较高分辨率的网络,这些算法往往表现更好,能够更准确地识别出细粒度的社区结构。
-
-
聚类系数(Clustering Coefficient):用于衡量图中节点聚集程度的指标,用于分析节点在网络中形成群组或社区的趋势。
-
图传递性(Transitivity):也称为传递性或三角闭包,指在一个网络中形成三角形的可能性,用于衡量图中节点之间三角关系的存在程度。图传递性的计算涉及到网络中的闭合三元组(三角形)。闭合三元组是指在一个网络中,如果节点 A 与节点 B 相连,节点 B 与节点 C 相连,且节点 A 与节点 C 相连,那么就构成了一个闭合三元组。
-
内部外部度:定义节点i的内部度为其在子图C内的度,节点i的外部度为其在子图C外部的度,内部度与外部度总和为节点的**总度 **。
- 强弱社区:内部度>外部度——强社区,内部度<外部度——弱社区
2.2 随机图模型
-
ER 模型(Erdős-Rényi 模型):通过在节点之间以一定的概率随机连接边来生成图。ER模型生成的随机图的平均度、度分布等特征可以用概率方法进行推导。
生成图的过程如下:
-
定义节点数和边数:首先确定图中节点的数量 n 和边的数量 m。
-
生成边:随机选择 m 条边,每条边以一定的概率连接两个节点。每对节点之间产生一条边的概率是独立的,且是相同的。
-
-
Chung-Lu 模型:用于生成具有特定平均度分布的无标度网络。无标度网络的特点是节点度分布遵循幂律分布,这与许多真实世界的复杂网络中观察到的节点度分布类似。
给定一个目标平均度序列{d1, d2, …, dn},其中 di 表示第 i 个节点的度数。生成图的过程如下:
-
创建节点:首先创建 n 个节点,其中 n 是图中节点的数量。
-
边的概率分配:为每对节点 i 和 j,计算连接概率 p_ij,该连接概率与节点的目标平均度和节点的度有关。通常使用公式 p i j = k i ∗ k j / ( 2 ∗ m ) p_ij = k_i * k_j / (2 * m) pij=ki∗kj/(2∗m),其中 k i k_i ki 和 k j k_j kj 分别是节点 i 和 j 的目标平均度,m 是图中边的数量的一半。
-
随机连接:对于每对节点 i 和 j,以概率 p i j p_{ij} pij 连接节点 i 和 j,这里的连接是一个随机过程。
-
-
配置模型(Degree Sequence):Chung Lu模型是边生成的概率模型,生成度序列的期望和原来的相等。对于配置模型,我们为节点指定一个精确的度序列,所有具有n个节点和这个精确度序列的图,被认为是以相同的概率出现的。
生成图的过程通常通过以下步骤实现:
-
创建节点:首先根据节点度序列确定图中节点的数量和每个节点的度,对于每个节点i,我们指定di个残边(stubs,半条边)
-
随机连接:残边随机互联,直到满足每个节点的度为止。由于随机连接可能会产生自环或重复边,连接过程中不考虑重复连接和自环。
-
三种模型的区别:
- ER 模型(Erdős-Rényi 模型):
- 特点:ER 模型是最早被提出的随机图模型之一,简单且易于理解。它基于连接概率来生成边,可以用于生成具有随机连接的图。ER 模型可以生成稀疏图,适用于一些连接较稀疏的情况。
- 优点:模型简单,易于实现和理解。适用于生成边稀疏的随机图。
- 缺点:ER 模型生成的图往往具有较小的最大连通子图,不适用于生成无标度网络,无法产生复杂网络的幂律节点度分布。
- Chung-Lu 模型:
- 特点:Chung-Lu 模型是用于生成无标度网络的随机图模型,可以生成节点度分布遵循幂律分布的图。它通过连接概率和目标平均度来随机连接节点。
- 优点:能够生成无标度网络,适用于研究幂律节点度分布的复杂网络。
- 缺点:随机连接的过程可能导致图中存在重复连接和自环的问题。
- Degree Sequence 模型:
- 特点:Degree Sequence 模型是用于生成具有给定节点度序列的随机图的模型。给定一个节点度序列,它通过随机连接节点来生成一个满足该度序列的图。
- 优点:能够生成满足指定节点度序列的随机图,适用于研究复杂网络的节点度分布特性。
- 缺点:并非所有给定的节点度序列都能生成合法的图,有些节点度序列可能无法实现。
三、 社区基准模型(benchmark)
社区基准模型是用于评估和比较社区发现算法性能的标准或参照。它为我们提供了一个衡量算法在社区划分上的准确性和效果的基准,帮助我们了解算法的优势和局限性。
为什么要有社区基准模型?
- 测试和比较算法
- 控制噪音水平、社区规模等
- 真实图数据很少有真实值(ground-truth)
- 有ground-truth,但可能与基本假设不一致
常见的基准模型包括:
-
种植-分区模型(Planted partitions model)
-
固定节点数 n 和社区数 k,对于社区,我们①平均分配节点到每个社区,或②或将每个节点独立分配给社区 i i i,概率为 p i p_i pi, ∑ p i = 1 \sum p_i=1 ∑pi=1。
-
对于分别在社区 i i i和社区 j j j中的节点对 ( i , j ) (i,j) (i,j),我们按照概率 p i j p_{ij} pij添加边。可以指定 p ( i , i ) = p i n p(i,i)=p_{in} p(i,i)=pin、 p ( i , j ) = p o u t p(i,j)=p_{out} p(i,j)=pout, i ≠ j i≠j i=j。
-
-
LFR模型(Lancichinetti-Fortunato-Radicchi model)
-
固定节点数 n,设定三个主要参数:(µ 称为噪声水平或混合参数)
-
γ 1 \gamma _1 γ1:节点度服从 p n ∝ n − γ 1 p_n\propto n^{-\gamma_1} pn∝n−γ1的幂律分布,推荐值为 2 ≤ γ 1 ≤ 3 2\le \gamma_1 \le 3 2≤γ1≤3。
-
γ 2 \gamma _2 γ2:社区规模服从 p k ∝ k − γ 2 p_k\propto k^{-\gamma_2} pk∝k−γ2的幂律分布,推荐值为 1 ≤ γ 2 ≤ 2 1\le \gamma_2 \le 2 1≤γ2≤2。
-
0 ≤ μ ≤ 1 0 \le \mu \le 1 0≤μ≤1:对于每个节点,这是连接到其他社区的边的预期比例,而 1 − μ 1-\mu 1−μ 是其自己社区内的比例。
-
-
把每个节点都分配到社区
- 存在允许重叠社区的变体
- 可以提供额外参数来限制度分布(平均和最大度)和社区大小(最小和最大)
- 从配置模型开始,重新连接节点以逼近目标分布
- 初始阶段可以使用BA等其他模型
LFR 的可扩展性有些受限,一些可扩展的基准模型有:
- RMAT ,生成具有幂律度数分布的图;在 Graph-500 中使用
- BTER (Block Two-level ER),生成服从幂律度分布以及社区结构的图
- SBM(Stochastic Block Model),它也生成具有社区结构的图。——它最简单的定义是种植分区模型的变体。
-
四、图社区分割
图社区定义:两个基本假设:[Barabasi,Network Science]
- 一个网络的社区结构在其布局图中是唯一的。
- 一个社区是网络中的一个局部密集连接子图。
3.1 两大聚类方法
图聚类/分割(clustering/partitioning):将顶点分割成相连的子图
模糊聚类(Fuzzy clustering):节点不属于/属于一个或多个群组
参考:https://blog.csdn.net/SL_World/article/details/104423536
- K-means(K均值)聚类:一种常见的无监督学习算法,用于将一组未标记的数据样本划分为不同的簇(cluster)。聚类的目标是使同一簇内的样本相似度最大化,而不同簇之间的样本相似度最小化。
- 谱聚类(Spectral Clustering):利用数据的相似矩阵的谱(特征值)进行降
- 它将数据看成空间中的点,点对之间有边相连,距离越远的点对其边权值越小,距离越近的点对其边权值越大。
- 它将聚类问题转化为切图问题,使得切图后的总代价最小。即子图内点对之间边权值较大,子图间边权值较小。得到切图后子图的个数即为聚类的个数。
K-means聚类和谱聚类的比较:
-
原理:
-
K-means聚类通过迭代寻找一组聚类中心点,将数据划分为K个簇,使得每个样本点到所属簇的中心点的距离最小。它基于欧氏距离度量样本之间的相似性。
-
谱聚类是一种基于图论的聚类方法。它将样本数据看作是图上的节点,通过计算节点之间的相似性构建一个相似度矩阵,然后通过对相似度矩阵进行特征分解,选取前K个特征向量对应的特征值,将样本投影到这K维空间中进行聚类。
-
-
聚类结果:
-
K-means聚类将样本分成了K个互不重叠的簇,并且每个样本只属于一个簇。
-
谱聚类没有硬性的簇划分,它将样本映射到一个低维的空间中,在这个空间里对样本进行聚类。某些情况下,谱聚类可以实现松散的聚类(soft clustering),即样本点可以属于多个簇。
-
-
对数据分布的要求:
-
K-means聚类对数据分布的要求较高,它假设簇是凸的、等方差的,并且每个簇的样本数量相近。
-
谱聚类对数据分布的要求相对较低,它能够处理非凸的簇、椭圆形簇、大小不同的簇等情况。
-
-
时间复杂度:
-
K-means聚类的时间复杂度较低,在大规模数据集上有较好的可扩展性。
-
谱聚类的时间复杂度较高,主要耗费在特征分解的计算上,因此在大规模数据集上效率较低。
-
选择聚类算法应根据具体的问题和数据特点来决定。如果数据符合K-means的假设条件,且需要得到硬性划分的簇,则K-means是一个很好的选择。如果数据分布复杂、非凸或需要软性聚类,谱聚类可能更适合。
3.2 图分区算法
-
GN算法(Girvan-Newman算法):一种用于检测社区结构的图论算法,其主要目标是发现网络中的重要的连接(边介数),并将网络划分为具有高内聚性和低耦合性的社区。
复杂度: O ( m 2 n ) O(m^2n) O(m2n) 【m:边的总数,n:点的总数】
步骤:
- 计算网络中所有边的介数(betweenness),介数表示该边在网络中作为最短路径的桥梁所承担的重要程度。
- 找到介数最高的边,将其从网络中移除,重新计算剩余边的介数。
- 重复步骤2和步骤3,直到所有边都被移除。
在每次移除边的过程中,GN算法会逐渐将网络划分为多个不相交的社区,因为那些连接不同社区的边通常具有较高的介数。这样,每次移除边后,可以得到一个社区划分结果。
-
CNM算法(Clauset、Newman、Moore):也称为快速贪心算法(Fast Greedy)
复杂度: O ( n 2 ) O(n^2) O(n2) ,稀疏图更少
- 开始,每个顶点作为一个单独集群
- 选择最能提高模块度的一对集群(如果有的话),然后合并它们,当没有办法提高模块度的时候停止
-
Louvain算法:也称为多级算法(Multilevel algorithm)或快速折叠算法(fast unfolding)
复杂度: O ( n l o g n ) O(nlogn) O(nlogn)
- 开始,每个顶点作为一个单独集群
- 循环遍历每个顶点,将其移动到模块度增加最多(如果有的话)的邻居社区
- 重复以上步骤,直到没有任何提升空间为止
- 将每个社区折叠成一个节点并重新运行上述步骤——另一个层级
- 当图折叠到单个节点(或者当最后一级没有移动)时停止
-
Infomap算法:Infomap基于信息论:使用概率随机游走和压缩算法来实现
复杂度: O ( n l o g n ) O(nlogn) O(nlogn)
- 给定 G 和一个初始化分区方案,尽可能高效地编码随机游走
- 利用随机游走往往在同一社区中停留更长时间的性质
- 优化图方程:社区间游走的平均位数+社区内游走的平均位数
-
标签传播(label propagation algorithm):
复杂度: O ( m ) O(m) O(m),此算法速度很快,但并不总能收敛到一个解。
- 开始,每个顶点作为一个单独集群,有自己的簇标签
- 循环遍历每个顶点,每个顶点都采用其邻居中最流行的标签(使用随机来打破死锁)
- 当每个顶点具有与其邻域中最频繁出现的标签相同的簇标签时,算法停止
-
其他算法:
-
WalkTrap:一种基于短距离随机游走的分层算法。它的复杂度是 O ( n 2 l o g n ) O(n^2logn) O(n2logn)。
-
Leading eigenvector(前导特征向量):基于模块化矩阵的谱分解。对于每个双分区,其复杂度为 O ( n ( n + m ) ) O(n(n+m)) O(n(n+m))。
-
Leiden算法:Louvain算法的改进
-
ECG算法:Louvain算法的改进,复杂度较高
-
五、图分区的比较(指标)
5.1 无监督算法度量指标
-
图聚类算法选择
- 集群的质量
- 稳定性
- 效率(时间空间)
- 其他:不需要指定聚类的数量(k)、集群的层次结构等
图聚类是无监督学习,没有明确的目标函数,不同算法使用不同的目标函数。
-
图分割算法度量
- 质量的衡量标准: s i m ( T , A ) sim(T, A) sim(T,A),对给定的参考划分(ground truth partition)T计算图A的划分的相似度函数
- 稳定性的衡量标准: s i m ( A , A ′ ) sim(A, A') sim(A,A′),同一算法的运行多次比较
- 比较算法之间的结果: s i m ( A , B ) sim(A, B) sim(A,B)
5.2 图相似度度量指标
-
图无关度量——只看点的信息,不考虑边的影响
- 基于成对计数:考虑对图节点的两个划分,度量指标基于A和B里面各个集群中的成对元素
- Jaccard 指数
- 调整兰德指数(ARI),取值范围是[-1, 1],-1表示聚类结果完全不一致,0表示聚类结果与随机结果相同,1表示聚类结果完全一致
- 基于信息论:基于 A 和 B 之间的互信息
- 归一化互信息 (NMI),取值范围是[0, 1],0表示两个聚类结果没有任何相似性,1表示两个聚类结果完全一致。NMI并不受聚类结果的绝对数目影响,而是关注聚类结果之间的相对关系和一致性。
- 基于卡方分布
- Cramer 的 V指标 和 Tschurprow 的 T指标
- 基于成对计数:考虑对图节点的两个划分,度量指标基于A和B里面各个集群中的成对元素
-
图感知度量——只看边的信息,不考虑点的信息
- AGRI
设网络G 的真实社区情况为 A, 并设 B1 和 B2 分别是 A 的粗化和细化,在某些情况下,在图无关度量下A更接近B2(细化);在图感知度量下A更接近B1(粗化)
- 当使用图无关的度量时,集群的数量更多
- 图感知度量生成的集群的数量更少
这两种指标都获得高值是我们做图聚类所希望的,但图感知和图无关度量在解决问题方面具有相反的行为(trade-off)。ECG算法可以使两者都达到一个较好的效果。
总结:
-
使用调整后的基于集合的相似性度量,可以减少度量对分区粒度的偏差,消除随机性
-
图无关(ARI,AMI)和图感知(AGRI)度量是互补的,在评估算法的优越性时应同时使用它们
5.3 其他指标
-
拓扑特征
- 缩放密度(scaled density)
- 内部传递性(internal transitivity)
-
社区强度指数CSI(ECG论文中提出的一个指标):边界(0 和 1)附近的 ECG 权重的双峰分布(bi-modal distribution)表明了强大的社区结构,由此提出了一个基于点质量 Wasserstein 距离(推土机距离(Earth Mover’s distance))的简单社区强度指标 (CSI)
-
异常检测CADA(community-aware anomaly detection社团感知异常检测)
对于每个节点 v ∈ V v\in V v∈V,令 N ( v ) N(v) N(v):v的邻居数; N c ( v ) N_c(v) Nc(v):v属于出现次数最多社区的邻居数(通过图聚类)。
C A D A x ( v ) = N ( v ) N c ( v ) , x ∈ { I M , M L } . ( I n f o M a p 算法 , L o u v a i n 算法 ) CADA_x(v)=\frac {N(v)}{N_c(v)}, x\in\{IM,ML\}.(InfoMap算法,Louvain算法) CADAx(v)=Nc(v)N(v),x∈{ IM,ML}.(InfoMap算法,Louvain算法)
六、图嵌入
图嵌入Graph Embedding,也叫图表示学习(Network Representation Learning),其目标是将网络(节点)映射到向量(特征)空间,将相似节点映射到向量空间中的附近位置。
何谓”相似“?
- 图拓扑上较近
- 图中相似的角色(例如:度相似)
- 相似的节点属性
图嵌入的大部分算法基于大部分算法基于随机游走和用于词嵌入的SkipGram方法。
NLP中的SkipGram:使用滑动窗口对每个词上下文的相关词进行组合,构建“词向量”,对应到图中:
- 单词——节点
- 词的上下文——节点与其周围的节点构成的链路
如何找出这样一条链路?——随机游走——node2vec
node2vec:定义了有偏随机游走(biased random walks)【有偏:从一个点跳到下一个不同点的概率是不一样的】混合了广度和深度优先搜索。关键参数:
- p:控制重新访问同一节点的概率(留在附近)
- q:控制探索更远的概率
以下图为例,假设当前节点 v v v的上一时刻的节点为 t t t(即节点 v v v是从节点 t t t转移过来的),定义从节点 v v v游走到节点 x 1 , x 2 , x 3 x_1,x_2,x_3 x1,x2,x3之间的概率为 α \alpha α。其中,节点 v v v游走到与上一时刻节点 t t t直接相连的节点 x 1 x_1 x1的概率为1,游走到其他节点( x 2 , x 3 x_2,x_3 x2,x3)的概率为 1 / q 1/q 1/q,回到上一时刻节点 t t t的概率为 1 / p 1/p 1/p, p , q p,q p,q为可调整参数。
节点 v v v下一时刻游走到其余节点的概率的数学表述为:
α p q ( t , x ) = { 1 p if d t x = 0 1 if d t x = 1 1 q if d t x = 2 \alpha_{p q}(t, x)=\left\{\begin{array}{ll} \frac{1}{p} & \text { if } d_{t x}=0 \\ 1 & \text { if } d_{t x}=1 \\ \frac{1}{q} & \text { if } d_{t x}=2 \end{array}\right. αpq(t,x)=⎩
⎨
⎧p11q1 if dtx=0 if dtx=1 if dtx=2
参数允许在以下之间进行权衡:
- 低 p:在本地探索;这将侧重于图形拓扑结构中的社区结构(同质性);
- 低q:探索更远;这允许捕获节点之间的一些结构相似性(例如:集线器hubs,网桥bridges);
node2vec的参数P和q取值不同,得到的嵌入特征向量在二维空间上的可视化效果也不同。如下图所示,p比较小、q比较大时,算法更加关注局部特征,嵌入特征在局部上是比较相近的(上图);p比较大、q比较小时,算法倾向于捕获在结构上相似的一些点(下图)。
其他图嵌入算法:
不同算法之间的结果可能会有很大差异,并且随着参数的选择也会有很大不同,如何比较算法的嵌入效果?
-
核心:使用嵌入后的向量构建同分布随机图,比较随机图和原图的JS散度,若很小,说明相近,进而说明嵌入效果良好。
首先,将原始图中的节点通过嵌入算法转换为向量表示,这些向量表示可以捕捉到节点之间的关系和特征。然后,使用这些向量来构建同分布随机图(通常是通过随机过程生成),即生成一张与原图在节点分布上相似的新图。
接下来,通过计算随机图和原图的JS散度来衡量它们之间的差异。JS散度(Jensen-Shannon divergence)是一种度量两个概率分布之间差异的指标。当JS散度越小时,表示两个概率分布越接近,即随机图和原图在节点分布上越相似。
因此,如果通过嵌入得到的向量能够很好地保留原始图中节点之间的关系和特征,那么使用这些向量构建的同分布随机图与原图之间的JS散度会很小,说明嵌入效果良好。
给定具有度分布 w = ( w 1 , w 2 , . . . , w n ) w=(w_1,w_2,...,w_n) w=(w1,w2,...,wn)的 n 个顶点上图 G = ( V , E ) G = (V , E) G=(V,E) 及其顶点到 k 维空间的嵌入, ε : V → R k \varepsilon :V\to \mathbb{R}^k ε:V→Rk,我们的目标是为这个嵌入分配一个**“分歧分数”(divergence score)**,该分数用于比较不同嵌入结果在多个维度上的差异,分数越低,嵌入越好。这将使我们能够在不同的维度上比较多个嵌入的结果。
流程总述:
非随机图(原图)表现出类似社区的结构,所以我们一般:
- 将节点分组为集群(使用聚类算法/框架进行分组)
- 测量簇之间和簇内的边缘密度
- 通过计算散度分数将其与嵌入(矢量)空间中空间模型的预测密度进行比较
- 选择得分最高的嵌入
聚类算法/框架主要关注两个角度:
- 图拓扑视图:一个好的、稳定的图聚类算法(ECG、Louvain或InfoMap)
- 空间视图:引入基于度分布 w 和嵌入 ε 的几何 Chung-Lu (GCL) 模型
计算嵌入分歧分数(embedding divergence score)的算法:
给定 G = ( V , E ) G = (V, E) G=(V,E),它在 V V V 上的度分布 w w w,以及它的顶点的嵌入 ε : V → R k \varepsilon :V\to \mathbb{R}^k ε:V→Rk,执行接下来的五个步骤。通过计算分歧分数的算法获得嵌入的分歧分数 Δ E ( G ) \Delta E(G) ΔE(G),可以应用该算法来比较几个嵌入算法的分歧分数指标,选出最好的(最小的)那个。
- 第一步:在 G G G上运行一些稳定的图聚类算法以获得顶点集 V V V的分区 C C C,一共产生 l l l个社区 C 1 , C 2 , . . . , C l C_1,C_2,...,C_l C1,C2,...,Cl。
- 第二步:令 c i c_i ci表示两个端点都在 C i C_i Ci中的边的比例, c i , j c_{i,j} ci,j表示一个端点在 C i C_i Ci中且另一个端点在 C j C_j Cj中的边的比例,定义 c ˉ = ( c 1 , 2 , … , c 1 , ℓ , c 2 , 3 , … , c 2 , ℓ , … , c ℓ − 1 , ℓ ) , c ^ = ( c 1 , … , c ℓ ) \mathbf{\mathbf { \bar{c} }}=\left(c_{1,2}, \ldots, c_{1, \ell}, c_{2,3}, \ldots, c_{2, \ell}, \ldots, c_{\ell-1, \ell}\right), \hat{\mathbf{c}}=\left(c_{1}, \ldots, c_{\ell}\right) cˉ=(c1,2,…,c1,ℓ,c2,3,…,c2,ℓ,…,cℓ−1,ℓ),c^=(c1,…,cℓ),这些向量从图 G G G的角度表征分区 C C C,嵌入 ε \varepsilon ε不影响 c ˉ \bar{c} cˉ和 c ^ \hat{c} c^。
- 接下来需要在 α 的一系列值上重复步骤 3-4
- 第三步:给定 α ∈ R + \alpha \in \mathbb{R}_+ α∈R+,使用 G ( W , E , α ) \mathcal{G}(\mathbf{W},\mathcal{E},\alpha) G(W,E,α)的GCL模型(也可以使用其他稳定的模型)计算① b i b_i bi: C i C_i Ci内边的比例期望,② b i , j b_{i,j} bi,j: C i C_i Ci中一个端点和 C j C_j Cj中另一个端点的边的比例期望,计算公式为 b ‾ E ( α ) = ( b 1 , 2 , … , b 1 , ℓ , b 2 , 3 , … , b 2 , ℓ , … , b ℓ − 1 , ℓ ) , b ^ E ( α ) = ( b 1 , … , b ℓ ) \overline{\mathbf{b}}_{\mathcal{E}}(\alpha)=(b_{1,2},\ldots,b_{1,\ell},b_{2,3},\ldots,b_{2,\ell},\ldots,b_{\ell-1,\ell}),\hat{\mathbf{b}}_{\mathcal{E}}(\alpha)=(b_1,\ldots,b_\ell) bE(α)=(b1,2,…,b1,ℓ,b2,3,…,b2,ℓ,…,bℓ−1,ℓ),b^E(α)=(b1,…,bℓ),这些向量从嵌入 ε \varepsilon ε的角度表征分区 C C C。
- 第四步:使用 Jensen-Shannon 散度 (JSD)计算 c ˉ \bar{c} cˉ和 b ‾ E ( α ) \overline{\mathbf{b}}_{\mathcal{E}}(\alpha) bE(α)之间的距离,以及 c ^ \hat{\mathbf{c}} c^和 b ^ E ( α ) \hat{\mathbf{b}}_{\mathcal{E}}(\alpha) b^E(α)之间的距离,公式为 Δ α = 1 2 ⋅ ( J S D ( c ‾ , b ‾ ( α ) ) + J S D ( c ^ , b ^ ( α ) ) ) \Delta_{\alpha}=\frac{1}{2}\cdot(JSD(\overline{\mathbf{c}},\overline{\mathbf{b}}(\alpha))+JSD(\hat{\mathbf{c}},\hat{\mathbf{b}}(\alpha))) Δα=21⋅(JSD(c,b(α))+JSD(c^,b^(α))),这是给定 α 的(分歧)分数。
- 第五步:从重复的步骤 3-4,我们获得了一系列 Δ α \Delta \alpha Δα,选择 α ^ = a r g m i n α Δ α \hat \alpha = argmin _{\alpha}\Delta _{\alpha} α^=argminαΔα,将分期函数定义为 Δ ε ( G ) = Δ α ^ \Delta _{\varepsilon}(G)=\Delta _{\hat \alpha} Δε(G)=Δα^。
为了比较同一个图G的多个嵌入,我们重复上面的步骤3-5并比较分歧分数(分歧分数越低越好);步骤1-2值执行一次,因此我们对每个嵌入使用相同的图划分算法到 l l l个社区。