Python实现PageRank算法
我正在尝试理解谷歌的PageRank(网页排名)背后的概念,并打算在Python中实现一个类似的(虽然很简单)版本。我花了几个小时来熟悉这个算法,但还是有些不太明白。
我找到一个特别有趣的网站,上面讲解了如何在Python中实现PageRank。不过,我对页面上显示的所有函数的目的还是不太理解。有没有人能帮我解释一下这些函数到底在做什么,特别是pageRankeGenerator这个函数?
1 个回答
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到1之间,通常设为0.85
每个PR(x)的初始值可以设为1,然后我们通过重复这个算法大约10到20次来调整每个页面的排名。
以页面A、B、C为例:
A <--> B
^ /
\ v
C
第一轮
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
这一轮的总和 = 3
第二轮
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
这一轮的总和 = 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
这一轮的总和 = 3
...