使用图进行特征提取:最有用的图特征机器学习模型介绍

本文涉及的产品
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
交互式建模 PAI-DSW,每月250计算时 3个月
模型训练 PAI-DLC,5000CU*H 3个月
简介: 使用图进行特征提取:最有用的图特征机器学习模型介绍

640.png

从图中提取特征与从正常数据中提取特征完全不同。图中的每个节点都是相互连接的,这是我们不能忽视的重要信息。幸运的是,许多适合于图的特征提取方法已经创建,这些技术可以分为节点级、图级和邻域重叠级。在本文中,我们将研究最常见的图特征提取方法及其属性。

注意:我的文章结构类似于William L. Hamilton[1]所写的图形学习书籍。

节点级别的特征

从图中获取信息的最简单方法之一是为每个节点创建单独的特性。这些特征可以利用迭代方法从一个较近的邻域和一个较远的K-hop邻域捕获信息。让我们开始吧!

节点的度

640.png

为了计算节点度,将关联边的数量计算到Vr中。

节点度是一个简单的度量指标,可以定义为关联到节点的边数。数学上可以定义为:

640.png

节点度方程[1]

其中A是邻接矩阵,du是节点u的一个度。这个度量常被用作算法的初始化,用于生成更复杂的图级特征,如weisfeler - lehman核。

特征向量中心

640.png

不同的中心。左图说明了特征向量的中心。右图显示了度的中心。


特征向量中心性度量考虑了2个方面:

  • 节点u的重要性
  • 节点u的相邻节点的重要性

换句话说,具有高特征向量中心性的节点应该有许多与其他节点高度连接的邻居。

这个度量背后的数学是基于使用矩阵方程的递推算法,相当复杂。我没有告诉你这个数学方程的细节,但如果你对此感兴趣,[1]对这个话题有一个很好的解释(第19页)。

集聚系数

640.png

计算每个红节点的聚类系数

直观地说,我们可以把这个度量看作是节点组之间连接的紧密程度。它测量节点[1]邻域内闭合三角形的比例。节点u的聚类系数可定义为:

640.png

聚类系数方程,摘自[1]

其中(v1、v2)∈Ɛ意味着节点v1、v2之间的联系。v1和v2被定义为与节点u相邻的任意节点对。

我们可以说它是相邻节点之间的边数与节点的相邻节点数(节点度)[1]的比值。当值接近1时,表示节点u的所有邻居都是相连的(图中左侧的黄圈),当值接近0时,表示节点的邻居之间几乎没有任何联系(图中右侧的黄圈)。

DeepWalk

640.png

DeepWalk以一个图形作为输入,并在R维度中创建节点的输出表示。看看R中的“映射”是如何将不同的簇分开的。

它是一种基于学习的方法,将一个图作为输入,并学习节点[4]的表示和输出。它将语言建模中使用的技术重新应用到图形领域。该算法主要包括两个部分:

  • DeepWalk
  • SkipGram

在DeepWalk中,我们使用一个随机生成器来生成节点的短序列。然后,SkipGram使用生成的节点序列将节点编码到低维空间中。

