最近在看 Stanford 的 Machine Learning with Graphs。然后在网上找相关的笔记或者其他人的理解,发现大部分内容是照搬并翻译 slides, 没有一些个人的理解,而且很多地方只有前几个 lecture。所以打算自己整理一个系列的笔记供以后反复温习,也欢迎大家指正,共同学习。

转自本人:https://blog.csdn.net/New2World/article/details/105277863

Lecture 1: Introduction

Jure 提出了两个概念 Network 和 Graph,这两者的界限很模糊,但大致上我们可以将 Network 视为现实中的图,而 Graph 是一种更数学的描述方式。在很多复杂的系统之下都有错综复杂的关系网,比如食物链、化学物质的相互反应等。

课程标题很明确的表示了这个学科研究的是图,那么怎么研究。主要通过4个方面:

  • node classification
  • link prediction
  • community detection
  • network similarity

每一个方面后面当然会涉及到,所以即使现在不知所云也请稍安勿躁。

之前学的关于图的知识都没有进行这样的划分,但 Jure 提到这里不同的术语之间有微妙的区别(虽然感觉不是那么重要):

Objects Interactions System
nodes links network
vertices edges graph
\(N\) \(E\) \(G(N,E)\)

其他的关于图的基本知识不再赘述,不清楚的朋友可以先去温习一下图的基础部分。

对于无向图的连通性有个有趣的现象之前没有注意过:若按一定顺序排列节点用邻接矩阵表示图的话,非连通图是严格的对角分块矩阵。

Lecture 2: Properties and Random Graph

描述一个图的特征一般有这样几个:

  • degree distribution: \(P(k)\)
  • path length: \(h\)
  • clustering coefficient: \(C\)
  • connected components: \(s\)

Degree Distribution

简单来说就是度的直方图,归一化后就是:\(P(k)=N_k / N\)。\(N_k\) 是有 \(k\) 个度的节点个数。

一般来说,图的度分布是倾斜的,因此在可视化的时候可以选择用对数坐标,即 \(10^1, 10^2, 10^3 ...\)

Path Length

一般意义上,路径长度指两个节点间的最短路径。而一个图中最长的最短路径定义为这个图的直径(diameter)。然而某些奇奇怪怪的图可能会有一条很长很长很长的路径,那么会导致直径很大。这样会对图的描述产生倾斜或者说是偏差,因此一般用平均路径长度来描述路径长度。

\[\bar{h}=\frac1{2E_{max}}\sum_{i,j \neq i}h_{ij}
\]

\(E_{max}\) 是最大可能的边数,即 \((n-1)n/2\)。然而一般地,只计算存在的边算,而忽略不相通的节点对。

Clustering Coefficient

这个特征是用来衡量一个节点周围的邻接节点的互连关系的,简单来说就是一个节点的一个邻接节点多大程度上了解其他邻接节点。表示为

\[C_i=\frac{2e_i}{k_i(k_i-1)}
\]

\(e_i\) 是节点 \(i\) 的邻接节点之间的边的数量

Connectivity

连通性这个概念很广泛,包括连通子图的个数、最大连通子图的大小等


在有了这些衡量一个图的特征后,这些指标对我们来说只是一串数字而已。我们想知道这些值是“情理之中”还是“意料之外”,那么就需要一个参照来进行对比。

Erdos-Renyi Random Graph Model

这是一种最简单的随机图模型,它有两种定义方式:

  1. 给定 \(n\) 个节点,然后按同一概率 \(p\) 去生成每组节点对的边
  2. 给定 \(n\) 个节点,按均匀分布选 \(m\) 条边

那么通过这样的模型产生的随机图有怎样的性质呢?

Degree Distribution

度的分布服从伯努利分布,即

\[P(k)=\begin{pmatrix}n-1\\k\end{pmatrix}p^k(1-p)^{n-k-1}
\]

那么根据伯努利分布的性质,其均值和方差分别为

  • \(\bar{k}=p(n-1)\)
  • \(\sigma^2=p(1-p)(n-1)\)

这里 slide 上给出了一个表达式

\[\frac{\sigma}{\bar{k}}=\big[\frac{1-p}p\frac1{n-1}\big]^{1/2}
\]

Jure 的原话是:you can then ask how does the variance change as a function of the average degree.

也就是说这里服从大数定理,当图的规模足够大时,度的分布会变得很“窄”,即可以视作所有节点都有 \(\bar{k}\) 的度

Clustering Coefficient

根据 clustering coefficient 的定义,我们需要知道节点的邻接节点间的边的数量。由于在 ER 随机图中边是 i.i.d. 的,所以期望为

\[E[C_i]=\frac{E[e_i]}{k_i(k_i-1)}=\frac{p\frac{k_i(k_i-1)}{2}}{k_i(k_i-1)}=p=\frac{\bar{k}}{n-1}\approx\frac{\bar{k}}{n}
\]

