Task02 图的基本表示和特征工程

169 阅读5分钟

Task02 图的基本表示和特征工程

1 图的基本表示

1.1 图的基本表示

  • Objects:nodes(节点)、vertices(顶点)表示为NN
  • Interactions(关系):links、edges表示为EE
  • System:network、graph表示为G(N,E)G(N,E)

1.2 设计本体图

  • 如何设计本体图,取决于将来想解决什么样的问题
  • 有些时候,本体图是唯一的、无歧义的

1.3 图的类型

  • 无向图:连接是无方向的
  • 有向图:连接是有方向的
  • 异质图:节点和连接都存在不同的类型
  • 二分图(Bipartite Graph)
    • 节点只有两类
    • 展开二分图:将连接了另一类的节点进行分别连接

1.4 节点连接数

  • 无向图:平均度为 kˉ=k=1Ni=1Nki=2EN\displaystyle \bar{k} = \langle k \rangle = \frac{1}{N} \sum_{i=1}^N k_i = \frac{2E}{N}
  • 有向图:平均度为 kˉ=EN\displaystyle \bar{k} = \frac{E}{N}

1.5 邻接矩阵Adjacency Matrix

  • 无向图:

    • 邻接矩阵是对称阵 Aij=AjiA_{ij} = A_{ji},主对角线为0,Aii=0A_{ii} = 0
    • 连接总数:L=12i=1Nki=12ijNAij\displaystyle L = \frac{1}{2} \sum_{i=1}^N k_i = \frac{1}{2} \sum_{ij}^N A_{ij}
    • 沿行或列求和均可:ki=j=1NAijk_i = \sum_{j=1}^N A_{ij}kj=i=1NAijk_j = \sum_{i=1}^N A_{ij}
  • 有向图

    • 邻接矩阵是非对称矩阵,AijAjiA_{ij} \neq A_{ji},主对角线为0,Aii=0A_{ii} = 0
    • 连接总数:L=i=1Nkiin=j=1Nkjout=ijNAij\displaystyle L = \sum_{i=1}^N k_i^{in} = \sum_{j=1}^N k_j^{out} = \sum_{ij}^N A_{ij}
    • kiout=j=1NAijk_i^{out} = \sum_{j=1}^N A_{ij}
    • kjin=i=1NAijk_j^{in} = \sum_{i=1}^N A_{ij}

1.6 连接列表、邻接列表

  • 连接列表:只记录存在连接的节点对
  • 邻接列表:只记录相关连接的节点,每个节点占用一行

1.7 其他类型的图

  • Unweighted(无权图、无向图)

    • Aii=0A_{ii} = 0
    • Aij=AjiA_{ij} = A_{ji}
    • E=12i,j=1NAij\displaystyle E = \frac{1}{2} \sum_{i,j=1}^N A_{ij}
    • kˉ=2EN\displaystyle \bar{k} = \frac{2E}{N}
  • Weighted(有权图、无向图)

    • Aii=0A_{ii} = 0
    • Aij=AjiA_{ij} = A_{ji}
    • E=12i,j=1Nnonzero(Aij)\displaystyle E = \frac{1}{2} \sum_{i,j=1}^N \text{nonzero}(A_{ij})
    • kˉ=2EN\displaystyle \bar{k} = \frac{2E}{N}
  • Self-edges(self-loops)(带自循环的图,无向图)

    • Aii0A_{ii} \neq 0
    • Aij=AjiA_{ij} = A_{ji}
    • E=12i,j=1,ijNAij+i=1NAii\displaystyle E = \frac{1}{2} \sum_{i,j=1, i \neq j}^N A_{ij} + \sum_{i=1}^N A_{ii}
  • Multigraph(多种通路,无向图)

    • Aii=0A_{ii} = 0
    • Aij=AjiA_{ij} = A_{ji}
    • E=12i,j=1Nnonzero(Aij)\displaystyle E = \frac{1}{2} \sum_{i,j = 1}^N \text{nonzero}(A_{ij})
    • kˉ=2EN\displaystyle \bar{k} = \frac{2E}{N}

