算法部分首先通过对理想情况的分析,阐述了PageRank算法的流程以及如何利用幂迭代法求解平稳向量,然后指出可能遇到的一些问题以及相应的解决方案。
证明部分主要涉及平稳向量存在性和正确性的证明以及利用幂迭代法求解平稳向量收敛性的证明。
PageRank算法
1. 简介
2. 算法
2.1 理想情况
2.2 幂迭代法
2.3 存在的问题
2.3.1 悬空结点
问题描述
解决方案
2.3.2 幂迭代法不收敛
问题描述
解决方案
3. 证明
1. 简介
PageRank算法是谷歌提出的,用于计算网页的重要性,当使用搜索引擎搜索网页的时候,越重要的网页越靠前显示。其基本思想是将网页抽象为图结点,网页之间的链接关系抽象为有向边,通过定义在这个有向图上的矩阵来计算各个网页之间的相对重要性。这里之所以说相对,是因为重要性的数值并没有实际意义,我们不能说网页的重要性是或者网页的重要性是,但可以说网页比网页重要或者网页的重要性是网页的两倍。
2. 算法
2.1 理想情况
如上图,假设图中个点,,分别表示个网页,图中的有向边表示网页的链接关系,点到点有一条有向边,其含义是网页中有一条链接可以跳转到网页。记某网页,比如网页,的重要性为,则各个网页的重要性
可以看出,某网页的重要性是由链接到该网页的网页所决定的。网页可以由网页或网页跳转过来,所以网页的重要性由网页和网页决定。网页可以跳转到网页或网页,相当于网页将其重要性平均分给了网页和网页。上面三个式子可以写成矩阵乘法的形式,如下式所示
式形如,其解为矩阵特征值为时候的特征向量,称其为平稳向量(stationary vector)。所以各网页的重要性可以用相应的来衡量。这里需要注意的一点是,我们不加以证明地假设成立,因为一个网页的重要性为负值没有实际意义,若为平稳向量,令,则也是平稳向量,也可以用来衡量网页的重要性。所以网页重要性的数值没有什么意义,真正有意义的是各网页之间的相对重要性,这种关系不会因为乘了一个常数而改变,所以方便起见,一般令。
综上,PageRank算法大致分为两步,首先根据网页之间的链接关系得到矩阵,然后计算矩阵的平稳向量。
2.2 幂迭代法
如前文所述,我们需要计算矩阵的平稳向量来得到网页的重要性,实际中,的值可能非常大,如何快速得到平稳向量呢,我们可以利用幂迭代法解决这个问题。这部分内容主要讲计算流程,关于幂迭代法的相关证明,可见证明部分。
幂迭代法首先选取一个初始向量,通过计算,,……,,得到一个序列,, ,……,,当,会收敛到平稳向量。如图所示,该图的矩阵
直接计算可得矩阵的平稳向量为,令,即最开始每个网页具有相同的重要性,记录幂迭代法的计算过程,可以得到下面的表格
可以看到,该向量序列逐渐向靠拢。
2.3 存在的问题
前面讨论的是理想情况下的PageRank算法,这部分讨论可能存在的问题。
2.3.1 悬空结点
问题描述
悬空结点指的是没有出度的结点,也就是说该网页没有链接到其他网页。如下图,网页就是一个悬空结点,这时如果采用幂迭代法计算平稳向量就会出现问题。
上图的矩阵
取,迭代过程如下
可以看到,向量序列收敛到,这显然是不正确的。原因是在每一次的迭代过程中,网页都会“吸收”一部分重要性,从而使得每一次迭代后,网页整体的重要性都会减少,最后网页整体的重要性会变成,从而每个网页的重要性都为。
如果给结点添加一条边,指向其自身,如下图所示,其矩阵
重复上述的迭代过程,会有一个很有意思的结果,向量序列收敛到。直观来讲,在每一次的迭代过程中,其他网页的重要性会流向网页,而网页的重要性则只流向其自身,最后所有的重要性都会集中在网页上。
解决方案
如上图所示,其矩阵
从概率的角度来看矩阵,其元素表示从网页跳转到网页的概率,以第一列为例,,说明在浏览网页的时候,等可能地会跳转到网页,或者,这也和图相符。对于悬空结点,其不能跳转到任何网页,所以矩阵第四列元素全部为。所以矩阵有个性质,非悬空结点对应的列所有元素加起来等于。
问题在于,假如进入了网页,则不会再跳转到其他网页了,在这实际中是不可能的。所以,对于悬空节点,假定其可以跳转到任意网页,包括自身,并且跳转到这些网页的概率是相等的,则这一列元素可以全部用代替,那么修正后的矩阵
其中
我们这样定义矩阵,悬空结点对应的那一列,矩阵元素全部为,其余结点对应的列元素全部为。这样得到的矩阵是一个列随机矩阵,即。
2.3.2 幂迭代法不收敛
问题描述
上图的矩阵
取,迭代过程如下,可以看出,向量序列并不收敛,其呈现一种周期性。
解决方案
假设现在有的概率以矩阵进行网页之间的跳转,有的概率随机选择一个网页进行浏览,则修正后的矩阵为
其中 ,一般取。我们可以证明,对矩阵采用幂迭代法一定能收敛到其平稳向量。
3. 证明
未完待续