cs224w-图机器学习-2021冬课程学习笔记-04-Link Analysis: PageRank (Graph as Matrix)

13 篇文章 1 订阅

本章内容:将图视为矩阵,有三个作用:
在这里插入图片描述
这几项内容实质上是相关联的。
这使得可以用线性代数分析图数据。

一、PageRank

这是斯坦福两个博士生给Google做的,有巨大的作用。用图分析Web。

1.如何定义Web对应的图?

看似简单的问题(网站对应节点,超链对应边)。但是这简单仅适用于早期Web,因为那时候都是静态网页,超链接作用是“navigational”,但是现在很多超链是用来提交表单的,是"transactional"的。这里只考虑前者
因此将Web定义为一个有向图。定义好图之后,我们想知道哪些网站(节点)是更重要的。

2.Ranking Nodes on the Graph

这是用来给网站做排名的,看看谁更重要。因此下面讨论三种给节点重要度排名的方法。这三个方法其实只有细微的差别。
在这里插入图片描述
要考虑一个Web的重要程度,最先想到的应该是检查其连边数。这是第一个思路。但是out-link(即从本Web指出的超链)自己可以随意多加,in-link(指向本Web的超链)却不容易伪造,因此要用in-link做排名,这是第二个方法。第三个方法思想是“重要的节点的link更重要”:
在这里插入图片描述

3. PageRank: The “Flow” Model

计算节点重要程度方法如下:
每个节点的重要程度取决于邻居节点,每个节点都有个重要程度。每个节点给其相连的点平均分配自己的重要程度:
在这里插入图片描述
如上图, j j j节点有 r j r_{j} rj重要程度,它指向三个节点,因此每个被它指向的节点得到 r j / 3 r_{j}/3 rj/3的重要程度。这个过程的公式形式为:
在这里插入图片描述
r j r_{j} rj j j j节点重要程度,其值为所有指向 j j j节点的 i i i节点分配给 j j j节点的重要程度之和。每个节点 i i i分配的数值等于 i i i节点重要程度除以其出度。
例子:
在这里插入图片描述
这方程可以用高斯消元法解,但是不好扩展。下面是解这种方程组的一般方法:

4.PageRank矩阵方程

首先把图中的节点和边,表示为矩阵。然后定义Stochastic adjacency matrix M M M
矩阵是这么定义的:
在这里插入图片描述
这和《统计学习方法》中讲的一样。第 j j j列代表 j j j节点的out-link。如果j指向i,则 M i j = 1 / d j M_{ij}=1/d_{j} Mij=1/dj。其中, d j d_{j} dj为节点 j j j的out-degree。(这个矩阵被称为Stochastic的原因就是每一列和为1)。
上面也给出了Rank Vector的定义:每个元素对应着节点的重要程度。因此就得出下面的flow equations
在这里插入图片描述
平稳分布时,分布向量满足:
在这里插入图片描述
回到这里,这个形式和特征向量方程一样一样的。不同点仅在于,前者是M,后者是A;前者系数为1,后者有个 λ \lambda λ。因此换成 1 ⋅ r = M ⋅ r 1·r=M·r 1r=Mr,就变成了求M矩阵的特征值1对应的特征向量了。
在这里插入图片描述
这个平稳分布的计算过程中,也可看做前面讲到的,N阶邻居(邻接矩阵A的幂)
在这里插入图片描述

4.本节小结

讲了设么是PageRank,然后是随机矩阵M,然后是图中随机游走的概率分布向量,然后是矩阵等式,然后发现这个向量其实是矩阵M的特征值1对应的特征向量,即平稳分布。很多的直觉背后的数学公式竟然是一样的,因此很fancinating
在这里插入图片描述

二、如何求解PageRank

采用迭代方式求解。

1.Power Iteration

方法分两步:

  1. 随机初始化向量r
  2. 迭代。迭代过程如下:
    在这里插入图片描述
    第二步中,矩阵形式和右边的展开式是一样的。(谷歌每天都在运行这个程序。看来这算法是真的有用啊)

