经常看到各种介绍pagerank的文章,但是少有文章能够讲清楚pagerank的思想是如何产生的,事实上这还是要归结到数学原理,这篇文章是讲得让我理解最深刻的:http://www.changhai.org/articles/technology/misc/google_math.php。
pagerank产生思想源于论文引用数,引用次数越高的论文影响力越大。它原则有两点:1,网页被链接的越多,重要性就越高;2,网页被重要性高的网页链接,就越重要。
pn = Hnp0 是该想法的出发点,计算出最终各个网页的pageRank值。但是H^{n}矩阵必须保证满足三点要求,也就是三个问题:
- 极限 limn→∞pn 是否存在?
- 如果极限存在, 它是否与 p0 的选取无关?
- 如果极限存在, 并且与 p0 的选取无关, 它作为网页排序的依据是否真的合理?
前两个问题:如果不能收敛的话,就得不到pagerank值。
解决办法: 假定虚拟用户在每一步都有一个小于 1 的几率 α 访问当前网页所提供的链接, 同时却也有一个几率 1-α 不受那些链接所限, 随机访问互联网上的任何一个网站。用数学语言来说 (请读者自行证明), 这相当于是把上述 S 矩阵变成了一个新的矩阵 G:G = αS + (1-α)eeT/N。
( 因为随机过程理论中有一个所谓的马尔可夫链基本定理 (Fundamental Theorem of Markov Chains), 它表明在一个马尔可夫过程中, 如果转移矩阵是素矩阵, 那么上述前两个问题的答案就是肯定的。而G矩阵是素矩阵)
这样,PageRank的计算公式就确定了,可以看到,在最终收敛后,p=G^*p,即p是矩阵G中特征值为1的特征向量。其余的特征值lambda满足|lambda|<=alpha