不同于之前的访问量统计,PageRank 求解了这样一个问题:一个人在网络上浏览网页,每看过一个网页之后就会随机点击网页上的链接访问新的网页。如果当前这个人浏览的网页 x 已经确定,那么网页 x 上每个链接被点击的概率也是确定的,可以用向量 Nx 表示。在这种条件下,这个人点击了无限多次链接后,恰好停留在每个网页上的概率分别是多少?
在这个模型中,我们用向量 Ri 来表示点击了 i 次链接之后可能停留在每个网页上的概率( R 0 则为一开始就打开了每个网页的概率,后面我们将证明 R 0 的取值对最终结果没有影响)。很显然 R i 的 L1 范式为 1 ,这也是 PageRank 算法本身的要求。
仍以上面的游戏为例,整个浏览过程的一开始,我们有:
/gkimage/u6/0y/sy/u60ysy.png
其中, A 表示每一次点击链接概率的矩阵。 A 的第 i 列第 j 行 A i, j 的含义是,如果当前访问的网页是网页i,那么下一次点击链接跳转到网页 j 的概率为 A i, j 。
这样设计矩阵 A 的好处是,通过矩阵 A 和向量 R n-1 相乘,即可得出点击一次链接后每个网页可能的停留概率向量 R n 。例如,令 R 1 = A R 0 ,可以得到点击一次链接后停留在每个网页的概率:
/gkimage/lz/6j/1c/lz6j1c.png
之后一直迭代下去,有:
/gkimage/nj/xh/be/njxhbe.png
对于上面的例子,迭代结果如下图:
/gkimage/cx/gf/ag/cxgfag.png
可以看到,每个网页停留的概率在振荡之后趋于稳定。
在这种稳定状态下,我们可以知道,无论如何迭代,都有 R n = R n-1 。这样我们就获得了一个方程:
/gkimage/tg/s5/vb/tgs5vb.png
而整个迭代的过程,就是在寻求方程 R = AR 的解。而无论 R 0 是多少,迭代无限多次之后,一定会取得令 R = AR 成立的 R 值。整个求解 R 的过程,就如同一个人在一张地图上的不同位置之间随机地行走一样,所以被称为“随机行走模型”。
随机行走模型有一个显著的特点,那就是每一次迭代的结果只与前一次有关,与更早的结果完全无关。这种过程又被称为马尔可夫过程( Markov Process )或马尔可夫链( Markov Chain )。
马尔可夫过程的数学定义是:如果对于一个随机变量序列 X 0 、 X 1 、 X 2 、…, 其中 X n 表示时间 n 的状态及转移概率P,有:
/gkimage/lg/q7/bf/lgq7bf.png
即 X n 只受 X n-1 的影响,则此过程成为马尔可夫过程。其中 P( X n+1 | X n ) 称作“一步转移概率”,而两步、三步转移概率则可以通过一步转移概率的积分求得。
当状态空间有限时,转移概率可以用用一个矩阵 A 来表示,称作转移矩阵( transition matrix )。此时转移概率的积分即为矩阵的幂,k步转移概率可以用 A k 表示,这也是随机行走模型中的情况。而对于一个正的(每个元素都为正的)转移矩阵 A ,可以证明一定有:
/gkimage/ua/wx/rz/uawxrz.png
这就完整解释了为什么 R 0 的取值对最终结果没有影响。
修正“悬挂网页”带来的不良影响
但是这里有一个问题:即便 R 0 的取值对最终结果没有影响,用 R 作为网页排序的依据是否真的合理?