使用幂法实现 PageRank

计算科学 线性代数 算法 本征系统 稀疏矩阵
2021-12-19 20:10:09

我正在尝试实现本文中描述的 PageRank 算法(图 1)。以下是步骤的细分:

http://www.louismullie.com/algo.png

在哪里:

  • pT是随机游走的概率分布(通常,每个元素是1/N其中 N 是元素的总数)
  • P是连接矩阵,其中p(i,j) = {1 or 0} / # outbound links.

我很好地理解了前两个步骤的基本原理。在以下等式中,

步骤 2 求解第二项。但是,我不明白步骤 3-4 背后的基本原理。特别是,我不明白添加omega * pT算法描述如何等于添加(1-d)/N上面显示的等式。结果,我用这两种方法得到的输出不同。有人可以启发我吗?

2个回答

的链接之一之后查看给定页面(其中哪个是由他们的相对权重,即当前迭代的概率(如果这些由向量的分量确定)跳转到不相关的页面(例如,通过使用书签)。如前所述,将其写为矩阵向量乘积与显式矩阵非常昂贵,因为跳转到任意页面会导致矩阵完全填充。所以一个人写道cxk1cppAAA=cP+(1c)E分别计算在上述算法中,步骤 2 对应于第一项,步骤 3 和 4 对应于第二项。具体形式在论文中有详细推导(方程(4)和(5))。xA=cxP+(1c)xE

请注意,维基百科的文章只包括一个统一的跳跃概率(令人困惑地称为阻尼因子),而论文使用了一个非统一的概率(由个性化向量给出)并包括一个额外的术语以防止卡在没有传出链接的页面上.pD

(我还应该指出,维基百科的文章并不是对正在发生的事情的一个非常好的解释,尤其是在数学上。更好的来源是这篇SIAM 评论文章。)

PageRank方法基本上是Power迭代,用于找到与转移矩阵的最大特征值对应的特征向量。您引用的算法直接来自您引用的论文的等式(4)和(5),这只是实现具有特定结构的矩阵的幂迭代的一种方式。我不知道您涉及的方程式来自哪里,或者它意味着什么,或者它与您的问题的其余部分有何关系。PR(A)