CS224W摘要14.Traditional Generative Models for Graphs


CS224W: Machine Learning with Graphs
公式输入请参考: 在线Latex公式
这节和下节都是讲图的生成模型,这节讲传统方法,下节讲DL方法。
之前学习的内容都是给定图,然后学习这个图的特征,做特定的预测节点、边等任务:
在这里插入图片描述
这节开始研究如何用模型生成这样的图。
在这里插入图片描述
几个好处:
Insights – We can understand the formulation of graphs
Predictions – We can predict how will the graph further evolve
Simulations – We can use the same process to general novel graph instances
Anomaly detection - We can decide if a graph is normal / abnormal

这块图生成模型分三块来讲,第一块先复习真实图的基本属性;第二块学习传统图生成模型;第三块学习深度图生成模型(下节讲)。

Properties of Real-world Graphs

这块基本属于复习,基本前面都有讲过这些内容(Lecture 1&2)。
Degree distribution: P ( k ) P(k) P(k)
Clustering coefficient: C C C
Connected components: s s s
Path length: h h h

Degree distribution

记随机选择的节点拥有度为 k k k的概率: P ( k ) P(k) P(k)
记有 N k N_k Nk个节点拥有度为 k k k,则:
P ( k ) = N k N P(k)=\cfrac{N_k}{N} P(k)=NNk
在这里插入图片描述

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=\cfrac{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=\cfrac{1}{N}\sum_i^NC_i C=N1iNCi

Connectivity

就是最大连通分量,找出下图的最大连通分量:
在这里插入图片描述
步骤:
1.从随机一个节点开始做BFS
2.标记访问过的节点
3.如果所有节点均能访问,则该图是连通图
3.1否则重新找一个未访问的节点从步骤1开始,直到所有图中节点都被访问。

Path Length

图的直径:图中任意节点对的最大的最短路径长度
对于连通无向图或强连通有向图而言,图的平均路径长度为:
h ˉ = 1 2 E max ⁡ ∑ i , j ≠ i h i j \bar h=\cfrac{1}{2E_{\max}}\sum_{i,j\ne i}h_{ij} hˉ=2Emax1i,j=ihij
其中 h i j h_{ij} hij是两个节点之间的距离, E max ⁡ = n ( n − 1 ) / 2 E_{\max}=n(n-1)/2 Emax=n(n1)/2是图中可包含的最大边数量。
通常在计算过程中,我们会忽略掉路径长度为无穷的值,从而计算出正确的平均路径长度。

有了上面四个属性,下面来看具体实际图的例子。

MSN Graph

MSN Messenger: 只包含 1 month of activity,基本信息如下:
245 million users logged in
180 million users engaged in conversations
More than 30 billion conversations
More than 255 billion exchanged messages

原始度分布,平均度为14.4:
在这里插入图片描述
横纵坐标log后的度分布
在这里插入图片描述
聚集系数:0.114
在这里插入图片描述
连通分量,最大那个基本涵盖99%的用户。
在这里插入图片描述
路径长度,平均路径长度为6.6,90%的节点可以在8跳内相互访问。
在这里插入图片描述
以上信息没有对比也无法知道这些指标是否偏高或者正常,下面引入三个生成随机图的方法,将生成图与MSN网络进行对比。

Erdös-Renyi Random Graphs

这个方法是两个发明人的名字合体命名的。类似RAS,它有两种形式:
G n p G_{np} Gnp:表示一个有 n n n个节点的无向图,其中每个节点对 ( u , v ) (u,v) (u,v)是否有边,是按i.i.d.(独立同分布)的概率 p p p进行设置的。
G n m G_{nm} Gnm:表示一个有 n n n个节点的无向图,其中随机选择 m m m个节点对形成边。
主要看第一种形式。它有两个变量来控制生成图的形式:
在这里插入图片描述
下面来看 G n p G_{np} Gnp生成的图的几个属性:

Degree distribution of G n p G_{np} Gnp

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

Clustering Coefficient of G n p G_{np} Gnp

由于图中的边是按i.i.d.(独立同分布)的概率 p p p进行设置的。因此,对于节点 i i i度为 k i k_i ki而言,其邻居之间出现边的期望可以表示为:
E [ e i ] = p k i ( k i − 1 ) 2 E[e_i]=p\cfrac{k_i(k_i-1)}{2} E[ei]=p2ki(ki1)
从而根据原始的聚集系数公式得到期望聚集系数为:
E [ C i ] = p ⋅ k i ( k i − 1 ) k i ( k i − 1 ) = p = k ˉ n − 1 ≈ k ˉ n E[C_i]=\cfrac{p\cdot k_i(k_i-1)}{k_i(k_i-1)}=p=\cfrac{\bar k}{n-1}\approx\cfrac{\bar k}{n} E[Ci]=ki(ki1)pki(ki1)=p=n1kˉnkˉ
上式中最后的等号由均值公式转化得来。
随机图的聚集系数比较小,如果用固定的度 k 或 者 p = k ⋅ 1 / n k或者p=k\cdot1/n kp=k1/n来生成图,随着图节点数 n n n越大,聚集系数越小。

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

保证图中节点数量不变,将生成边的概率从0变到1,图结构则有下面的变化:
在这里插入图片描述
看两头:
p = 0 p=0 p=0,表示不会有边生成,空图
p = 1 p=1 p=1,表示每个节点对100%生成边,完全图
k ˉ = p ( n − 1 ) \bar k=p(n-1) kˉ=p(n1),因此当 p = 1 n − 1 p=\cfrac{1}{n-1} p=n11时, k ˉ = 1 \bar k=1 kˉ=1,意味每个节点都会有一条边相连,意味着开始出现较大连通分量,如果边小于节点数量,也就是 k ˉ < 1 \bar k<1 kˉ<1时,意味着有节点是没有边相连的。基于这个理论,我们可以得到giant component:出现的临界点就是节点平均度为1,写成数学表达就是:
k ˉ = 2 E n  or  p = k ˉ ( n − 1 ) \bar k=\cfrac{2E}{n}\text{ or }p=\cfrac{\bar k}{(n-1)} kˉ=n2E or p=(n1)kˉ
当节点平均度小于1时: k = 1 − ε k=1-\varepsilon k=1ε,所有连通分量大小上限是(原文是所有连通分量大小都是,感觉不对): Ω ( log ⁡ n ) \Omega(\log n) Ω(logn)

当节点平均度大于1时: k = 1 + ε k=1+\varepsilon k=1+ε,有一个连通分量大小上限是: Ω ( n ) \Omega(n) Ω(n),其他连通分量大小上限是: Ω ( log ⁡ n ) \Omega(\log n) Ω(logn)
此时每个节点的期望边数至少为1,在可视化后就是:
在这里插入图片描述
这个图也对应了上一张图的理论推断,可以看到,平均度大于1时,最大连通量中的节点急剧增加,当平均度为2的时候,80%的节点都在最大连通分量中了。

Expansion

这里补充一个图 G ( V , E ) G(V,E) G(V,E)的扩展系数 α \alpha α
α = min ⁡ S ⊆ V # edges leaving S min ⁡ ( ∣ S ∣ , ∣ V ∖ S ∣ ) \alpha=\underset{S\subseteq V}{\min}\cfrac{\text{\# edges leaving S}}{\min(|S|,|V\setminus S|)} α=SVminmin(S,VS)# edges leaving S
看图:
在这里插入图片描述
中间黑线就是 # edges leaving S \text{\# edges leaving S} # edges leaving S
扩展系数用来衡量一个图的鲁棒性,要断开 l l l个节点,需要去掉 ≥ α ⋅ l \ge \alpha\cdot l αl条边。
在这里插入图片描述
上面的几个图例中,真实图一般介于第一和第二个之间。社区内部鲁棒性强,社区间的鲁棒性差。
这个新的定义和下面要将的路径长度有关。
定理:对于一个包含 n n n个节点的图,若其扩展系数为 α \alpha α则所有节点对的(平均?有点类似计算时间复杂度的味道)路径长度为:
O ( log ⁡ n α ) O(\cfrac{\log n}{\alpha}) O(αlogn)
也就是说,当图规模变大,那么 log ⁡ n \log n logn会变大,但同时 α \alpha α也会变大,因此路径长度相对而言不一定会变大。
对于一个随机图 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(\cfrac{\log n}{\log (np)})) diam(Gnp=O(log(np)logn))
从上面的式子可以知道,随机图 G n p G_{np} Gnp的直径是节点数量的对数,因此随机图 G n p G_{np} Gnp有比较好的扩展性,可以在对数级步数内BFS所有节点
在这里插入图片描述