DeepWalk算法有点难以理解,所以我建议看看他们的原始论文(http://www.perozzi.net/publications/14_kdd_deepwalk.pdf

图的层次特性

如果我们想要获取整个图的信息,而不是查看单个节点,该怎么办呢?幸运的是,有许多可用的方法可以聚合关于整个图的信息。从简单的方法,如邻接矩阵,到更复杂的内核,如weisfeler - lehman内核,或基于路径的内核。从图中提取全局信息的方法有很多种;在本节中,我们将探讨最常见的一些。

邻接矩阵

640.png

邻接矩阵是一个稀疏矩阵,其中“1”表示两个节点之间存在连接。

这是一个常见的特征。是一个稀疏矩阵,它包含关于两个节点之间连接的信息。如果有“1”,则表示两个特定节点之间存在连接。矩阵中的a_ij元素中i是行,j是列,表示节点Vi和Vj之间是否有连接。

拉普拉斯矩阵

拉普拉斯矩阵包含与邻接矩阵相同的关于连通性的信息,但方式略有不同。简单定义为:

640.png

拉普拉斯算子的矩阵方程。L -拉普拉斯矩阵,D度矩阵,A -邻接矩阵

式中,L为拉普拉斯矩阵,D为度矩阵,A为邻接矩阵。度矩阵是一个简单的对角矩阵,对角线上的每个元素表示每个节点有多少个邻居。

节点的度量

它不是一个单一的度量,而是一种类型。它背后的算法非常简单——我们只是以[1]的某种方式聚合节点级别的特性。例如,我们可以取节点度数的平均值,或者取边缘连接的直方图。

Weisfeiler-Lehman内核

WL内核是对节点度量方法的改进,在这种方法中,我们从节点的邻近点迭代地聚合信息[1]。

该算法可归纳为以下几个步骤[1]:

  • 为图中的每个节点设置一个初始标签,例如节点的度数
  • 使用邻域的散列标签,通过迭代为每个节点分配新标签
  • 经过K次迭代,我们现在已经收集了K-hop邻域的信息。然后我们可以使用任何类型的节点度量来总结这些新标签

这个内核在化学信息学中应用非常广泛,它经常应用于分子数据。例如,循环指纹算法就是基于WL核的。

Graphlet内核

640.png

从图中计算所有可能的核大小为3的图。

Graphlet构造大小k∈{3,4,5}的小子图。graphlet内核背后的思想很简单:遍历所有图可能是一个NP难问题,因此通过其他的技术,比如对固定数量的图形进行采样,以降低计算复杂度[5]。在数学上,graphlet kernel定义如下:

640.png

graphlet内核的定义。G - 图, G ' - 另一张图, f_G -向量,其中第i个分量对应于graphlet_i的出现。

G和G '是我们可以比较的不同的图。f_G和f_G '是向量,其中第i个元素对应于某个graphlet_i[5]的出现频率。我们可以将这些向量归一化,以考虑较小尺寸的图形[5]的较高频率计数:

Graphlet核在生物信息学和化学信息学中被广泛使用,在这些领域中,了解用图表示的分子中某些子结构出现的频率特别有用。

基于路径的内核

基于路径的核通过在图的标记节点和边缘上应用随机漫步或最短路径来创建特征向量[7,8]。这个内核的算法与graphlet内核类似,但是我们研究的不是graphlet,而是图中的不同路径[1]。使用随机漫步的基于路径的内核将检查随机生成的路径。那些基于最短路径的,只研究连接两个节点的最短路径。

优秀算法

还有更多的算法/模型可以创建图形级别的特性。其他包括GraphHopper内核、神经消息传递或图卷积网络。

社区重叠特征

节点级和图级特性无法收集邻近节点之间的相关信息[1]。邻域重叠特征帮助我们预测两个节点之间是否有连接及其类型,并测量了图中局部和全局的重叠。

区域重叠

局部重叠度量是量化两个节点之间邻域的相似性的度量。这些度量标准中的大多数都非常相似,只是在标准化常数方面略有不同[1]。

例如,节点u与v之间的Sorenson索引计算公式如下:

640.png

节点u和v之间的索伦森指数方程中的分子计算这些节点之间的共同邻居。分母是一个标准化常数,是节点度数的总和。

分子项计算这些节点之间的共同邻居。分母项(d_u + d_v)/2是节点度数的平均值。

另一个度量标准,如Salton索引、Hub提升索引或Jaccard索引与Sorensen索引的不同之处在于标准化常数。

一个稍微不同的度量是资源分配(RA)索引。它度量了节点u和v之间共同邻居的重要性[1]。它是通过对所有共同邻居的节点度的倒数求和来实现的。

640.png

资源分配索引。

全局重叠

640.png

全局重叠度量检查节点是否属于图中的同一个社区。

如果某些节点属于图中的同一社区,则全局重叠度量将获取该信息。我们不再只关注两个相邻的节点,而是查看来自更遥远的邻域的节点,并检查它们是否属于图中相同的社区。

常用的方法之一是Katz索引,它计算两个特定节点之间所有可能的路径:

640.png

Katz索引。

邻接矩阵A有一个有趣的性质。它的i次幂表示在两个节点uv之间是否有一条长度为i的路径[10]。β一种标准化常数,在这里我们可以选择路径长度(即短或长)。

节点的度越高[1],Katz指数就会产生越高的相似度得分。为了克服这一问题,提出了考虑这种偏差的LHN相似度度量:

640.png

LHN相似性度量。

该度量通过邻接矩阵的期望值进行标准化。

总结

我们已经看到了可以从图中提取的三种主要类型的特征:节点级、层次级和邻域重叠特征。节点级特征(如节点度)或特征向量中心性为每个单独的节点生成特征,而图级特征(如WL或Graphlet内核)从整个图中捕获信息。邻域重叠特征,例如,Sorensen索引或LHN相似性,创建了度量两个节点之间共同邻域的特征。

在本文中,我总结了最流行的图形特征提取方法。当然,还有很多,我没有在这里说。如果你想深入了解这个话题,你可以在参考资料部分找到非常有用的文献:)

