02链路预测

什么是链路预测

链路预测是一个利用图网络做预测的经典任务。所谓链路(Link)指节点与节点之间的连接,也就是图论中的边。
02链路预测_第1张图片
如上图所示,所谓链路预测就是预测原本不相连的两个节点之间是否有边存在,若是在有权图中,那就顺便还预测下相邻边的权重。
如果该图是一个社交网络图,那么链路预测的任务就好比是在预测某个用户是否对另一个用户感兴趣,也就是好友推荐任务,如果是一个用户物品图,那么链路预测就是物品推荐任务。
链路预测本身是一门学科,已经有好几十年历史了,推荐是它最主要的应用方向。如今来链路预测总是不温不火。究其原因是还是因为跳开它一样能做推荐,例如在有的文献中会提到基于近邻的链路预测,其实就等同于基于近邻的协同过滤。而学习协同过滤我们不需要懂图论。如今图神经网络的兴起又直接导致链路预测中一些复杂的算法过时。因为图神经网络可以更有效的解决90%以上的链路预测任务。

路径

路径就是从某一个节点到另一个节点之间经过的边与节点组成的子图,包含头尾节点。
02链路预测_第2张图片
(路径示意图)
如上图所示,由节点1开始游走,到达节点4可以经过节点2或者节点3,所以节点1与节点4之间存在124,134这两条路径。而节点1到节点5只有一条路可以,所以该路径就是15.
一条路径上的边数被称为路径的阶数,例如124或134属于二阶路径。12,13,15属于一阶路径,所以又可把节点2,3,5称,节点1的一阶邻居,节点4称为节点1的:二阶邻居。

基于路径的基础链路预测

我们来回顾一下最简单的近邻指标,CN相似度, CN(common neighbors)
Sxy=| N(x) ∩ N(y) |
N(x)表示x节点的邻居集。所以CN相似度就是x节点的一阶邻居集与y节点的一阶邻居集的交集数量:我们了解路径后,可以发现两个节点一阶邻居的交集数量其实就等于他们之间的二阶路径数,如下图所示,节点1与节点4之间有交集节点2,3,有二阶路径124,134,以此类推。
02链路预测_第3张图片
所以CN相似度公式我们可以写成一个新的形式:
Sxy = Pxy(2)
式子右边的Pxy(2)就代表节点x与节点y之间的二阶路径数
02链路预测_第4张图片
链路预测的二阶路径表
该表也是所有节点之间的CN相似度矩阵,且可被视作是另一个有权图的邻接矩阵,中间的数字正是边的权重。通常被称为原图的二阶路径图。它的邻接矩阵记作A(2),所以原图中所有节点相似度矩阵S在目前计算环境下可写成:
                                                        S= A(2)
到此大家也可能想到了,能将节点问的二阶路径数作为相似度指标,那显然也可将三阶路径甚至更多阶的路径数作为相似度指标。
02链路预测_第5张图片
上图的右半边列出了所有从节点1出发的三阶路径。结合节点1的二阶路径数,我们再统计一个表格。
02链路预测_第6张图片
假设我们定义相似度公式为:
                                                    Sxy = Pxy(2)+ Pxy(3)
那么节点1与节点4,7,9的相似度均为3是最高的。对于推荐任务来说,我们就推荐节点4,7,9给节点1即可。虽然也挺合理,但是总觉得哪里不对劲。没错,不对劲的地方就是: 凭什么三阶路径的权重会和二阶路径的权重相等呢? 用户距离越远,那么相应的权重应该也越小啊, 如果将式子改为:
                                                    Sxy = Pxy(2)+ αPxy(3)
是不是舒服很多,在式子中加入α可以作为稀释高阶路径对相似度影响的权重。这个α可以用标注数据学出来,也可作为超参自己设。假设α为0.5,我们重新来计算下上述例子中节点1与各节点的相似度
02链路预测_第7张图片
首先节点2,3,5本身就是节点1的一阶邻居,在链路预测中也就代表本身就有链路,所以我们不需要推荐节点2,3,5给节点1做邻居。除此以外可以看到在α为0.5的情况下,节点1与节点4的相似度>节点7>节点9,这样似乎更有道理了。
所以,如果我们要考虑所有路径的阶数,我们的公式可以写成
                                                   在这里插入图片描述

该公式就是算法科学家Katz早在1953年提出的他的Katz相似度指标。写成矩阵形式就是:
在这里插入图片描述
该公式一眼看过去就能看 出计算量很大。所以这些年来演化出了很多的算法在优化Katz算法,当然也演化出来很多其他的算法做链路预测。

你可能感兴趣的:(推荐系统,机器学习,算法,分类)