Shortest Path of G n p G_{np} Gnp

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

MSN vs G n p G_{np} Gnp

偷懒做表,直接上图:
在这里插入图片描述
通过上面的对比实际图与 G n p G_{np} Gnp随机图的共同点在于:
Giant connected component
Average path length
不同点在于:
Clustering Coefficient,随机图聚集系数非常低
Degree Distribution,随机图度分布是二项分布
下面看第二种随机图生成方法。

The Small-World Model

通过上节的学习我们看到, G n p G_{np} Gnp随机图两种平均路径长度较长( o ( log ⁡ n ) ≈ 8.2 o(\log n)\approx8.2 o(logn)8.2),聚集系数较低( k ˉ n ≈ 8 ⋅ 1 0 − 8 \cfrac{\bar k}{n}\approx8\cdot10^{-8} nkˉ8108)。

我们希望找到一种高聚集系数且平均路径较短的随机图,使其更接近真实图。
在这里插入图片描述
因为在相同平均节点度的情况下,真实图比起随机图而言,平均路径较短(其实差不多),聚集系数更大
在这里插入图片描述
一般来说,平均路径和聚集系数两个不可同时得到,因此要想在二者之间做trade off,就是Small-world graph的思想:
在这里插入图片描述

创建步骤

(1) Start with a low-dimensional regular lattice(这里用环形代替lattice)
此时的图拥有高聚集系数
在这里插入图片描述
(2) Rewire: Introduce randomness (“shortcuts”)
重新连接节点对,对每个节点对,以概率 p p p将其终点重新接到另外的随机节点上。
在这里插入图片描述

