CS224W(1.14)Lecture 2. Traditional Methods for ML on Graphs-针对边的特征工程方法

针对边<A,B>的特征工程方法,固然可以把节点A和B的节点特征concat起来作为边<A,B>的特征,但是丢失了很多边特有的信息,效果不一定好。专门针对边设计的特征工程方法有三个,下面分别介绍:

  • 基于距离的特征(Distance-based feature)
  • 局部邻居重叠比例(Local neighborhood overlap)
  • 全局邻居重叠比例(Global neighborhood overlap)

基于距离的特征

两点之间的最短路径长度,这个最好理解了,可以用Dijkstra算法和Floyd算法求解。然而最短路径无法捕捉两个节点的共同邻居数目,比如下图中BH和BE的最短路径都是2,但BH有两个共同邻居CD,而BE只有一个共同邻居D,如果只用最短路径这个特征,则无法区分BH和BE这两对节点。

局部邻居重叠比例

局部邻居重叠比例衡量两个节点的邻居重叠程度,比如简单的Common neighbors直接计算两个节点的共同邻居数目;Jaccard's coefficient用邻居交集数目除以并集数目做了归一化。

Adamic-Adar index的计算方法是所有共同邻居的度的对数分之一加和。它的直观含义是,如果共同邻居的度越小,则说明两个节点的关系越紧密。比如下图中,A和B的共同邻居是C,C的度是4,说明C除了连接了A和B,还连了另外2个节点。如果C的度越大,则说明A和B占C的邻居的重要性越低;反之,如果C只连了A和B,则说明A和B通过C这个枢纽连接的关系很重要。举个简单的例子,比如两个人都喜欢一个很小众的电影,则他们的兴趣可能会很接近,但如果都喜欢一个大众电影,则他们的关系可能没那么强烈。

局部邻居重叠比例的问题是:只考虑了一跳直接相连的邻居,没有考虑间接相连的邻居(潜在关系),后面介绍的全局邻居重叠比例可以解决这个问题。

全局邻居重叠比例

Katz index统计的是任意两个节点之间任意长度的路径的个数。在计算Katz index的时候,需要计算两个节点uv之间长度为l的路径个数。计算方法是邻接矩阵的l次方。

如下的子图2中,直观理解,假设邻接矩阵为A,则A^1就是邻接矩阵本身,有连边就是1,没有连边就是0,则A_uv要么是1要么是0,即uv长度为1的路径要么是1(有连边),要么是0(没连边)。即A^1中每个元素A_uv记录了节点u和v之间长度为1的路径数目。

A^2=A*A,比如A_12,用A的第一行(记录了节点1连了哪些边),乘以A的第2列(记录了节点2连了哪些边)。这两个向量在相乘的时候,如果对应元素都是1,说明这个元素(节点)和1、2都有连边,是1、2的公共邻居,作为桥梁,可以连成一条长度为2的路径。把两个向量相乘再相加,就是长度为2的路径的总数。

以此类推,则A^l记录了任意两个节点u和v之间长度为l的路径个数。

如下子图4,Katz index就是把节点v1和v2之间路径依次为1、2、...∞的路径个数加权求和了,β是一个衰减因子,长度越长的路径,权重越小。

最后的数学形式倒是挺简洁的,公式推导可看这里:https://blog.csdn.net/chuhang123/article/details/103289413

Leave a Reply

Your email address will not be published. Required fields are marked *