PageRank的Python实现

时间:2010-10-16 20:24:50

标签: python linear-algebra pagerank

我试图理解Google PageRank背后的概念,并试图在Python中实现类似(虽然简陋)的版本。我花了最后几个小时熟悉算法,但它仍然不是那么清楚。

我找到了一个特别的interesting website,它概述了Python中PageRank的实现。但是,我似乎无法理解本页所示所有功能的用途。任何人都可以澄清这些函数到底在做什么,特别是pageRankeGenerator?

1 个答案:

答案 0 :(得分:8)

我将尝试从我的个人笔记中给出PageRank算法的简单解释(定义)。

让我们说页面T1,T2,... Tn指向页面A,然后是

PR(A) = (1-d) + d * (PR(T1) / C(T1) + ... + PR(Tn) / C(Tn))

,其中

  • PR(Ti)是Ti的PageRank
  • C(Ti)是来自第Ti页的传出链接的数量
  • d是转储因子,范围为0< d< 1,通常设为0.85

每个PR(x)都可以有起始值 1 ,我们通过重复算法来调整页面排名〜每页10-20次。

页面A,B,C的示例:

   A <--> B
   ^     /
    \   v
      C

第1轮 A = 0.15 + 0.85(1/2 + 1/1)= 1.425
B = 0.15 + 0.85(1/1)= 1
C = 0.15 + 0.85(1/2)= 0.575

round的总和= 3

第2轮 A = 0.15 + 0.85(1/2 + 0.575)= 1.06375
B = 0.15 + 0.85(1.425)= 1.36125
C = 0.15 + 0.85(1/2)= 0.575

round的总和= 3

第3轮 A = 0.15 + 0.85(1.36125 / 2 + 0.575)= 1.217
B = 0.15 + 0.85(1.06375)= 1.054
C = 0.728

round的总和= 3

...