结果及分析

在这里插入图片描述

可以看到随着随机rewire的概率 p p p趋近1,中间状态就是我们的目标网络结构。把聚集系数画出来:
在这里插入图片描述
可以看到当随机rewire概率趋向于1的时候,聚集系数才会变很小,但是很小随机rewire概率,就可以获得很多shortcut,使得平均路径变短。
注意看上图中的横坐标不是等值的。

小结

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

Kronecker Graph Model

第三种生成随机图的方式,是用recursive的方式来生成图结构。
在这里插入图片描述

具体方法是先根据给定的小矩阵 K 1 K_1 K1,通过克罗内克积得到 K 2 = K 1 ⊗ K 1 K_2=K_1\otimes K_1 K2=K1K1
在这里插入图片描述
当然可以重复以上步骤:
在这里插入图片描述
上面提到的两个矩阵的克罗内克积定义如下:
C = A ⊗ B ≐ ( α 1 , 1 B α 1 , 2 B ⋯ α 1 , m B α 2 , 1 B α 2 , 2 B ⋯ α 2 , m B ⋮ ⋮ ⋱ ⋮ α n , 1 B α n , 2 B ⋯ α n , m B ) C=A\otimes B\doteq\begin{pmatrix} \alpha_1,_{1}B& \alpha_1,_{2}B &\cdots & \alpha_1,_{m}B \\ \alpha_2,_{1}B & \alpha_2,_{2}B & \cdots& \alpha_2,_{m}B \\ \vdots & \vdots & \ddots &\vdots \\ \alpha_n,_{1}B & \alpha_n,_{2}B & \cdots& \alpha_n,_{m}B \end{pmatrix} C=ABα1,1Bα2,1Bαn,1Bα1,2Bα2,2Bαn,2Bα1,mBα2,mBαn,mB
其中A的维度是 N × M N\times M N×M,B的维度是 K × L K\times L K×L
最后结果的维度是: ( N × K ) × ( M × L ) (N\times K)\times(M\times L) (N×K)×(M×L)
两个图的克罗内克积就是图邻接矩阵的克罗内克积。
Kronecker graph is obtained by growing sequence of graphs by iterating the Kronecker product over the initiator matrix K 1 K_1 K1:
K [ m ] = K m = K 1 ⊗ K 1 ⊗ ⋯ K 1 ⏟ m  t i m e s = K m − 1 ⊗ K 1 K^{[m]}=K_m=\underset{\text{m }times}{\underbrace{K_1\otimes K_1\otimes\cdots K_1}}=K_{\text{m}-1}\otimes K_1 K[m]=Km=times K1K1K1=Km1K1