2.两个问题

  1. The “Spider trap” problem:迭代后,b的概率是1,其他都是0.因为一旦到了b,就走不出来了。
    在这里插入图片描述
  2. The “Dead end” problem:这个就更惨了。到了b,连自环都没了。
    在这里插入图片描述
    解决方法是,在每一次跳转过程中,有 β \beta β的概率按照随机矩阵, 1 − β 1-\beta 1β按照随机概率跳转:
    在这里插入图片描述
    β \beta β一般取值 0.8 , 0.9 0.8,0.9 0.8,0.9
    这个随机游走的过程,和前面的Random Walk很像。前面采用模拟的方法游走,这里采用的是数学推导。
    例子:
    在这里插入图片描述
    还有个算法结果可视化的例子:其中B和E的外链数相等,但是他们的PageRank值大小却悬殊。这是因为B的外链是来自更重要的节点,而E的外链大都来自最外层没有外链的不重要的节点(可以看出这些没有外链的节点也有1.6的重要性)。然后C只有一个外链,但是因为是来自重要的节点,因此其重要度也很高。
    在这里插入图片描述

2.本节小结

讲了如何求解PR,然后讲了random uniform teleportation用以解决 dead-ends and spider-traps这俩问题。
在这里插入图片描述

三、Random Walk with Restarts & Personalized PageRank

1.相似性例子

推荐系统中,将用户和商品建模成二部图。如何推荐?一个直觉是,如果一个人买了Q和P,那么后续买P的人也可能会买Q。如下图;
在这里插入图片描述
在这里插入图片描述
但是有问题。下面A和A’,B和B’谁更相似呢?显然是A和A’。
在这里插入图片描述
下面呢?关于A,A’, B,B’ or C,C’:
在这里插入图片描述
A和A’之间有最短路径;但是C和C’之间有共同的邻居。
PPR就是用来表示这些相似性的。

2.PR,PPR,PWR区别

区别仅在于上面的选取teleport set的方法。即,在每个节点,不按照图的随机矩阵游走的分布。
PR是均匀游走;PPR是只能游走到一部分子集;PWR是回到原点
在这里插入图片描述

3.用PPR求解节点相似度

相似度就是这个词:Proximity。给定节点Q,现在要求解剩余节点和Q的相似度。这里采用Random Walk方法模拟:(节点访问次数越多,说明和Q的相似度越高)
在这里插入图片描述
下面是伪代码:
在这里插入图片描述
下面是结果:数字为节点被访问的次数:
在这里插入图片描述

4.为什么PPR是一个好算法?

在这里插入图片描述

5.本节总结

这三种PR方法,区别仅在于转移到teleport set的概率不同。即下式中的右边的项。
r j = ∑ i → j β r i d i + ( 1 − β ) 1 N r_{j}=\sum_{i\rightarrow j}\beta\frac{r_{i}}{d_{i}}+(1-\beta)\frac{1}{N} rj=ijβdiri+(1β)N1
即: ( 1 − β ) 1 N (1-\beta)\frac{1}{N} (1β)N1不同。PR中就是直接 1 / N 1/N 1/N,均匀分布,从一个节点均匀地跳到另外的节点;而PPR是根据相似度,分配不同的概率;而PWR是只能返回原节点。如下图:
在这里插入图片描述

三、Matrix Factorization and Node Embeddings

1.Matrix Factorization and Node Embeddings

这节concludes前面两节(可以一窥conclude的用法)。这节讲了Matrix Factorization 和Node Embeddings之间的联系。
节点嵌入问题:
如果定义相似度的方式是“有连边的点是相似的”,以此构建损失函数,然后学习节点的表示,学到的矩阵与其转置的乘积就应该很接近邻接矩阵:
在这里插入图片描述
因此可以将前面的节点嵌入方法,视为矩阵分解的一种特例:
在这里插入图片描述
DeepWalk和node2vec都是复杂一点的矩阵分解:
在这里插入图片描述
ppt上附了个论文,解释为什么这些工作都是矩阵分解。

2.上面这些方法的局限性

三个缺陷分别是

  1. 不能对新节点进行嵌入。如果加入了新节点,模型要重新训练
  2. 不能捕获结构相似性
  3. 不能利用图和节点的features
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

3.总结

PR、PPR、节点嵌入视为矩阵分解、矩阵表示很关键。
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值