最近在看 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. .netCore下的jwt的梳理-->借鉴于“老张的哲学”

    之前在公司的项目中有用到jwt进行token验证,但是公司里用的框架已经集成好了jwt,所以对jwt的的了解不够清晰,感觉还是隔着一层.在看了“老张的哲学”的jwt部分后对jwt的认识才更加深刻了一些 ...

  2. Java 8 Optional 良心指南,建议收藏

    想学习,永远都不晚,尤其是针对 Java 8 里面的好东西,Optional 就是其中之一,该类提供了一种用于表示可选值而非空引用的类级别解决方案.作为一名 Java 程序员,我真的是烦透了 Null ...

  3. 02 HDFS 分布式环境实战

    HDFS的主要设计理念 1.存储超大文件 这里的“超大文件”是指几百MB.GB甚至TB级别的文件. 2.最高效的访问模式是 一次写入.多次读取(流式数据访问)3.运行在普通廉价的服务器上 HDFS设计 ...

  4. scrapy 执行同个项目多个爬虫

    一开始我们默认都是只有一个爬虫的,所以执行的代码都是在项目下创建一个py文件 from scrapy import cmdline cmdline.execute('scrapy crawl 爬虫名' ...

  5. ubuntu16.04 + caffe + SSD 硬件配置

    搞了几个月,终于把SSD试通了,不是科班出身的就是弯路多啊.几个月才跑通了caffe + ssd,痛苦至极,好在柳暗花明.好了,废话不多说,入正题. SSD作为object detection的论文, ...

  6. Windows下EDK2环境的搭建以及经典的程序设计Print Hello World !-----(Linux下的待后续熟练了再更新)

    很久没有更新博客了,之前的博客末尾有提到过要写有关EDK2环境搭建的博客,现在就是完成的时候了,后续博客更新会比较规律(大概每周一篇?) 本人博客仅仅发表于博客园,本人主页为         http ...

  7. Spring注解 - AOP 面向切面编程

    基本概念: AOP:Aspect Oriented Programming,即面向切面编程 指在程序运行期间动态的将某段代码切入到指定方法指定位置进行运行的编程方式 前置通知(@Before):在目标 ...

  8. mysql schema设计中应避免的陷阱

    谨记红字: 1. 表中谨防太多列: MySQL 的存储引擎API 工作时需要在服务器层和存储引擎层之间通过行缓冲格式拷贝数据,然后在服务器层将缓冲内容解码成各个列.从行缓冲中将编码过的列转换成行数据结 ...

  9. 数据库事务ACID详解(转载)

    转载自:http://blog.csdn.net/shuaihj/article/details/14163713 谈谈数据库的ACID 一.事务 定义:所谓事务,它是一个操作序列,这些操作要么都执行 ...

  10. ThinkPHP5.0 漏洞测试

    ThinkPHP5.0 漏洞测试 自从ThinkPHP发布漏洞补丁以来,服务器不知道多少次受到了批量扫描漏洞来抓取肉鸡的请求 虽然官方早已发布补丁,还是想试一下TP漏洞,测试两个漏洞 一.全版本执行漏 ...