搜索
首页科技周边人工智能图嵌入概述:节点、边和图嵌入方法及Python实现

近年来基于图的机器学习有了很大的发展。基于图的方法在数据科学中的许多常见问题中都有应用,例如链接预测、社群发现、节点分类等。根据如何组织问题和所拥有的数据,有许多解决问题的方法。本文将提供一个基于图的嵌入算法的高层次的概述。最后还将介绍如何用Python库(如node2vec)来在图上生成各种嵌入。

图片


基于图的机器学习

人工智能有各种分支,从推荐系统、时间序列、自然语言处理、计算机视觉、图机器学习等。有多种方法可以通过基于图的机器学习来解决常见问题。包括社群发现、链接预测、节点分类等。

与图机器学习的一个主要问题是找到一种表示(或编码)图结构的方法,以便机器学习模型可以轻松地利用它[1]。一般情况下机器学习中解决这个问题需要通过与模型相关联的结构化表格数据来学习某种表示,这在以前是通过统计测量或核函数来进行的。近年来趋势已经转向对图进行编码以生成嵌入向量来训练机器学习模型。

机器学习模型的目标是训练机器在数据集中大规模学习和模式识别。在处理图时这一点会被放大,因为图提供不同而复杂的结构,这是其他形式的数据(如文本、音频或图像)所不具备的。基于图的机器学习可以检测并解释重复出现的潜在模式[2]。

我们可能对确定与社交网络上的用户相关的人口统计信息感兴趣。人口统计数据包括年龄、性别、种族等。像Facebook或Twitter这样的公司的社交媒体网络范围从数百万-数十亿的用户和数万亿的边。肯定会有几个与该网络中用户的人口统计信息相关的模式,这些模式不容易通过人类或算法检测到,但模型应该能够学习它们。类似地,我们可能想推荐一对用户成为朋友,而他们目前还不是朋友。这就为链接预测(基于图的机器学习的另一个应用)提供了素材。

什么是图嵌入?

特征工程是指处理输入数据形成一组特征的常用方法,这些特征提供了原始数据集的紧凑且有意义的表示。特征工程阶段的结果将作为机器学习模型的输入。这是在表格结构化数据集的处理时必备的过程,但在处理图数据时却是一种难以执行的方法,因为需要找到一种方法来生成与所有图数据相关联的合适表示。

有多种方法可以从图中生成表示结构信息的特征。最常见和最直接的方法是从图中提取统计数据。这可以包括识别度分布、page rank、centrality metrics、jaccard 分数等。然后通过内核函数将所需属性合并到模型中,但是核函数的问题是生成结果的相关时间复杂度很高。

最近的研究趋势已经转向寻找有意义的图表示,对图生成嵌入表示。这些嵌入学习了保持网络原始结构的图表示。我们可以将其视为旨在将离散图转换为连续域的映射函数。一旦学习了函数,就可以将其应用于图,并且生成的映射可以用作机器学习算法的特征集 。

图嵌入的类型

对图的分析可以分解为 3 个粒度级别。节点级别、边缘级别和图级别(整个图)。每个级别由生成嵌入向量的不同过程组成,所选过程应取决于正在处理的问题和数据。下面介绍的每个粒度级别的嵌入都有附图来直观地彼此不同。

节点嵌入

在节点级别,生成与图中的每个节点关联的嵌入向量。这个嵌入向量可以容纳图的表示和结构。本质上说彼此接近的节点也应该有彼此接近的向量。这是流行的节点嵌入模型(如Node2Vec)的基本原则之一。

图嵌入概述:节点、边和图嵌入方法及Python实现

边嵌入

在边缘层中,生成一个与图中的每条边相关的嵌入向量。链路预测问题是使用边嵌入的一个常见应用。链接预测是指预测一对节点之间是否有一条边连接的可能性。这些嵌入可以学习图提供的边属性。例如在一个社交网络图中,可以有一个多边图,其中节点可以根据年龄范围、性别等用边连接。表示该边的相关向量可以学习这些边属性。

图片

图嵌入

图级别的嵌入并不常见,它们包括生成一个表示每个图的嵌入向量。例如一个有多个子图的大图,每个对应的子图都有一个表示图结构的嵌入向量。分类问题是图嵌入可能有用的常见应用。这些类型的问题将包括将图分类到特定类别。

图片

Python实现

使用python代码实现我们需要以下的这些库

