搜尋
首頁科技週邊人工智慧圖嵌入概述:節點、邊和圖嵌入方法及Python實現

近年來基於圖的機器學習有了很大的發展。基於圖的方法在資料科學中的許多常見問題中都有應用,例如連結預測、社群發現、節點分類等。根據如何組織問題和所擁有的數據,有許多解決問題的方法。本文將提供一個基於圖的嵌入演算法的高層次的概述。最後也將介紹如何用Python庫(如node2vec)來在圖上產生各種嵌入。

圖嵌入概述:節點、邊和圖嵌入方法及Python實現


#基於圖的機器學習

人工智慧有各種分支,從推薦系統、時間序列、自然語言處理、電腦視覺、圖機器學習等。有多種方法可以透過基於圖的機器學習來解決常見問題。包括社群發現、連結預測、節點分類等。

與圖機器學習的一個主要問題是找到一種表示(或編碼)圖結構的方法,以便機器學習模型可以輕鬆地利用它[1]。一般情況下機器學習中解決這個問題需要透過與模型相關聯的結構化表格資料來學習某種表示,這在以前是透過統計測量或核函數來進行的。近年來趨勢已經轉向對圖進行編碼以產生嵌入向量來訓練機器學習模型。

機器學習模型的目標是訓練機器在資料集中大規模學習和模式識別。在處理圖時這一點會被放大,因為圖提供不同而複雜的結構,這是其他形式的資料(如文字、音訊或圖像)所不具備的。基於圖的機器學習可以偵測並解釋重複出現的潛在模式[2]。

我們可能對確定與社交網路上的使用者相關的人口統計資訊感興趣。人口統計資料包括年齡、性別、種族等。像Facebook或Twitter這樣的公司的社交媒體網絡範圍從數百萬-數十億的用戶和數萬億的邊。肯定會有幾個與該網路中使用者的人口統計資訊相關的模式,這些模式不容易透過人類或演算法檢測到,但模型應該能夠學習它們。類似地,我們可能想推薦一對用戶成為朋友,而他們目前還不是朋友。這就為連結預測(基於圖的機器學習的另一個應用)提供了素材。

什麼是圖嵌入?

特徵工程是指處理輸入資料形成一組特徵的常用方法,這些特徵提供了原始資料集的緊湊且有意義的表示。特徵工程階段的結果將作為機器學習模型的輸入。這是在表格結構化資料集的處理時必備的過程,但在處理圖資料時卻是一種難以執行的方法,因為需要找到一種方法來產生與所有圖資料相關聯的合適表示。

有多種方法可以從圖中產生表示結構資訊的特徵。最常見且最直接的方法是從圖中提取統計資料。這可以包括識別度分佈、page rank、centrality metrics、jaccard 分數等。然後透過內核函數將所需屬性合併到模型中,但是核函數的問題是產生結果的相關時間複雜度很高。

最近的研究趨勢已經轉向尋找有意義的圖表示,對圖生成嵌入表示。這些嵌入學習了保持網路原始結構的圖表示。我們可以將其視為旨在將離散圖轉換為連續域的映射函數。一旦學習了函數,就可以將其應用於圖,並且生成的映射可以用作機器學習演算法的特徵集 。

圖嵌入的類型

對圖的分析可以分解為 3 個粒度等級。節點層級、邊緣層級和圖層級(整個圖)。每個層級由產生嵌入向量的不同流程組成,所選過程應取決於正在處理的問題和資料。下面介紹的每個粒度等級的嵌入都有附圖來直觀地彼此不同。

節點嵌入

在節點級別,產生與圖中的每個節點關聯的嵌入向量。這個嵌入向量可以容納圖的表示和結構。本質上說彼此接近的節點也應該有彼此接近的向量。這是流行的節點嵌入模型(如Node2Vec)的基本原則之一。

圖嵌入概述:節點、邊和圖嵌入方法及Python實現

邊嵌入

