参考:time.geekbang.org/column/arti…
1. PageRank 的计算
假设一共有 4 个网页 A、B、C、D。它们之间的链接如图所示:
简单来说,一个网页的影响力 = 所有入链集合的页面的加权影响力之和,用公式表示为:
u 为待评估的页面,Bu 为页面 u 的入链集合。针对入链集合中的任意页面 v,它能给 u 带来的影响力是其自身的影响力 PR(v) 除以 v 页面的出链数量,即页面 v 把影响力 PR(v) 平均分配给了它的出链,这样统计所有能给 u 带来链接的页面 v,得到的总和就是网页 u 的影响力,即为 PR(u)。
在这个例子中,A 有三个出链分别链接到了 B、C、D 上。那么当用户访问 A 的时候,就有跳转到 B、C 或者 D 的可能性,跳转概率均为 1/3。
B 有两个出链,链接到了 A 和 D 上,跳转概率为 1/2。
得到 A、B、C、D 这四个网页的转移矩阵 M:
我们假设 A、B、C、D 四个页面的初始影响力都是相同的,即:
当进行第一次转移之后,各页面的影响力 w1 变为:
然后我们再用转移矩阵乘以 w1 得到 w2 结果,直到第 n 次迭代后 wn 影响力不再发生变化,可以收敛到 (0.3333,0.2222,0.2222,0.2222),也就是对应着 A、B、C、D 四个页面最终平衡状态下的影响力。
2. 随机浏览模型
等级泄露(Rank Leak):如果一个节点只有入度,没有出度,吸收了其他节点的PR值而不释放,最终会导致其他节点的 PR 值为 0。
等级沉没(Rank Sink):如果一个节点只有出度,没有入度,最终导致这个节点的 PR 值为 0。
为解决上述两个问题,拉里·佩奇提出改进的PageRank的随机浏览模型,该模型基于这样一个场景:在浏览网页时,用户并不总是依据链接跳转的方式,还有可能是用户就是要直接输入网址访问其他页面,虽然这个概率比较小。具体,定义阻尼因子d,表示用户通过链接跳转进入新的网页,一般设置为0.85,公式如下所示:
其中 N 为网页总数,这样我们又可以重新迭代网页的权重计算了,因为加入了阻尼因子 d,一定程度上解决了等级泄露和等级沉没的问题。