Pythnotallow=3.9
 networkx>=2.5
 pandas>=1.2.4
 numpy>=1.20.1
 node2vec>=0.4.4
 karateclub>=1.3.3
 matplotlib>=3.3.4

如果您没有安装node2vec包,请参考它的文档。安装karateclub包,也类似

节点嵌入

import random
 import networkx as nx
 import matplotlib.pyplot as plt
 
 from node2vec import Node2Vec
 from node2vec.edges import HadamardEmbedder
 from karateclub import Graph2Vec
 
 plt.style.use("seaborn")
 
 # generate barbell network
 G = nx.barbell_graph(
m1 = 13,
m2 = 7
 )
 
 # node embeddings
 def run_n2v(G, dimensions=64, walk_length=80, num_walks=10, p=1, q=1, window=10):
"""
Given a graph G, this method will run the Node2Vec algorithm trained with the
appropriate parameters passed in.
 
Args:
G (Graph) : The network you want to run node2vec on
 
Returns:
This method will return a model
 
Example:
G = np.barbell_graph(m1=5, m2=3)
mdl = run_n2v(G)
"""
 
mdl = Node2Vec(
G,
dimensions=dimensions,
walk_length=walk_length,
num_walks=num_walks,
p=p,
q=q
)
mdl = mdl.fit(window=window)
return mdl
 
 mdl = run_n2v(G)
 
 # visualize node embeddings
 x_coord = [mdl.wv.get_vector(str(x))[0] for x in G.nodes()]
 y_coord = [mdl.wv.get_vector(str(x))[1] for x in G.nodes()]
 
 plt.clf()
 plt.scatter(x_coord, y_coord)
 plt.xlabel("Dimension 1")
 plt.ylabel("Dimension 2")
 plt.title("2 Dimensional Representation of Node2Vec Algorithm on Barbell Network")
 plt.show()

图片

上图是由barbell graph 生成的节点嵌入可视,有许多计算节点嵌入的方法,如node2vec、deep walk、random walks等。这里使用node2vec。

边嵌入

edges_embs = HadamardEmbedder(
keyed_vectors=mdl.wv
 )
 
 # visualize embeddings
 coordinates = [
edges_embs[(str(x[0]), str(x[1]))] for x in G.edges()
 ]
 
 plt.clf()
 plt.scatter(coordinates[0], coordinates[1])
 plt.xlabel("Dimension 1")
 plt.ylabel("Dimension 2")
 plt.title("2 Dimensional Representation of Edge Embeddings on Barbell Network")
 plt.show()

图片