也就是说,随着图的规模增大,clustering coefficient 的值不断减小。

Path Length

在讨论路径长度之前要先引入一个概念:Expansion \(\alpha\)

\[\forall S \subseteq V:\#(edges\ leaving\ S)\geq\alpha\min(|S|,|V\text{\textbackslash}S|)
\]

这个定义很数学,通俗地解释就是把一个图的节点分成两堆,使得连接两部分的边最少。那么通过这个我们怎么推导路径呢?

我们先回忆下 BFS 的工作原理,如下图,从一个点出发开始遍历整个图。如果图是连通的,那么第二层应该是初始点的邻接点,然后依次展开直到覆盖图中所有点。假设遍历的是这里的 ER 随机图,那么这棵树的深度就应该是 \(\log_{np}n=\log n / \log np\)

但这里没有涉及到 expansion 这个概念呀!应该说没有显示地说明这个概念,因为我们限制了 ER 图。更一般的图的度不一定是 \(np\),因此需要用 expansion 的 \(\alpha\) 来替换这里特殊的 average degree。如此一来,将平均路径长度推广为 \(O((\log n) / \alpha)\)

Connectivity

在边的概率 \(p\) 逐渐增大过程中可以发现,当 \(p=1/(n-1)\) 时,即平均度为 \(1\) 时,giant component 开始出现。


这样我们就有了一个可以与真实网络进行对比的模型了

  • [x] average path length
  • [x] giant connected component
  • [ ] clustering coefficient
  • [ ] degree distribution

通过对比我们可以发现这个随机图模型的特征只在路径长度和最大连通子图上和真实网络差不多,但其余性质上差得很远。这样也说明了真实世界的网络不是随机的,其背后有复杂的关系等待我们去发现。

Small-World Model

通过对 ER 图的分析我们发现这种简单的随机图丢失了聚类信息,即 local structure。然而,单纯的加上 local connections 会导致图的平均路径增加而破坏我们原本已经吻合了的性质。因此提出了这个 Small-World 模型。

这里 Jure 对为什么 triadic closure 会导致网络直径增加的解释有点不清楚。按理说朋友的朋友就是我的朋友这一点能缩短路径长度呀。我的理解是这里应该突出的是 local 这一条件。以交通网为例,如果现在只有相邻城市间有交通线路,那么我从四川到北京就得途经“四川-陕西-山西-河北-北京”。但如果我有四川到北京的直飞线路呢?那直观上不就直接“四川-北京”了吗。

这个 Small-World 模型首先为了确保有 local structure,将自己初始化为下图的样子(regular ring lattice)。然后依概率将一条边的一个端点连接到任意一个不同节点上。如此,初始化保证了 clustering coefficient,而 rewiring 引入了随机性从而缩减了网络直径。



但是这里需要注意的是如果 rewiring 的概率太高或太低都不行。

  • 太低,约等于不做
  • 太高,破坏了局部结构



虽然小世界模型能比较好的模拟真实网络的局部结构,但它没法吻合度的分布情况。

Kronecker Graph Model

这个模型有两个突出的优势

  • 可并行,快,适合生成大规模的图
  • 遵从一些真实网络的“规则”

Idea:递归地生成一张图

每个公司内都有很多部门,各个部门有管理层和不同的事业群,每个事业群内又有组长和员工。这样的结构在大部分公司里都差不多。那么推广这个规律,我们先定义一个小群体内的网络结构,然后递归地使用这样的结构来构建更大的图。

定义 Kronecker product

\[C=A \otimes B \doteq \begin{pmatrix}
a_{1,1}B & a_{1,2}B & ... & a_{1,m}B \\
a_{2,1}B & a_{2,2}B & ... & a_{2,m}B \\
& ... & ... \\
a_{n,1}B & a_{n,2}B & ... & a_{n,m}B
\end{pmatrix}\]



如果用邻接矩阵来直接生成那太死板了,所以为引入随机性将邻接矩阵换成概率矩阵,即矩阵的每个元素表示对应节点对右边的概率。这样通过 Kronecer product 最终得到整个网络的边的概率分布图。然后我们再通过每个区域的概率递归地选择边来得到图的一个 realization。



这种方法选边时不可避免地会遇到重复边,但概率很小。就算遇到了,reinsert 就行了,无伤大雅。

需要确定边的条数,而这一般依赖经验

实验证明 Kronecker 图在各种性质上都能较好地拟合真实的网络。但这个模型生成的图的 degree distribution 并不是平滑的。直观上说,按初始定义的 block structure 进行递归所得到的图可能的确存在这个问题,即某些部分连接紧密有些地方稀疏,而这种差异并不连续。