在邊緣層中,產生一個與圖中的每條邊相關的嵌入向量。鏈路預測問題是使用邊嵌入的一個常見應用。連結預測是指預測一對節點之間是否有一條邊連接的可能性。這些嵌入可以學習圖提供的邊屬性。例如在一個社交網路圖中,可以有一個多邊圖,其中節點可以根據年齡範圍、性別等用邊連接。表示該邊的相關向量可以學習這些邊屬性。

圖嵌入概述:節點、邊和圖嵌入方法及Python實現

圖嵌入

圖層級的嵌入並不常見,它們包括產生一個表示每個圖的嵌入向量。例如一個有多個子圖的大圖,每個對應的子圖都有一個表示圖結構的嵌入向量。分類問題是圖嵌入可能有用的常見應用。這些類型的問題將包括將圖表分類到特定類別。

圖嵌入概述:節點、邊和圖嵌入方法及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()

圖嵌入概述:節點、邊和圖嵌入方法及Python實現

#上圖是由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()

圖嵌入概述:節點、邊和圖嵌入方法及Python實現

#透過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()

圖嵌入概述:節點、邊和圖嵌入方法及Python實現

#這是一個由隨機產生的圖的圖嵌入可視化,graph2vec演算法的源代碼可以在這裡找到。 (https://karateclub.readthedocs.io/en/latest/_modules/karateclub/graph_embedding/graph2vec.html)

總結

#嵌入是一個將離散圖對應到向量表示的函數。從圖資料中可以產生多種形式的嵌入,節點嵌入、邊嵌入和圖嵌入。所有三種類型的嵌入都提供了一種向量表示,將圖的初始結構和特徵映射到X維的數值。

以上是圖嵌入概述:節點、邊和圖嵌入方法及Python實現的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:51CTO.COM。如有侵權,請聯絡admin@php.cn刪除
解读CRISP-ML(Q):机器学习生命周期流程解读CRISP-ML(Q):机器学习生命周期流程Apr 08, 2023 pm 01:21 PM

译者 | 布加迪审校 | 孙淑娟目前,没有用于构建和管理机器学习(ML)应用程序的标准实践。机器学习项目组织得不好,缺乏可重复性,而且从长远来看容易彻底失败。因此,我们需要一套流程来帮助自己在整个机器学习生命周期中保持质量、可持续性、稳健性和成本管理。图1. 机器学习开发生命周期流程使用质量保证方法开发机器学习应用程序的跨行业标准流程(CRISP-ML(Q))是CRISP-DM的升级版,以确保机器学习产品的质量。CRISP-ML(Q)有六个单独的阶段:1. 业务和数据理解2. 数据准备3. 模型

2023年机器学习的十大概念和技术2023年机器学习的十大概念和技术Apr 04, 2023 pm 12:30 PM

机器学习是一个不断发展的学科,一直在创造新的想法和技术。本文罗列了2023年机器学习的十大概念和技术。 本文罗列了2023年机器学习的十大概念和技术。2023年机器学习的十大概念和技术是一个教计算机从数据中学习的过程,无需明确的编程。机器学习是一个不断发展的学科,一直在创造新的想法和技术。为了保持领先,数据科学家应该关注其中一些网站,以跟上最新的发展。这将有助于了解机器学习中的技术如何在实践中使用,并为自己的业务或工作领域中的可能应用提供想法。2023年机器学习的十大概念和技术:1. 深度神经网

基于因果森林算法的决策定位应用基于因果森林算法的决策定位应用Apr 08, 2023 am 11:21 AM

译者 | 朱先忠​审校 | 孙淑娟​在我之前的​​博客​​中,我们已经了解了如何使用因果树来评估政策的异质处理效应。如果你还没有阅读过,我建议你在阅读本文前先读一遍,因为我们在本文中认为你已经了解了此文中的部分与本文相关的内容。为什么是异质处理效应(HTE:heterogenous treatment effects)呢?首先,对异质处理效应的估计允许我们根据它们的预期结果(疾病、公司收入、客户满意度等)选择提供处理(药物、广告、产品等)的用户(患者、用户、客户等)。换句话说,估计HTE有助于我

