13-传统的图生成模型

图机器学习(传统的图生成模型)

1. 前言

之前都是图的模型都是已知的:

请添加图片描述

这节开始研究如何用模型生成这样的图:

请添加图片描述

图生成模型问题的研究动机,以前都是假设图是已知的;但我们也会想通过graph generative model人工生成与真实图类似的synthetic graph,这可以让我们:

  1. 了解图的形成过程。
  2. 预测图的演化。
  3. 生成新的图实例。
  4. 异常检测:检测一个图是否异常。

2. Properties of Real-world Graphs

1. 常见衡量真实图数据的属性有:
  1. 度分布‎
  2. ‎聚类系数‎
  3. ‎连通分量‎
  4. ‎路径长度‎
2. 度分布(Degree distribution)
  1. 随机选择的节点拥有度为k的概率为: p ( k ) p(k) p(k)

  2. N k N_k Nk个节点拥有度k则有 P ( k ) = N k N P(k)=\frac{N_k}{N} P(k)=NNk

请添加图片描述

3. Clustering coefficient

聚类系数,用来衡量节点 i i i的邻居的相互连接程度,记节点 i i i的度为 k i k_i ki,则聚集系数为: C i = 2 e i k i ( K i − 1 ) , C i ∈ [ 0 , 1 ] C_i=\frac{2e_i}{k_i(K_i-1)},C_i\in[0,1] Ci=ki(Ki1)2ei,Ci[0,1]

请添加图片描述

e i e_i ei是邻居之间的边,不含节点 i i i与邻居的边。整个图的聚集系数是求所有节点的聚集系数后进行平均: C = 1 N ∑ i N C i C=\frac{1}{N}\sum_i^NC_i C=N1iNCi

4. Connectivity

就是最大连通分量,找出下图的最大连通分量:

请添加图片描述

步骤:

  1. 从随机一个节点开始做BFS
  2. 标记访问过的节点
  3. 如果所有节点均能访问,则该图是连通图,否则重新找一个未访问的节点从步骤1开始,直到所有图中节点都被访问
5. Path Length

图的直径:图中任意节点对的最大的最短路径长度
对于连通无向图或强连通有向图而言,图的平均路径长度为: h ‾ = 1 2 E m a x ∑ i , j ≠ i h i j \overline h=\frac{1}{2E_{max}}\sum_{i,j\ne i}h_{ij} h=2Emax1i,j=ihij

h i j h_{ij} hij是两个节点之间的距离;

E m a x = n ( n − 1 ) 2 E_{max}=\frac{n(n-1)}{2} Emax=2n(n1)是图中可包含的最大边数量

通常在计算过程中,我们会忽略掉路径长度为无穷的值,从而计算出正确的平均路径长度。

6. 举例:MSN Graph

MSN Messenger: 只包含 1 ‎活动月份‎,基本信息如下:
‎2.45亿用户 登录‎、1.8亿用户参与对话‎、‎ 超过300亿次对话‎、超过2550亿次交换消息‎。

原始度分布,平均度为14.4:

请添加图片描述

横纵坐标log后的度分布

请添加图片描述

聚集系数:0.114

请添加图片描述

连通分量,最大那个基本涵盖99%的用户。

请添加图片描述

路径长度,平均路径长度为6.6,有90%的节点可以在8跳内相互访问。

请添加图片描述

以上信息没有对比也无法知道这些指标是否偏高或者正常,下面引入三个生成随机图的方法,将生成图与MSN网络进行对比


3. 生成随机图一:Erdös-Renyi (ER【1】)

ER方法主要有两种形式:

G n p G_{np} Gnp:表示一个有n个节点的无向图,其中每个节点对(u,v)是否有边,是按i.i.d(独立同分布)的概率p进行设置的。

G n m G_{nm} Gnm:表示一个有n个节点的无向图,其中随机选择m个节点对形成边。

我们主要用第一种形式,它有两个变量来控制生成图的形式:

请添加图片描述

【1】在图论的数学理论部分中,ER模型(Erdős–Rényi model)可指代两个密切相关的随机图生成模型中的任意一个。这两个模型的名称来自于数学家Paul Erdős(保尔•厄多斯)和Alfréd Rényi(阿尔弗烈德•瑞利),他们在1959年首次提出了其中一个模型,而另一个模型则是Edgar Gilbert(埃德加•吉尔伯特)同时并且独立于Erdős和Rényi提出的。在Erdős和Rényi的模型中,节点集一定、连边数也一定的所有图是等可能的;在Gilbert的模型中,每个连边存在与否有着固定的概率,与其他连边无关。在概率方法中,这两种模型可用来证明满足各种性质的图的存在,也可为几乎所有图的性质提供严格的定义。

1. Degree distribution of G n p G_{np} Gnp

其实度分布是一个二项分布:

请添加图片描述

上面的n−1表示是除了当前节点外,从n−1个节点中选出k个节点,让这k个节点与当前节点以概率p的方式相连。
该二项分布的均值和方差为:
k ‾ = p ( n − 1 ) σ = p ( 1 − p ) ( n − 1 ) \overline k=p(n-1)\\ \sigma=p(1-p)(n-1) k=p(n1)σ=p(1p)(n1)
看图基本就是高斯分布:

请添加图片描述

2. Clustering Coefficient of G n p G_{np} Gnp

由于图中的边是按i.i.d.(独立同分布)的概率p进行设置的。因此,对于节点i度为 k i k_i ki而言,其邻居之间出现边的期望可以表示为:

E [ e i ] = p k i ( K i − 1 ) 2 E[e_i]=p\frac{k_i(K_i-1)}{2} E[ei]=p2ki(Ki1)

从而根据原始的聚集系数公式得到期望聚集系数为:
E [ e i ] = p ⋅ k i ( K i − 1 ) k i ( K i − 1 ) = p = k ‾ n − 1 ≈ k ‾ n E[e_i]=\frac{p\cdot k_i(K_i-1)}{k_i(K_i-1)}=p=\frac{\overline k}{n-1}\approx \frac{\overline k}{n} E[ei]=ki(Ki1)pki(Ki1)=p=n1knk
上式中最后的等号有均值公式转化得来。

随机图的聚集系数比较小,如果用固定的度k或者 p = k ‾ n − 1 p=\frac{\overline k}{n-1} p=n1k来生成图,随着图节点数n越大,聚集系数越小。

3. G n p G_{np} Gnp的连通分量

保证图中节点数量不变,将生成边的概率从0变到1,图结构则有下面的变化:

请添加图片描述

当p = 0 ,表示不会有边生成,空图
当p = 1,表示每个节点对100%生成边,完全图

k ‾ = p ( n − 1 ) \overline k=p(n-1) k=p(n1),因此当 p = 1 n − 1 p=\frac{1}{n-1} p=n11时, k ‾ = 1 \overline k=1 k=1,意味每个节点都会有一条边相连,意味着开始出现较大连通分量,如果边小于节点数量,也就是 k ‾ < 1 \overline k<1 k<1意味着有节点是没有边相连的。基于这个理论,我们可以得到giant component:出现的临界点就是节点平均度为1,写成数学表达就是:
p = k ‾ n − 1 o r k ‾ = 2 E n p=\frac{\overline k}{n-1}or\quad \overline k=\frac{2E}{n} p=n1kork=n2E
当节点平均度小于1时:k = 1 − ε ,所有连通分量大小上限是:Ω ( log ⁡ n )

当节点平均度大于1时:k = 1 + ε,有一个连通分量大小上限是:Ω ( n ) ,其他连通分量大小上限是:Ω ( log ⁡ n )

此时每个节点的期望边数至少为1,在可视化后就是:

请添加图片描述

这个图也对应了上一张图的理论推断,可以看到,平均度大于1时,最大连通量中的节点急剧增加,当平均度为2的时候,80%的节点都在最大连通分量中了。

4. Expansion(扩展系数)

这里补充一个图G(V,E)的扩展系数α:

请添加图片描述

中间黑线就是# edges leaving S ,扩展系数用来衡量一个图的鲁棒性,要断开L个节点,需要去掉$≥ α ⋅ l $条边。

请添加图片描述

上面的几个图例中,真实图一般介于第一和第二个之间。社区内部鲁棒性强,社区间的鲁棒性差。
这个新的定义和下面要将的路径长度有关。
定理:对于一个包含n个节点的图,若其扩展系数为α则所有节点对的路径长度为: O ( log ⁡ n α ) O(\frac{\log n}{\alpha}) O(αlogn)

也就是说,当图规模变大,那么log ⁡ n会变大,但同时α 也会变大,因此路径长度相对而言不一定会变大。
对于一个随机图 G n p G_{np} Gnp,存在以下关系: log ⁡ n > n p > c ( 常数 ) \log n>np>c(常数) logn>np>c(常数)

其直径为: d i a m ( G n p = O ( log ⁡ n log ⁡ ( n p ) ) ) diam(G_{np}=O(\frac{\log n}{\log (np)})) diam(Gnp=O(log(np)logn))

从上面的式子可以知道,随机图 G n p G_{np} Gnp 的直径是节点数量的对数,因此随机图 G n p G_{np} Gnp 有比较好的扩展性,可以在对数级步数内BFS所有节点

请添加图片描述

5. Shortest Path of G n p G_{np} Gnp

