当前位置: 首页 > news >正文

Graph Representation Learning Chapter[2]

序言

我们将介绍一些传统的方法( basic graph statistics, kernel methods,
and their use for node and graph classification tasks),为后续学习做铺垫

2.1Graph Statistics and Kernel Methods

传统方法是启发式的。通常提取数据、特征将其作为ML的输入。后面会介绍几种传统的启发式学习。

2.1.1 Node-level statistics and features

我们的目的是搞清楚哪些特征和统计数据有价值,哪些可以用来区分一个节点与其他节点。这些东西在后面的分类任务中很有用。

Node degree

节点的度,就是一个点旁边直接连的线有几根。
du = X v∈V A[u, v].

Node centrality

度不能衡量节点的重要性。(度多不一定是最重要的)
所以提出节点中心性。
特征向量中心性与该节点的邻居节点重要性相关。
λe = Ae.
A:邻接矩阵
λ:最大特征值

中心性这块儿,需要了解一下:度中心性、特征向量中心性、中介中心性、连接中心性

总而言之,中心值是 最大特征值对应的特征向量。
特征向量中心性可以理解为,在无限长的随机游走中,某节点被访问的可能性大小。

特征向量中心性与该节点的邻居节点重要性相关。(你的邻居越牛,你就越牛)

书上有个幂迭代求特征值的:e(t+1) = Ae(t),(不管什么方法,都是为了求特征值)。
在这里插入图片描述

知乎解释:

其实很好理解迭代的含义。一个节点的度可以衡量节点在网络中的重要程度(实际上就是点度中心性),但是一个节点的重要程度除了和自己有关还和邻居的重要程度(邻居的度)有关,换句话说,如果你的邻居越重要你就越重要,同时你相邻的“重要的”邻居越多你就越重要。那么一个邻接矩阵A乘节点度向量x(即Ax=y,其中x=[x1,x2,x3,…,xn],xi表示节点i的度,A为nn,x为n1),相当于将节点i的邻居的度分配/添加到节点i上了,也就是将i的邻居的重要程度加到的i自己的重要程度上了,这相当于一次对点度中心性的扩散,也就是一次迭代。然后我们将y作为每一个节点新的重要程度再与A相乘得到Ay=y’作为一轮新的迭代(新的重要程度扩散),一直迭代下去直到达到一个平衡,此时每一个节点在整个网络中的重要性比例会保持稳定,此时的向量也就是特征向量。

大概明白何为中心性。。。

The clustering coefficient

中心性不能区分除了中心节点之外的点(非中心那一群),所以有了这个“集聚系数”。
这么算:
在这里插入图片描述
分子:计算节点u的邻居节点间存在的边的数量。(大概就是闭合三角形)
分母:计算邻居节点可以组成多少队。
系数越高越重要

Closed triangles, ego graphs, and motifs

承上文,另一种方法是计算每个邻域中闭三角数量。more precise,在ego-graph中,集聚系数与 实际三角形数和总可能三角形的数量比有关。(so 为什么?)
ego-graph(指距离中心节点小于特定距离的所有点构成的图)
然后说,这样能应用到更复杂的结构,比如说圈

2.1.2 Graph-level features and graph kernel

以上说的都是基于节点的,图级的任务,我们引入新的方法:图核方法(graph kernel),侧重点在于提取显示的特征表示。

Bag of nodes

最简单的方法是,直接聚合节点级的信息,聚合后作为图级显示。缺点是丢失了全局属性。

The Weisfeiler-Lehman kernel

为提升bag of nodes方法,提出了Weisfeiler-Lehman算法(威斯费勒-莱曼算法)。

1.定义 label l(0)(v)为节点的度

2.通过邻居节点,迭代的给每一个节点分配新的label

3.重复2进行k次

具体的可以看链接。

Graphlets and path-based methods

在图上提取特征,有效简单的是计算不同的小子图。但很难,所以提出了一些近似的方法。
一种是 基于路径(path-based methods):检查图中出现的不同类型的路径。
例如,Kashima等人提出的随机游走核–在图上运行随机游走,然后计算不同度序列的出现。很强大的思想,后面会说。

2.2 Neighborhood Overlap Detection

2.1的方法在节点和图中都很有用,但是不能量化节点间的关系,so不能通过节点相似度来进行关系预测(边预测)
后面介绍的邻域重叠检测方法,能够解决这个。