使用PyTorch进行小样本学习的图像分类使用PyTorch进行小样本学习的图像分类Apr 09, 2023 am 10:51 AM

近年来,基于深度学习的模型在目标检测和图像识别等任务中表现出色。像ImageNet这样具有挑战性的图像分类数据集,包含1000种不同的对象分类,现在一些模型已经超过了人类水平上。但是这些模型依赖于监督训练流程,标记训练数据的可用性对它们有重大影响,并且模型能够检测到的类别也仅限于它们接受训练的类。由于在训练过程中没有足够的标记图像用于所有类,这些模型在现实环境中可能不太有用。并且我们希望的模型能够识别它在训练期间没有见到过的类,因为几乎不可能在所有潜在对象的图像上进行训练。我们将从几个样本中学习

LazyPredict:为你选择最佳ML模型!LazyPredict:为你选择最佳ML模型!Apr 06, 2023 pm 08:45 PM

本文讨论使用LazyPredict来创建简单的ML模型。LazyPredict创建机器学习模型的特点是不需要大量的代码,同时在不修改参数的情况下进行多模型拟合,从而在众多模型中选出性能最佳的一个。 摘要本文讨论使用LazyPredict来创建简单的ML模型。LazyPredict创建机器学习模型的特点是不需要大量的代码,同时在不修改参数的情况下进行多模型拟合,从而在众多模型中选出性能最佳的一个。​本文包括的内容如下:​简介​LazyPredict模块的安装​在分类模型中实施LazyPredict

Mango:基于Python环境的贝叶斯优化新方法Mango:基于Python环境的贝叶斯优化新方法Apr 08, 2023 pm 12:44 PM

译者 | 朱先忠审校 | 孙淑娟引言模型超参数(或模型设置)的优化可能是训练机器学习算法中最重要的一步,因为它可以找到最小化模型损失函数的最佳参数。这一步对于构建不易过拟合的泛化模型也是必不可少的。优化模型超参数的最著名技术是穷举网格搜索和随机网格搜索。在第一种方法中,搜索空间被定义为跨越每个模型超参数的域的网格。通过在网格的每个点上训练模型来获得最优超参数。尽管网格搜索非常容易实现,但它在计算上变得昂贵,尤其是当要优化的变量数量很大时。另一方面,随机网格搜索是一种更快的优化方法,可以提供更好的

人工智能自动获取知识和技能,实现自我完善的过程是什么人工智能自动获取知识和技能,实现自我完善的过程是什么Aug 24, 2022 am 11:57 AM

实现自我完善的过程是“机器学习”。机器学习是人工智能核心,是使计算机具有智能的根本途径;它使计算机能模拟人的学习行为,自动地通过学习来获取知识和技能,不断改善性能,实现自我完善。机器学习主要研究三方面问题:1、学习机理,人类获取知识、技能和抽象概念的天赋能力;2、学习方法,对生物学习机理进行简化的基础上,用计算的方法进行再现;3、学习系统,能够在一定程度上实现机器学习的系统。

超参数优化比较之网格搜索、随机搜索和贝叶斯优化超参数优化比较之网格搜索、随机搜索和贝叶斯优化Apr 04, 2023 pm 12:05 PM

本文将详细介绍用来提高机器学习效果的最常见的超参数优化方法。 译者 | 朱先忠​审校 | 孙淑娟​简介​通常,在尝试改进机器学习模型时,人们首先想到的解决方案是添加更多的训练数据。额外的数据通常是有帮助(在某些情况下除外)的,但生成高质量的数据可能非常昂贵。通过使用现有数据获得最佳模型性能,超参数优化可以节省我们的时间和资源。​顾名思义,超参数优化是为机器学习模型确定最佳超参数组合以满足优化函数(即,给定研究中的数据集,最大化模型的性能)的过程。换句话说,每个模型都会提供多个有关选项的调整“按钮

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脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前By尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中