生成步骤

先定义初始化矩阵,initiator matrix,初始化矩阵可以包含多个矩阵,initiator
matrices: K 1 ′ , K 1 ′ ′ , K 1 ′ ′ ′ K_1',K_1'',K_1''' K1,K1,K1,这些不同矩阵大小可以不一样。
例如:
在这里插入图片描述
在这里插入图片描述
上面有两组不同的图,图的邻接矩阵,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的Kronecker 积 Θ 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 ) (u,v) (u,v)
在这里插入图片描述

快速版生成步骤

上面的步骤中,如果得到了生成有向边的概率矩阵,要对矩阵中的 n 2 n^2 n2个元素依次生成边,相当于计算了 n 2 n^2 n2次,可以用另外一种快速生成方式,时间复杂度为边的线性复杂度 O ( E ) O(E) O(E)
在这里插入图片描述
丢边法(edge dropping,看着我翻译的土鳖名。。。百度了一下,有叫掉边法):
在这里插入图片描述
上图中间是正常计算结果,右边是把结果看成四个小块,相当于原 Θ \Theta Θ
在这里插入图片描述
里面每个元素可以继续分,直到不能分解:

在这里插入图片描述
在这里插入图片描述
具体描述如下:
Fast Kronecker generator algorithm,针对生成有向图。
在有 n = 2 m n=2^m n=2m个节点的图 G G G中插入一条边,步骤如下:
1.创建归一化矩阵:
L u v = Θ u v ∑ o p Θ o p L_{uv}=\cfrac{\Theta_{uv}}{\sum_{op}\Theta_{op}} Luv=opΘopΘuv
2.For i = 1 ⋯ m i=1\cdots m i=1m
2.1 从 x = 0 , y = 0 x=0,y=0 x=0,y=0开始
2.2 概率 L u v L_{uv} Luv选择对应的象限 ( u , v ) (u,v) (u,v)
2.3将象限进行分解,直到对应图 G G G中的第 i i i个元素:
x + = u ⋅ 2 m − i , y + = v ⋅ 2 m − i x+=u\cdot2^{m-i},y+=v\cdot2^{m-i} x+=u2mi,y+=v2mi
3.为图 G G G添加边

其实比较晦涩难懂,可以这样想,上面步骤中的 m m m就是克罗内克积的次数,就是把矩阵分形了多少次,最终结果可以根据初始化矩阵和 m m m直接用公式算出来,如果一个图有 E E E条边,直接算 E E E次即可,所以全图生成时间复杂度为 O ( E ) O(E) O(E)

这种生成方式可能会在两个节点生成多条边,因为在2.2可能选择到相同结果。
贴一个原文的讲解:
https://blog.csdn.net/weixin_45443685/article/details/105738453
Kronecker和真实图比较像,实验结果不贴了。

总结

讲了三种传统随机图生成方式,这三种方式对生成图的过程有先验条件假设。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

oldmao_2000

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值