有了上面扩展系数的基础,我们可以知道, G n p G_{np} Gnp随机图可以在拥有很大规模的情况下,仍然保持很短的最短路径(图直径很小)。
当我们将节点的平均度设置不变: k ‾ = n p = c ( 常数 ) \overline k=np=c(常数) k=np=c(常数)那么 G n p G_{np} Gnp的直接就变成: d i a m ( G n p = O ( ) ) diam(G_{np}=O()) diam(Gnp=O())

实验可以证明:

请添加图片描述

6. MSN VS G n p G_{np} Gnp

请添加图片描述


4. 生成随机图二:The Small-World Model

通过上面ER的方法我们看到, G n p G_{np} Gnp随机图两种平均路径长度较长( o ( log ⁡ n ) ≈ 8.2 o(\log n)\approx8.2 o(logn)8.2),聚集系数低。我们希望能找到一种高聚集系数且平均路径较短的随机图,使其更接近真实图:

请添加图片描述

因为在相同平均节点度的情况下,真实图比起随机图而言,平均路径较短(其实差不多),聚集系数更大

请添加图片描述

一般来说,平均路径和聚集系数两个不可同时得到,因此要想在二者之间做‎权衡利弊‎,就是Small-world graph的思想:

请添加图片描述

1. 创建步骤
  1. Start with a low-dimensional regular lattice(这里用环形代替lattice)
    此时的图拥有高聚集系数

请添加图片描述

  1. Rewire: Introduce randomness (“shortcuts”)
    重新连接节点对,对每个节点对,以概率p将其终点重新接到另外的随机节点上。

请添加图片描述

2.结果及分析

请添加图片描述

可以看到随着随机rewire的概率p pp趋近1,中间状态就是我们的目标网络结构。把聚集系数画出来:

请添加图片描述

可以看到当随机rewire概率趋向于1的时候,聚集系数才会变很小,但是很小随机rewire概率,就可以获得很多shortcut,使得平均路径变短。(注意看上图中的横坐标不是等值的。)

小结:只需要很少的rewire操作,就可以让随机图获得较高的聚集系数,使其比较接近真实图,但是其度分布却不正确(这里应该补个图才有说服力)。


5. 生成随机图三:Kronecker Graph Model

第三种生成随机图的方式,是用递归的方式来生成图结构。

请添加图片描述

具体方法是先根据给定的小矩阵 K 1 K_1 K1,通过克罗内克积【2】得到 K 2 = K 1 ⊗ K 1 K_2=K_1\otimes K_1 K2=K1K1

请添加图片描述

图的克罗内积是对两个图的邻接矩阵求克罗内积,以其值作为新图的邻接矩阵。

请添加图片描述

当然可以重复以上步骤:

请添加图片描述

1. 生成步骤

先定义初始化矩阵,初始化矩阵可以包含多个矩阵,这些矩阵大小可以不一样。

例如:

请添加图片描述

上面有两组不同的图,图的邻接矩阵,3次克罗内克积结果: K 3 K_3 K3

具体创建Stochastic Kronecker graphs步骤如下:

  1. 创建 N 1 × N 1 N_1\times N_1 N1×N1的概率矩阵 Θ 1 \Theta_1 Θ1
  2. K t h K^{th} Kth的克罗内克积 Θ k \Theta_k Θk
  3. 对于最后的结果 Θ k \Theta_k Θk中每个元素 p u v p_{uv} puv代表 K k K_k Kk p u v p_{uv} puv的概率生成边(u,v)

请添加图片描述

2. 快速版生成步骤

上面的步骤中,如果得到了生成有向边的概率矩阵,要对矩阵中的 n 2 n^2 n2个元素依次生成边,相当于计算了 n 2 n^2 n2次,可以用另外一种快速生成方式,时间复杂度为边的线性复杂度 O ( E ) O(E) O(E)

请添加图片描述

掉边法

请添加图片描述

上图中间是正常计算结果,右边是把结果看成四个小块,相当于原来的 Θ \Theta Θ

请添加图片描述

里面的每个元素可以继续分,直到不能分解为止

请添加图片描述

具体的描述如下:

‎快速克罗内克生成器算法‎,针对生成有向图。在有 n = 2 m n=2^m n=2m 个节点的图G中插入一条边,步骤如下:

  1. 创建归一化矩阵:

请添加图片描述

  1. 进行循环:

​ 1.从x=0,y=0开始

​ 2.概率 L u v L_{uv} Luv选择对应的象限(u,v)

​ 3.将象限进行分解,知道对应图G中的第i个元素:

请添加图片描述

  1. 为图G添加边
3. 小结

上面步骤中的m就是克罗内克积的次数,就是把矩阵分形了多少次,最终结果可以根据初始化矩阵和m直接用公式算出来,如果一个图有E条边,直接算E次即可,所以全图生成时间复杂度为 O ( E ) O ( E ) O(E)。这种生成方式可能会在两个节点生成多条边,因为在步骤2中可能选择到相同结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值