美文网首页
GNN(一) 图神经网络基本知识

GNN(一) 图神经网络基本知识

作者: blackmanba_084b | 来源:发表于2021-07-12 14:35 被阅读0次

    一、 图的表示

    1.1 按方向划分图表示

    图是由点和边构成的,它可以分为两种表示方法分别是: 1. 有向图 2. 无向图


    1.2 用邻接矩阵来表示图

    1.3 图像的度

    图像的度分为两种:1. 有向图的度 2. 无向图的度
    ①度 可以理解为点之间的连接线 ②入度指向当前节点的连线, 出度当前节点连出去的连线

    二、 图的特性

    2.1 子图(subgraph)

    子图表示某张图的子集


    2.2 连通图 (connected graph)

    对于一个无向图,如果任意的节点i能够通过一些边达到节点j,则称之为连通图


    其中对于图中任意两点都可以相互到达,我们称之为强连通图,反之称为弱连通图。

    2.3 连通分量(connected component)

    可以理解为所有的连通在一起的图算一个连通分量。如上图左边连通分量是1, 右边连通分量是2。

    2.4 最短路径 (shortest path)

    图中的两个节点所能达到的最短路径。


    2.5 图直径 (diameter)

    图中的两两节点最短路径最大的值称之为图直径。

    三、图中心性

    在图论和网络分析中,中心性(Centrality)是判断网络中节点重要性/影响力的指标。在社会网络分析中,一项基本的任务就是鉴定一群人中哪些人比其他人更有影响力,从而帮助我们理解他们在网络中扮演的角色。

    3.1 度中心性(degree centrality)

    公式: degree\_centrality = \frac{N_{degree}(与该节点连通的节点数)}{n(节点总数) - 1}
    重要的节点就是拥有许多连接的节点, 你的社会关系越多, 你的影响力就越强

    3.2 特征向量中心性 (eigenventor centrality)

    思想就是与你连接的人越重要,你也就越重要



    3.3 中介中心性 (betweenness centrality)

    公式: Betweenness = \frac{经过该节点的最短路径}{其余两两节点的最短路径}
    中间成员对路径两端的成员具有“更大的人际关系影响”。

    3.4 接近中心性 (closeness centrality)

    接近中心性高的节点一般扮演的是八婆的角色(gossiper)。他们不一定是名人,但是乐于在不同的人群之间传递消息。


    image.png

    四、 网页排序算法

    4.1 PageRank



    4.2 HITS

    指出去的为hub, 被指的为authority


    总结
    点度中心性:一个人的社会关系越多,他/她就越重要
    中介中心性:如果一个成员处于其他成员的多条最短路径上,那么该成员就是核心成员
    接近中心性:一个人跟所有其他成员的距离越近,他/她就越重要
    特征向量中心性:与你连接的人社会关系越多,你就越重要
    PageRank:来自受欢迎的网页的跳转应该重于不太受欢迎的网页的跳转
    

    四、 代码演示:

    import numpy as np
    import pandas as pd
    import networkx as nx
    
    edges = pd.DataFrame()
    edges['sources'] = [0,1,2,3,4,4,6,7,7,9,1,4,4,4,6,7,5,8,9,8]
    edges['targets'] = [1,4,4,4,6,7,5,8,9,8,0,1,2,3,4,4,6,7,7,9]
    #edges['weights'] = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]
    # source 为起点,target为终点, weight为度
    G = nx.from_pandas_edgelist(edges, source='sources',target='targets')
    # degree
    print(nx.degree(G))
    # 连通分量
    print(list(nx.connected_components(G)))
    # 图直径
    print(nx.diameter(G))
    # 度中心性
    print('度中心性',nx.degree_centrality(G))
    # 特征向量中心性
    print('特征向量中心性',nx.eigenvector_centrality(G))
    # betweenness
    print('betweenness',nx.betweenness_centrality((G)))
    # closeness
    print('closeness',nx.closeness_centrality(G))
    # pagerank
    print('pagerank',nx.pagerank(G))
    # HITS
    print('HITS',nx.hits(G,tol=0.00001))
    

    参考

    1. 【图神经网络】GNN从入门到精通
    2. 容错图匹配:节点收缩方法
    3. 特征向量中心性

    相关文章

      网友评论

          本文标题:GNN(一) 图神经网络基本知识

          本文链接:https://www.haomeiwen.com/subject/hikrpltx.html