【cs224w】Lecture 1 & 2 - 图的性质 及 随机图的更多相关文章

  1. 【图机器学习】cs224w Lecture 8 & 9 - 图神经网络 及 深度生成模型

    目录 Graph Neural Network Graph Convolutional Network GraphSAGE Graph Attention Network Tips Deep Gene ...

  2. 【图机器学习】cs224w Lecture 15 - 网络演变

    目录 Macroscopic Forest Fire Model Microscopic Temporal Network Temporal PageRank Mesoscopic 转自本人:http ...

  3. UML图学习之二 类图

    类图(ClassDiagrams)是根据系统中的类以及各类之间的关系描述系统的静态视图.类图不仅显示系统内信息的结构,还描述系统内这些信息的行为.类图的一个重要目的是为其他图(如顺序图.交互图)定义一 ...

  4. 【GCN】图卷积网络初探——基于图(Graph)的傅里叶变换和卷积

    [GCN]图卷积网络初探——基于图(Graph)的傅里叶变换和卷积 2018年11月29日 11:50:38 夏至夏至520 阅读数 5980更多 分类专栏: # MachineLearning   ...

  5. Erdos-Renyi随机图的生成方式及其特性

    1 随机图生成简介 1.1 \(G_{np}\)和\(G_{nm}\) 以下是我学习<CS224W:Machine Learning With Graphs>[1]中随机图生成部分的笔记, ...

  6. UML 用例图、顺序图、状态图、类图、包图、协作图、流程图

    ​用例图.顺序图.状态图.类图.包图.协作图 面向对象的问题的处理的关键是建模问题.建模可以把在复杂世界的许多重要的细节给抽象出.许多建模工具封装了UML(也就是Unified Modeling La ...

  7. 桌面显卡天梯图和桌面cpu天梯图

    桌面cpu天梯图: 桌面显卡天梯图:

  8. 数据结构-图-Java实现:有向图 图存储(邻接矩阵),最小生成树,广度深度遍历,图的连通性,最短路径1

    import java.util.ArrayList; import java.util.List; // 模块E public class AdjMatrixGraph<E> { pro ...

  9. 图结构练习——判断给定图是否存在合法拓扑序列(dfs算法(第一个代码),邻接矩阵(前两个代码),邻接表(第三个代码))

    sdut 2140 图结构练习——判断给定图是否存在合法拓扑序列 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述  给定一个有向图 ...

随机推荐

  1. Everything-快速找到你的文件,电脑前的你值得拥有

    如果你也是一位电脑使用者,那么你可以考虑下载这个"Everything". Everything是一款非常非常强大的软件.相信不少电脑用户,特别是Windows用户,都尝试使用过W ...

  2. JZOJ 1349. 最大公约数 (Standard IO)

    1349. 最大公约数 (Standard IO) Time Limits: 1000 ms Memory Limits: 65536 KB Description 小菜的妹妹小诗就要读小学了!正所谓 ...

  3. 浅谈JS之setTimeout与setInterval

    概念 setTimeout与clearTimeout,以及setInterval与clearInterval均属于Window对象方法. 方法 描述 setTimeout 在指定的毫秒数后调用函数或计 ...

  4. Vue2.0 【第二季】第4节 Vue的生命周期(钩子函数)

    目录 Vue2.0 [第二季]第4节 Vue的生命周期(钩子函数) 第4节 Vue的生命周期(钩子函数) Vue2.0 [第二季]第4节 Vue的生命周期(钩子函数) 第4节 Vue的生命周期(钩子函 ...

  5. Robotutor Scratch3.0 在线编程平台上线!

    终于,Scratch3.0在线编程平台上线了,不容易阿! 欢迎试用 https://scratch.robotutor.cn 欢迎交流,WeChat ID: iamlinweidong

  6. 用原生JS实现爱奇艺首页导航栏

    以下是爱奇艺首页的一个导航栏,用原生js写的,静态页面效果如下: 代码如下: <html> <head> <title>爱奇艺</title> < ...

  7. 分布式——吞吐量巨强、Hbase的承载者 LSMT

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是分布式系统的第九篇文章. 今天给大家分享的内容是LSM树,它的英文是Log-structed Merge-tree.看着有些发怵,但其 ...

  8. 数据库事务练习-Java(新手)

    数据库事务:       一个数据库事务通常包含了一个序列的对数据库的读/写操作.  为数据库操作序列提供了一个从失败中恢复到正常状态的方法,同时提供了数据库即使在异常状态下仍能保持一致性的方法. p ...

  9. git提交更改都是一个作者

    为什么提交到github的commit都是一个作者 参考链接 重要知识点讲解 问题如下所示 git是分布式去中心化的管理系统 ssh秘钥对生成.并把id_rsa.pub加入github.com中(这个 ...

  10. 普通人学习rust——从零到放弃 简单输入输出

    普通人学习rust--从零到放弃 简单输入输出 环境 本文章内容基于如下环境,如若出入请参考当前环境. rustc 1.42.0 (b8cedc004 2020-03-09) cargo 1.42.0 ...