[datawhale202302]CS224W图机器学习:图的基本表示及特征工程

27 篇文章 1 订阅
文章介绍了图的基本表示,包括无向图、有向图、异质图和二分图,以及图的性质如节点度和连通性。图的表示方法有邻接矩阵和邻接列表。特征工程方面,重点讨论了节点特征,如度、中心性指标,并提及了连接特征和全图特征的重要性。
摘要由CSDN通过智能技术生成

结论速递

本章涉及了图基本表示及传统的特征工程。
图由节点和连接组成,节点和连接上都可以有不同的属性。根据属性的特点,分为几类不同的图,其中异质图和二分图是比较重要的特殊图。
图可以用邻接矩阵进行结构化表示,如果图过于稀疏,也可以使用连接列表和邻接列表来表示。图的节点度、图的连接性是图非常重要的性质,他们都可以从邻接矩阵中直观计算得到。
图的传统特征工程分为节点的、边的、还有全图的特征工程。度、连接和graphlet是贯穿始终的重要概念。

前情提要

  1. 图机器学习导论

1 图的基本表示

图由节点和连接组成。

在这里插入图片描述

1.1 图的本体设计

图的本体Ontology设计:设计好节点、连接的种类,包含的信息、可能存在的取值。

  • 本体的设计应该在导入数据之前完成,导入数据后具体的图是这个抽象本体
  • 设计图的本体应该根据将来想要用这张图解决的问题类型来进行。

1.2 图的种类

根据边的方向可以分为:

  • 无向图(箭头无向)
  • 有向图

一些结构比较复杂,但常见的图包括:

  • 异质图heterogeneous graph:节点、连接存在不同的类型
  • 二分图bipartite graph:两种节点,同类节点内部无连接
    • 可以将二分图展开Folded network:对一类节点,把与同一个另外一类节点有关系的节点相连,变成两张只有同类节点的图

      在这里插入图片描述

此外如果根据边是否有权重,还可以分为无权图和有权图;如果无向图中节点存在自己连向自己的边,则为self-loop,两个节点间存在多条边,则为multigraph。

1.3 图的性质

1.3.1 节点连接数

  • 度(Degree):有多少个节点与该节点相连
    • 无向图:与该节点相连的边数
    • 有向图:分为进和出(进一步可以区分源与汇)
  • 节点平均度:图中所有节点的平均连接数是多少。
    • 无向图: k = E 2 N k = \frac{E}{2N} k=2NE
    • 有向图: k = E N k = \frac{E}{N} k=NE

上述两个概念对有向图和无向图有不同的计算方式。

1.3.2 图的基本表示

将图变成结构化的矩阵形式,充分利用矩阵运算的能力。

  • 邻接矩阵:可以用邻接矩阵来表示一个图,无向图的邻接矩阵为对称矩阵,有向图则为非对称。

由于图的节点非常多,但存在的连接或许并不多,则整个矩阵将非常稀疏,此时可以考虑使用连接列表,邻接列表来稀疏化表示。

  • 连接列表:记录有连接的节点对。具体实现为python中一系列的tuple(三元组)。

  • 邻接列表:记录对每一个节点来说,指向的下一个节点。具体实现为python中的一系列的dict。

    在这里插入图片描述

可以补上代码实战

1.3.3 图的连通性

对无向图,如果

  • 连通图connected graph:任意两个节点间都有一条路径可以连通。

  • 非连通图disconnected graph:由多个连通域(连通的子图)构成,但不满足连通图的要求,其中连通域称为connected component,最大连通域giant component,离群点isolated node。

    非连通图在邻接矩阵中,可以整理为分块对角的形式,如果打破了这一形式,就会成为连通图。

    在这里插入图片描述

在有向图中有相似的概念:

  • 强连通图strongly connected graph:方向严格联通
  • 弱连通图weakly connected graph:忽略方向时联通

同样也有强连通域等。