感谢您阅读本文。我希望这对你有用!

引用

[1] Graph Representation Learning Book by William L. Hamilton

[2] On Node Features for Graph Neural Networks

[3] Survey on Graph Kernels

[4] DeepWalk: Online Learning for Social Representations

[5] Efficient graphlet kernels for large graph comparison

[6] Graphlet Kernels (ETH Lecture Notes)

[7] Marginalized Kernels Between Labelled Graphs

[8] Shortest-path kernels on graphs

[9] Community structure in social and biological networks

[10] Katz Centrality within a social network.)

目录
相关文章
|
1月前
|
机器学习/深度学习 数据采集 数据挖掘
实战派教学:掌握Scikit-learn,轻松实现数据分析与机器学习模型优化!
【10月更文挑战第4天】Scikit-learn凭借高效、易用及全面性成为数据科学领域的首选工具,简化了数据预处理、模型训练与评估流程,并提供丰富算法库。本文通过实战教学,详细介绍Scikit-learn的基础入门、数据预处理、模型选择与训练、评估及调优等关键步骤,助你快速掌握并优化数据分析与机器学习模型。从环境搭建到参数调优,每一步都配有示例代码,便于理解和实践。
91 2
|
2月前
|
机器学习/深度学习 人工智能 分布式计算
使用PAI+LLaMA Factory 微调 Qwen2-VL 模型,搭建文旅领域知识问答机器人
本次教程介绍了如何使用 PAI ×LLaMA Factory 框架,基于全参方法微调 Qwen2-VL 模型,使其能够进行文旅领域知识问答,同时通过人工测试验证了微调的效果。
使用PAI+LLaMA Factory 微调 Qwen2-VL 模型,搭建文旅领域知识问答机器人
|
1月前
|
机器学习/深度学习 数据采集 监控
如何使用机器学习模型来自动化评估数据质量?
【10月更文挑战第6天】如何使用机器学习模型来自动化评估数据质量?
|
7天前
|
机器学习/深度学习 人工智能 算法
探索机器学习中的线性回归模型
本文深入探讨了机器学习中广泛使用的线性回归模型,从其基本概念和数学原理出发,逐步引导读者理解模型的构建、训练及评估过程。通过实例分析与代码演示,本文旨在为初学者提供一个清晰的学习路径,帮助他们在实践中更好地应用线性回归模型解决实际问题。
|
16天前
|
机器学习/深度学习 数据采集 监控
如何使用机器学习模型来自动化评估数据质量?
如何使用机器学习模型来自动化评估数据质量?
|
12天前
|
机器学习/深度学习 人工智能 算法
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
手写数字识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Flask框架,开发网页端操作平台,实现用户上传一张图片识别其名称。
44 0
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
|
16天前
|
机器学习/深度学习 算法 PyTorch
用Python实现简单机器学习模型:以鸢尾花数据集为例
用Python实现简单机器学习模型:以鸢尾花数据集为例
40 1
|
1月前
|
数据采集 移动开发 数据可视化
模型预测笔记(一):数据清洗分析及可视化、模型搭建、模型训练和预测代码一体化和对应结果展示(可作为baseline)
这篇文章介绍了数据清洗、分析、可视化、模型搭建、训练和预测的全过程,包括缺失值处理、异常值处理、特征选择、数据归一化等关键步骤,并展示了模型融合技术。
68 1
模型预测笔记(一):数据清洗分析及可视化、模型搭建、模型训练和预测代码一体化和对应结果展示(可作为baseline)
|
26天前
|
机器学习/深度学习 数据采集 Python
从零到一:手把手教你完成机器学习项目,从数据预处理到模型部署全攻略
【10月更文挑战第25天】本文通过一个预测房价的案例,详细介绍了从数据预处理到模型部署的完整机器学习项目流程。涵盖数据清洗、特征选择与工程、模型训练与调优、以及使用Flask进行模型部署的步骤,帮助读者掌握机器学习的最佳实践。
68 1
|
29天前
|
机器学习/深度学习 数据采集 监控
如何使用机器学习模型来自动化评估数据质量?
如何使用机器学习模型来自动化评估数据质量?

相关产品

  • 人工智能平台 PAI
  • 下一篇
    无影云桌面