先定义节点相似度矩阵,度量两节点间的关联度。最简单的邻域重叠度量是计算两个节点共享的邻居的数量
S [ u , v ] = ∣ N ( u ) ∩ N ( v ) ∣ , S ∈ R ∣ V ∣ × ∣ V ∣ S[u, v] = |N (u) ∩ N (v)|,S ∈ R |V|×|V| S[u,v]=N(u)N(v)SRV×V
S[u,v]表示量化节点u和v之间关系的量化值
S∈R|v|×|v|表示汇总所有成对节点统计量的相似度矩阵。
坦白讲,俩人邻居都一样,那可不就贼相似,关联度贼高,就是这个意思。

2.2.1 Local overlap measures

局部重合度的简单的思想就是上文提及的用共同邻居的比例来描述节点间两两的relationship,当然,单纯计数是缺少一致性,因而需要进行标准化处理。
其中比较著名的有Sorensen提出的:
在这里插入图片描述
其中du便是节点u的度:
类似Salton:在这里插入图片描述

Jaccard overlap:
在这里插入图片描述
这些措施试图量化节点邻域之间的重叠,同时最小化由于节点度引起的任何偏差。

当然,也有的指标并不局限于描述有多少重合的邻居节点,而是反过来描述重合节点的重要程度又如何。譬如经典的Resource Allocation (RA) index:
在这里插入图片描述
还有在RA基础上加上了对数函数的Adamic-Adar(AA) index:
在这里插入图片描述
RA和AA index都给了低度(low degree)的邻接点更高的权重,因为这些low-degree的节点能够比high-degree的节点提供更多信息,这点在文本分类中思想也有体现,譬如经典的TF-IDF,给予频率较少的词更大权重以区分不同词的重要性。

2.2.2 Global overlap measures

上节提到的局部重叠检测(local overlap measures)能够提供重要度以及节点间相似度信息以完成link prediction一类的任务,即使这种方法十分简单高效,还是能匹配DL,but 譬如在社区发现算法中,分到同一个社区的两个节点很可能没有重合的邻居,如何描述他们之间的关系?要借助global overlap的一些统计量描述在全图视角下节点间关系。

Katz index

在这里插入图片描述

统计两点间所有的任意长度的path
β是定义 短路权重/长路权重,β < 1表示长路权重低一点。
邻接矩阵A 的i次方用来表两点间长度为i的路的条数
证明:略
在这里插入图片描述

Leicht, Holme, and Newman (LHN) similarity

Katz指数的一个问题是它受节点度的强烈偏差。Katz指通常会给度高的节点更高的总体相似性得分,因为度高节点通常会涉及更多的路径。因此,我们需要标准化路的数量,所以用了这个:
number of expected paths between two nodes
在这里插入图片描述
E[Ai]的计算是下式:推导过程
在这里插入图片描述
m为总节点数,说明在random configuration model假设下节点间边的似然是和两节点的degree乘积成比例。

如果节点u有du条边离开u,那么这些边有dv/2m的概率流入v点。
基于此提出(蛮复杂,以后用到再细看):
在这里插入图片描述

Random walk methods

从全局角度衡量节点关系的方法则是大名鼎鼎的随机游走法,这种节点关系表征法直接催生出了如Deepwalk这样经典的工作。
在无向图中,易知P为对称矩阵,所以第u行/列就是从节点u出发随机游走无数次后到达其他节点的概率。

2.3 Graph Laplacians and Spectral Methods

这节学习图中节点聚类的问题,介绍谱图理论

2.3.1 Graph Laplacians

拉普拉斯矩阵,在GCN也有用到,类似卷积核这样的东西,挺重要的。
细看

Unnormalized Laplacian

由邻接矩阵变化而来,很有用
非标准化的也是最基础的:L = D − A
L是拉普拉斯,D是节点度的对角矩阵,A是邻接矩阵
L重要性质:

  1. 对称并且半正定的
  2. 有恒等式(总变差公式)在这里插入图片描述
  3. 特征值非负

yinyong引用引用大佬的讲解

Normalized Laplacians

标准化的拉普拉斯矩阵有几种形式:

对称标准化 (symmetric normalized Laplacian)
在这里插入图片描述