通过barbell graph查看边嵌入的可视化,Hammard Embedder的源代码可以在这里找到(https://github.com/eliorc/node2vec/blob/master/node2vec/edges.py#L91)。

图嵌入

n_graphs = 10
 Graphs = [
nx.fast_gnp_random_graph(
n = random.randint(5,15),
p = random.uniform(0,1)
) for x in range(n_graphs)
 ]
 
 g_mdl = Graph2Vec(dimensions=2)
 g_mdl.fit(Graphs)
 g_emb = g_mdl.get_embedding()
 
 x_coord = [vec[0] for vec in g_emb]
 y_coord = [vec[1] for vec in g_emb]
 
 plt.clf()
 plt.scatter(x_coord, y_coord)
 plt.xlabel("Dimension 1")
 plt.ylabel("Dimension 2")
 plt.title("2 Dimensional Representation of Graph Embeddings on Randomly Generated Networks")
 plt.show()

图片

这是一个由随机生成的图的图嵌入可视化,graph2vec算法的源代码可以在这里找到。(https://karateclub.readthedocs.io/en/latest/_modules/karateclub/graph_embedding/graph2vec.html)

总结

嵌入是一个将离散图映射到向量表示的函数。从图数据中可以生成多种形式的嵌入,节点嵌入、边嵌入和图嵌入。所有三种类型的嵌入都提供了一种向量表示,将图的初始结构和特征映射到X维的数值。

以上是图嵌入概述:节点、边和图嵌入方法及Python实现的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文转载于:51CTO.COM。如有侵权,请联系admin@php.cn删除
您必须在无知的面纱后面建立工作场所您必须在无知的面纱后面建立工作场所Apr 29, 2025 am 11:15 AM

在约翰·罗尔斯1971年具有开创性的著作《正义论》中,他提出了一种思想实验,我们应该将其作为当今人工智能设计和使用决策的核心:无知的面纱。这一理念为理解公平提供了一个简单的工具,也为领导者如何利用这种理解来公平地设计和实施人工智能提供了一个蓝图。 设想一下,您正在为一个新的社会制定规则。但有一个前提:您事先不知道自己在这个社会中将扮演什么角色。您最终可能富有或贫穷,健康或残疾,属于多数派或边缘少数群体。在这种“无知的面纱”下运作,可以防止规则制定者做出有利于自身的决策。相反,人们会更有动力制定公

决策,决策……实用应用AI的下一步决策,决策……实用应用AI的下一步Apr 29, 2025 am 11:14 AM

许多公司专门从事机器人流程自动化(RPA),提供机器人以使重复性任务自动化 - UIPATH,在任何地方自动化,蓝色棱镜等。 同时,过程采矿,编排和智能文档处理专业

代理人来了 - 更多关于我们将在AI合作伙伴旁边做什么代理人来了 - 更多关于我们将在AI合作伙伴旁边做什么Apr 29, 2025 am 11:13 AM

AI的未来超越了简单的单词预测和对话模拟。 AI代理人正在出现,能够独立行动和任务完成。 这种转变已经在诸如Anthropic的Claude之类的工具中很明显。 AI代理:研究

为什么同情在AI驱动的未来中对领导者更重要为什么同情在AI驱动的未来中对领导者更重要Apr 29, 2025 am 11:12 AM

快速的技术进步需要对工作未来的前瞻性观点。 当AI超越生产力并开始塑造我们的社会结构时,会发生什么? Topher McDougal即将出版的书Gaia Wakes:

用于产品分类的AI:机器可以总税法吗?用于产品分类的AI:机器可以总税法吗?Apr 29, 2025 am 11:11 AM

产品分类通常涉及复杂的代码,例如诸如统一系统(HS)等系统的“ HS 8471.30”,对于国际贸易和国内销售至关重要。 这些代码确保正确的税收申请,影响每个INV

数据中心的需求会引发气候技术反弹吗?数据中心的需求会引发气候技术反弹吗?Apr 29, 2025 am 11:10 AM

数据中心能源消耗与气候科技投资的未来 本文探讨了人工智能驱动的数据中心能源消耗激增及其对气候变化的影响,并分析了应对这一挑战的创新解决方案和政策建议。 能源需求的挑战: 大型超大规模数据中心耗电量巨大,堪比数十万个普通北美家庭的总和,而新兴的AI超大规模中心耗电量更是数十倍于此。2024年前八个月,微软、Meta、谷歌和亚马逊在AI数据中心建设和运营方面的投资已达约1250亿美元(摩根大通,2024)(表1)。 不断增长的能源需求既是挑战也是机遇。据Canary Media报道,迫在眉睫的电

AI和好莱坞的下一个黄金时代AI和好莱坞的下一个黄金时代Apr 29, 2025 am 11:09 AM

生成式AI正在彻底改变影视制作。Luma的Ray 2模型,以及Runway的Gen-4、OpenAI的Sora、Google的Veo等众多新模型,正在以前所未有的速度提升生成视频的质量。这些模型能够轻松制作出复杂的特效和逼真的场景,甚至连短视频剪辑和具有摄像机感知的运动效果也已实现。虽然这些工具的操控性和一致性仍有待提高,但其进步速度令人惊叹。 生成式视频正在成为一种独立的媒介形式。一些模型擅长动画制作,另一些则擅长真人影像。值得注意的是,Adobe的Firefly和Moonvalley的Ma

Chatgpt是否会慢慢成为AI最大的Yes-Man?Chatgpt是否会慢慢成为AI最大的Yes-Man?Apr 29, 2025 am 11:08 AM

ChatGPT用户体验下降:是模型退化还是用户期望? 近期,大量ChatGPT付费用户抱怨其性能下降,引发广泛关注。 用户报告称模型响应速度变慢,答案更简短、缺乏帮助,甚至出现更多幻觉。一些用户在社交媒体上表达了不满,指出ChatGPT变得“过于讨好”,倾向于验证用户观点而非提供批判性反馈。 这不仅影响用户体验,也给企业客户带来实际损失,例如生产力下降和计算资源浪费。 性能下降的证据 许多用户报告了ChatGPT性能的显着退化,尤其是在GPT-4(即将于本月底停止服务)等旧版模型中。 这

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境