1.4 思考题

  • 举几个Heherogeneous Graph(异质图)的例子
    人发表论文的发表网络,人和论文属于不同性质的节点。
  • 异质图和普通图有什么区别?
    异质图上节点的性质不同,普通图节点的性质往往是一致的。
  • 举几个Bipartite Graph(二分图)的例子
    人发表论文的发表网络。
  • 举几个有向图的例子
    食物链;电视剧中的人物关系(人物间存在单向关系比如:仇恨、暗恋等)。
  • 如何设计本体图Ontology?
    先抽象自己要研究的问题,确定哪些作为节点、哪些作为边,设计需要哪些属性。
  • 为什么要把图表示成矩阵?
    方便计算机处理。近些年来计算机矩阵运算的算力和计算速度飞速发展,将图表示为矩阵可以有效利用计算机的运算能力。
  • 如何从连通域的角度,理解“六度空间”理论:世界上任意两个人,可以通过不超过六个中间人,相互认识。
    世界上所有的人都在同一个连通域内,任意两人的连通最短路径将经过中间节点的数量不超过六个。
  • 为什么很多真实场景的图都是稀疏的?
    真实场景中节点和节点间连接的关系并不会很密集,图的平均节点度也并不会很高。

2 图特征工程(传统方法,针对无向图)

传统方法包括:人工特征工程、机器学习。

为什么需要特征工程?

因为节点层面、连接层面、子图/全图层面都需要提取特征成为向量/矩阵才能给计算机处理。

邻接矩阵不够吗?

不够。因为节点、边都可以有一系列的attributes,如权重、类型、排名、甚至是多模态的特征等,这些称之为属性特征。此外,还有在图中,节点和边、节点与节点之间的连接关系,这些称之为连接特征。邻接矩阵过于离散,需要特征描述来补充信息。

此处特征工程主要涉及连接特征。合理的特征工程将帮助传统机器学习方法发挥更好的效果。

2.1 节点的特征

2.1.1 特征种类

即描述:节点在图中扮演什么角色。

机器学习任务:输入某个节点的D维向量,输出该节点是某类的概率。

在这里插入图片描述

可以构造如下特征:

  • 节点度:只看数量、不看质量。邻接矩阵按行/列加起来就可以

  • 节点重要程度node centrality

    • eigenvector centrality:特征向量节点重要度,节点在图中越中心,则节点越重要。(PageRank和这个有点接近,有什么区别?)

      相邻节点的重要度求和, c v = 1 λ ∑ u ∈ N ( v ) c u c_v = \frac{1}{\lambda} \sum_{u \in N(v)}{c_u} cv=λ1uN(v)cu

      这是一个递归求和问题。

      可以等价成,求邻接矩阵A的特征向量c λ c = A c \lambda c =A c λc=Ac.

      在这里插入图片描述

    • betweenness centrality:节点是否在必经之地,是否为交通枢纽

      对某一个节点,图中不含它的节点对连通最短路径经过它的比例

      c v = ∑ s ! = v ! = t 连通节点对最短路径经过 v 的数量 节点对数 c_v = \sum_{s != v != t} \frac{连通节点对最短路径经过v的数量}{节点对数} cv=s!=v!=t节点对数连通节点对最短路径经过v的数量

    • closeness centrality:某个节点是不是去哪儿都近

      某一节点到其它节点的最短路径之和的倒数。

      c v = 1 ∑ u ! = v 节点 v 到其它节点 v 的最短路径 c_v = \frac{1}{\sum_{u != v}节点v到其它节点v的最短路径} cv=u!=v节点v到其它节点v的最短路径1

  • 集群系数clustering coefficient:衡量一个节点周围有多抱团

    某一节点的邻接节点两两也相连的比例。

    e v = 邻接节点两两相连数(三角形个数) C k v 2 e_v = \frac{邻接节点两两相连数(三角形个数)}{C_{k_v}^2} ev=Ckv2邻接节点两两相连数(三角形个数)

  • graphlets:统计预定义子图形状(连接形式)

    ego-network自我中心网络(三角形作为子图),周围子图可能构成的形状称为graphlet(有点像同分异构体可能的构成,只不过只考虑C不考虑H)。

    • Graphlet Degree Vector(GDV):对某一个节点,提取其周围不同graphlet角色(预先定义好)的节点个数

      在这里插入图片描述

      上述案例,统计附近5个节点,graphlet种类是upto3(也包括2)

      graphlet的模式是定义好的,相当于构造对应graphlet形式的直方图。

      在这里插入图片描述

      GDV是一种非常全面的对连接信息的描述。

      在networkX里称为Atlas。