1.8 图的连通性

  • Connected graph(无向图):如果能满足任意两个节点能到达的图

  • Disconnected graph(有向图):不能满足任意两个节点能到达的图

  • Giant Component:最大连通域

  • Isolated node:孤立节点

  • Strongly connected directed graph:有向图中,任意两个节点可以互相到达

  • Weakly connected directed graph:忽略方向之后,如果任意两个节点能互相到达

  • Strongly connected compoinents(SCCs):强连通域

  • In-component:节点指向SCC

  • Out-component:节点指出SCC

2 传统图机器学习(人工特征工程+机器学习)

2.1 特征分类

  • 属性特征:Weight、Ranking、Type、Sign、多模态特征(图像、视频、文本、音频)
  • 连接特征

2.2 传统机器学习步骤

  1. 把节点、连接、全图变成D维向量
  2. 将D维向量输入到机器学习模型中进行训练
  3. 给出一个新的图(节点、连接、全图)和特征,进行预测

2.3 节点层面的特征工程

  • 主要流程:给出G=(V,E)G=(V,E),学习f:VRf: V \rightarrow \mathbb{R}
  • 半监督节点分类任务:使用已知节点图,预测未知节点的类别
  • 节点特征:Node degree、Node centrality(节点重要度)、Clustering coefficient(聚集系数)、Graphlets(子图模式)

节点重要度(Node centrality):

  1. Eigenvector centrality

公式:cv=1λuN(v)cu\displaystyle c_v = \frac{1}{\lambda} \sum_{u \in N(v)} c_uvv节点邻居节点的重要度求和

等价求解:λc=Ac\lambda c = A c,求邻接矩阵的特征值和特征向量

  1. Betweenness centrality:一个节点是否处于交通要道上

公式:cv=svt#(shortest paths between s and t than contain v)#(shortest paths between s and t)\displaystyle c_v = \sum_{s \neq v \neq t} \frac{\#(\text{shortest paths between } s \text{ and } t \text{ than contain } v)}{\#(\text{shortest paths between } s \text{ and } t)}

其中,分子表示其中有多少对节点的最短距离通过节点vv;分母表示除了vv节点之外,两两节点对数(对于连通域,分母都相同)

  1. Closeness centrailty:去哪儿都近

公式:cv=1uvshortest path length between u and v\displaystyle c_v = \frac{1}{\displaystyle \sum_{u \neq v} \text{shortest path length between } u \text{ and } v}

其中,分母表示节点vv到其他节点uu最短路径长度求和

聚集系数(Clustering coefficient):

  • 衡量节点有多抱团
  • 公式:ev=#(edges among neighboring nodes)(kv2)[0,1]\displaystyle e_v = \frac{\#(\text{edges among neighboring nodes})}{ \left ( \begin{array}{c} k_v \\ 2 \end{array} \right )} \in [0, 1]

其中,分子表示vv节点相邻节点两两也相连个数(三角形个数),分母表示vv节点相邻节点两两对数

  • ego-network(自我中心网络):计算三角形个数

子图(Graphlets):

  • Graphlets Degree Vector(GDV)计算方式:提取某一个节点的其余节点的子图个数,可以构建一个向量
  • 5个节点的graphlets有73个子图个数,GDV具有73维的向量

2.4 连接层面的特征工程

  • 通过已知连接补全未知连接

  • 方案:直接提取link的特征,把link变成D维向量

  • Link Prediction:

    • 随时间不变的(蛋白质分子):随机删除一些连接,然后再预测
    • 随时间变化的(论文引用、社交网络):使用上一个时间区段的图预测下一个时间区段的L个连接,选出Top N个连接,将这些连接和下一个真实时刻的连接进行比较,用于分析模型性能
  • 具体步骤:

    1. 提取连接特征,转变为D维向量,计算分数 c(x,y)c(x,y)
    2. 将分数进行从高到低降序排列
    3. 获取Top N个连接
    4. 与真实连接进行比较,并分析算法性能