随机游走标准化 (random walk Laplacian)
在这里插入图片描述
以上也有拉普拉斯的3个性质,但此前关于特征值为0的节点连接结论则要随着特征值的标准化的改变而改变。

2.3.2 Graph Cuts and Clustering

L的0特征值对应的特征向量,可以用来将连通分量中的节点分配给簇。但如果整张图都是连通的呢? 在这一节中,我们会介绍使用拉普拉斯矩阵,在完全连通图中给出节点的最优聚类(optimal cluster)。

Graph cuts

再次引用大佬
除了直接最优化最小的cut,还有的思路在于描述cut的不同的表达方式

在这里插入图片描述

Approximating the RatioCut with the Laplacian spectrum

大佬写的,我没看懂这里

2.3.3 Generalized spectral clustering

上一节,我们找到了一个将图分成两个簇的最优划分。那么,我们也可以将这种方法推广到K个簇的最优划分问题上。
1、找到L的K个最小的特征值对应的特征向量,除去最小的那个,还剩下K-1个特征向量
2、使用第一步找到的K-1个特征向量组成矩阵 U,每一列对应一个特征向量,矩阵U就是原图在谱空间上的表征
在这里插入图片描述
3、一行代表一个对应节点的表示向量
4、使用K均值聚类方法来聚合,将图划分为K簇

相关文章:

  • 一个测试岗面了 30 多人,100多个人投简历,真的太卷了,不能再真实了....
  • 准备半年,面试2个月,上岸快手拿个35K应该不算高吧?
  • java计算机毕业设计网课信息管理系统源代码+数据库+系统+lw文档
  • requests库
  • 【C++】-- STL之位图
  • Git 详细安装教程
  • 如何做一个最便宜的小程序?
  • 基于uclinux 的CAN 总线嵌入式驱动编程
  • IPV6基础知识简介
  • 【PE806】Nim on Towers of Hanoi(DP)(生成函数)
  • FFmpeg工具使用总结
  • 打电话用蓝牙耳机什么牌子好?打电话清晰的蓝牙耳机推荐
  • OpenAI 开源语音识别 Whisper
  • 陈齐彦:云原生,抵达元宇宙的数字基石
  • WEB自动化测试(1)—— Cypress 介绍
  • 【前端学习】-粗谈选择器
  • 【跃迁之路】【519天】程序员高效学习方法论探索系列(实验阶段276-2018.07.09)...
  • 【跃迁之路】【733天】程序员高效学习方法论探索系列(实验阶段490-2019.2.23)...
  • Angular Elements 及其运作原理
  • ECMAScript入门(七)--Module语法
  • JavaScript/HTML5图表开发工具JavaScript Charts v3.19.6发布【附下载】
  • Java面向对象及其三大特征
  • SpiderData 2019年2月13日 DApp数据排行榜
  • TCP拥塞控制
  • 让你成为前端,后端或全栈开发程序员的进阶指南,一门学到老的技术
  • 收藏好这篇,别再只说“数据劫持”了
  • 我有几个粽子,和一个故事
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  •  一套莫尔斯电报听写、翻译系统
  • 用jquery写贪吃蛇
  • 怎么把视频里的音乐提取出来
  • 3月27日云栖精选夜读 | 从 “城市大脑”实践,瞭望未来城市源起 ...
  • python最赚钱的4个方向,你最心动的是哪个?
  • 阿里云移动端播放器高级功能介绍
  • 如何在招聘中考核.NET架构师
  • # include “ “ 和 # include < >两者的区别
  • #stm32整理(一)flash读写
  • (2022 CVPR) Unbiased Teacher v2
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (pt可视化)利用torch的make_grid进行张量可视化
  • (附源码)springboot宠物医疗服务网站 毕业设计688413
  • (附源码)计算机毕业设计ssm本地美食推荐平台
  • (每日持续更新)jdk api之StringBufferInputStream基础、应用、实战
  • (四)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)
  • (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】...
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • .MSSQLSERVER 导入导出 命令集--堪称经典,值得借鉴!
  • .netcore如何运行环境安装到Linux服务器
  • .NET框架
  • .NET中两种OCR方式对比
  • //解决validator验证插件多个name相同只验证第一的问题
  • /3GB和/USERVA开关
  • @RequestParam @RequestBody @PathVariable 等参数绑定注解详解
  • @RestControllerAdvice异常统一处理类失效原因