图网络入门

目录

图网络基础知识

Graph Embedding

基础图网络模型

GCN

GraphSAGE

GAT

其他图网络模型


图网络基础知识

图网络的应用场景有很多,目前在工业界的主要应用是在推荐和风控领域,其他包括社交网络、交通网络、化学分子、3D点云等也都有一些应用。

关于图这种数据结构的基础知识:

一张图又节点和边组成,边可以是有方向的,也可是无方向的,因此图可以分为有向图和无向图。

图的基本属性:度(degree),连通分量,图直径,度中心性,特征向量中心性,节点连接性(betweenness),节点中心性(closeness),pagerank,HITS

邻接矩阵 A

图网络的计算是直接基于图进行的,整个计算是沿着图结构进行的,能够有效保留和利用图上的结构信息。图网络的主要优点有:利于端到端的学习、擅长推理、可解释性强。

定义一张图的方法:

import numpy as np
import pandas as pd
import networkx as nx  # 复杂网络建模的一个工具包

edges = pd.DataFrame()
edges['sources'] = [1,1,1,2,2,3,3,4,4,5,5,5]  # 起始节点,(每条边)
edges['targets'] = [2,4,5,3,1,2,5,1,5,1,3,4]  # 终止节点,(每条边的终点)
edges['weights'] = [1,1,1,1,1,1,1,1,1,1,1,1]  # 每条边的权重

# 定义一张图
G = nx.from_pandas_edgelist(edges, source='sources', target='targets', edge_attr='weights')

Graph Embedding

前面的代码用于定义一张图结构,在实际场景中,直接这样使用会比较低效,因此会像NLP中将每个单词由 one-hot 编码转换成词向量一样,我们希望获取图中每个节点的表征向量,这种方法成为graph embedding,即基于图结构的数据挖掘。

graph embedding 的目的是获取图的每个节点的表征,理解为自然语言处理中每个词向量的表征。经典的 graph embedding 方法有以下几种。

DeepWalk

论文:DeepWalk: Online Learning of Social Representations KDD 2014 (星标)

LINE

论文:Line: Large-scale information network embedding WWW 2015 (星标)

SDNE

论文:Structural Deep Network Embedding  KDD 2016

Node2vec

论文: node2vec: Scalable Feature Learning for Networks KDD 2016 (星标)

Struc2vec

论文:struc2vec: Learning Node Representations from Structural Identity  KDD 2017

github 链接:https://github.com/shenweichen/GraphEmbedding 这个链接里面有以上5种方法的代码整理。

基础图网络模型

基础图网络模型主要有三个,分别是GCN、GAT、GraphSAGE。

目前,基础图网络模型主要分为基于频谱域模型和基于时空域的图网络模型。其中图卷积网络属于频谱域图网络,图注意力网络GAT和GraphSAGE属于时空域图网络模型。

GCN

论文:SEMI-SUPERVISED CLASSIFICATION WITH GRAPH CONVOLUTIONAL NETWORKS  ICLR 2017

图卷积网络GCN 是频谱域的方法,过程是不断聚合邻居节点和自己本身。图网络用在分类任务中,给每个节点进行分类,GCN 的整个过程是为了学习每个节点的 embedding 表示。

GCN(频谱域图网络模型)涉及到的数学基础知识较多一些,理解起来相对麻烦一些。主要的思想是需要通过图谱的邻接矩阵A和度矩阵D获得图谱的拉普拉斯矩阵L,然后对图谱的拉普拉斯矩阵进行特征值分解,并得到特征值对应的特征向量。此外还涉及到傅里叶变换、图信号的频谱分解、频率、基波等与特征值、特征向量之间的关系等等。图卷积网络涉及的数学知识更为繁多,也更具数学上的美感,由于笔者目前的水平有限,本文中暂时不对GCN进行更详细的介绍。(先挖一个坑,以后有机会来填)

GraphSAGE

论文:Inductive Representation Learning on Large Graphs  NIPS 2017

主要思想:采样(sample)+聚合(aggregate),时空域方法。

GAT

图注意力网络

论文:GRAPH ATTENTION NETWORKS. ICLR 2018

代码: https://github.com/Diego999/pyGAT

主要思想:聚合节点周围的邻居节点的信息,考虑不同邻居节点的权重。

在图机构上使用注意力机制,如下图所示:

GAT 中使用的是多头注意力机制,如下图所示:

关于GAT更详细的介绍,请关注笔者的另一篇博客:GAT论文阅读笔记-源码解读_xueliang-CSDN博客

其他图网络模型

除了上面三种最基础的图网络模型之外,还有一些其他的图网络模型,包括异构图、二部图、符号图、动态图、超图等。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值