2.1.2 用途

如果要分析节点的重要程度:

  • node degree
  • node centrality

除此之外还有,PageRank, Katz Centrality,HITS Hubs and Authorities

如果要分析节点周围局部邻域的拓扑连接结构:

  • node degree
  • clustering coefficient
  • graphlet count vector

2.1.3 思考题

standfor官方的思考题,描述了当前节点特征的局限性,即无法对图分片进行特征描述,后面的特征提取方法会继续涉及到这一部分。

在这里插入图片描述

2.2 连接的特征

即,提取连接的特征,把link变成D维向量,表征连接结构信息。

机器学习任务:通过已知的连接去补全未知的连接。

  • 可能是同一时刻的有连接缺失补全,如蛋白质、分子
  • 可能是预测下一个时刻会产生的新连接,如论文引用网络

在这里插入图片描述

如:你可能认识的人
工作流大致如下:

提取连接特征为D维向量,送入到机器学习模型中去做预测,得到一个分数,从而来判断连接是否存在。

在这里插入图片描述

连接的特征分为三类:

  • 基于两节点距离distance-based feature:

    • 最短路径长度shortest-path distance between two nodes
      缺点:忽略了路径经过edge的数量和通路的结构
  • 基于两节点局部连接信息local neighborhood overlap:
    缺点:无法衡量两个没有共同邻域节点之间的关系

    • 共同好友个数common neighbors
    • 交并比Jaccard’s coefficient:周围邻域节点集的交集比上并集
    • Adamic-Adar index:A和B的共同邻域节点的连接数的倒数(共同好友是不是社牛),数值越大那么说明联系紧密(共同好友是个社恐,他们可能比较亲密)
  • 基于两节点在全图的连接信息global neighborhood overlap:

    • Katz index:节点u和v之间,长度为k的路径个数
      用邻接矩阵的power(幂)来计算:n次幂即为n-1个中间节点。

      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述

    节点u和节点v之间长度为k的路径个数就是第u行第v列的元素。

    如果需要编程,则按照下面的思路来计算会更便捷。

    在这里插入图片描述

2.3 全图的特征

提取一个d维向量,反映全图特征。

核心思路依然是数数,数某一类的子图出现了多少次(Bag of Word,这个思路来源于自然语言处理)。

  • Bag of node degrees,只看节点连接数,不看节点,也不看连接结构。如下图,即采集子图不同节点度个数的节点。

    在这里插入图片描述

  • Bag of graphlet & Graphlet Kernel:相较于node degree而言,允许孤立节点的统计,同时是全图的统计,而非子图的统计。

    在这里插入图片描述

    把两张图得到的特征向量做数量积,可以得到一个标量,这个标量可以评价两个图是否足够相近,是否匹配。(Graphlet Kernel
    如果两张图不一样大,那就做一个归一化。
    这个方法的缺点是:做子图匹配是一个非常消耗时间及算力的(是NP-Hard问题),所以不常用。

  • Weisfeiler-Lehman Kernel:颜色微调的方法,不断迭代丰富节点词库。
    就是Graph embedding,先不断地将邻接节点的信息聚合到一个节点上,然后做一个哈希。再升阶,进一步聚合节点信息,做哈希。不断重复这一过程(重复k次)。
    则当连接结构一致时,哈希值相同。
    两张图进行同阶的处理,则可以得到两个向量进行数量积(Kernel),并进行比较

    在这里插入图片描述

    这一方法是线性的复杂度。
    可以用gklearn中的函数来完成计算。

    在这里插入图片描述
    这个和消息传递图神经网络中的消息传递范式真的很接近!

参考阅读

  1. cs224w同济子豪兄Github
  2. 斯坦福CS224W图机器学习、图神经网络、知识图谱【同济子豪兄】_哔哩哔哩_bilibili
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

SheltonXiao

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

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

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

打赏作者

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

抵扣说明:

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

余额充值