连接特征分类:

  1. 基于两节点距离(Distance-based feature)

只看最短路径长度,忽略个数

  1. 基于两节点局部连接信息(Local neighborhood overlap)

共同好友个数(Common neighbors):N(v1)N(v2)|N(v_1) \cap N(v_2) |

交并比(Jaccard's coefficient):N(v1)N(v2)N(v1)N(v2)\displaystyle \frac{|N(v_1) \cap N(v_2)|}{|N(v_1) \cup N(v_2)|}

共同好友是不是社牛(Adamic-Adar index):uN(v1)N(v2)1log(ku)\displaystyle \sum_{u \in N(v_1) \cap N(v_2)} \frac{1}{\log (k_u)}

  1. 基于两节点在全图的连接信息(Global neighborhood overlap)

Katz index:节点uu和节点vv之间长度为KK的路径个数

计算方式:P(K)=AkP^{(K)} = A^k

例如:计算Puv(2)=iAuiPiv(1)=iAuiAiv=Auv2P_{uv}^{(2)} = \sum_i A_{ui} * P_{iv}^{(1)} = \sum_i A_{ui} * A_{iv} = A_{uv} ^2

节点 uu 和节点 vv 之间长度为 KK 的路径个数是 AuvKA_{uv}^K 矩阵的第 uu 行第 vv 列元素。

Sv1v2=l=1βlAv1v2l\displaystyle S_{v_{1}v_{2}} = \sum_{l=1}^{\infty} \beta^l A_{v_{1}v_{2}}^l,其中β\beta为折减系数,0<β<10 < \beta < 1

最后,S=i=1βiAi=(IβA)1I\displaystyle S=\sum_{i=1}^{\infty} \beta^i A^i = (I - \beta A)^{-1} - I

2.5 全图层面的特征工程

  • 目标:提取出的特征应反映全图结构特点
  • 使用Bag-of-Words(BoW)方法,可以应用于图,即将图看成文章,将节点看作单词,但是无法表示连接
  • 区别:计算全图的Graphlet个数,而非特定节点领域Graphlet个数
  • 公式:(fG)i=#(giG) for i=1,2,,nk(f_G)_i = \#(g_i \subseteq G) \text{ for } i = 1,2,\cdots, n_k,表示第ii个Graphlet在全图中的个数

Graphlet Kernel:

  • 两个图的graphlet kernel:K(G,G)=fGTfGK(G, G') = f_G^T f_{G'} ,两个图的Graphlet Count Vector数量积
  • 计算上述公式太过复杂,该问题是NP-hard

Weisfeiler-Lehman Kernel 算法:

  1. 对每个阶段上色,表示如下
c(k+1)(v)=HASH({c(k)(v),{c(k)(u)}uN(v)})c^{(k+1)}(v) = \text{HASH} \left( \left \{ c^{(k)}(v), \{ c^{(k)}(u)\}_{u \in N(v)} \right \} \right)
  1. 重复上述步骤,进行KK步,c(K)(v)c^{(K)}(v)表示 K-hop 的连接

WL kernel 在计算上非常高效,复杂度是线性的,只需要关注非零元素即可

Kernel Methods:

  • 可以表示两个图的数量积运算,即K(G,G)=ϕ(G)Tϕ(G)K(G, G') = \phi(G)^T \phi(G')

3 本章总结

本次任务,主要讲解了图的基本表示和特征工程,包括:

  • 图的基本表示,包括无向图、有向图、二分图、有权图、邻接矩阵、图的连通性
  • 节点层面的特征工程:Node degree(节点连接度)、Node centrality(节点重要度)、Clustering coefficient(聚集系数)、Graphlets(子图模式)
  • 连接层面的特征工程:基于两节点距离、基于两节点局部连接信息、基于两节点在全图的连接信息
  • 全图层面的特征工程:Graphlet Kernel、Weisfeiler-Lehman Kernel、Kernel Methods