Google Page Rank 算法解析

来源:互联网 发布:淘宝的详情页怎么做 编辑:程序博客网 时间:2024/05/17 21:07

今天Matrix Analysis课上老师布置了关于google公司搜索技术的阅读材料,也就是著名的PageRank算法,读过之后觉得很有意思,在这里尽量用通俗的语言分享给大家,希望对大家有所裨益。

这篇文章基本是从“The 25, 000, 000, 000 eigenvector: The linear algebra behind Google”[1] 翻译过来,有兴趣的或者我没有讲清楚的地方可以参考原文。

1.  简介

当Google在上世纪九十年代末期上线的时候,表现出来的优异的特质,相比于其他的搜索引擎,他总是能够将最相关最需要的网页放在搜索列表的前列,而这搜索魔法的背后,就是其PageRank算法在起作用。

通常一个搜索引擎需要做以下三件事:

1.     将网络上所有网页爬下来,这也就是通常所说的网络爬虫

2.     对所有爬下来的网页进行索引,以便更有效率的搜寻

3.     对数据库中的每个网页进行重要程度的评价,最重要的网页会在搜索结果中排列在前面

下面主要介绍第三部,虽然有其他算法进行网页重要性排序,但本文仅仅介绍PageRank算法。

2.  How to rank pages

i.         Basic idea

我们用重要程度得分(importance score)来表示一个网页的重要程度,自然地这个得分应该是一个非负数。如何打分的中心思想是,其他网页指向该网页的链接的数量,数量越多,我们就有理由相信这个网页越重要,重要性得分相应的就应该越高。形象的讲,网页的重要程度是依靠其他网页对其进行投票,而这选票就是其他网页指向该网页的链接的数量。

假设我们有n的网页,用k对每一个网页进行编号,1<=k<=n。我们用一个有向图来表示这种关系。如图一所示,假设我们有4个网页,有向箭头代表链接的指向方向,网页1分别指向网页2,3,4,以此类推。Xi代表指向网页i的链接的数量。从图中看,x1=2,x2=1, x3=3, x4=2,根据被指向链接的数量,我们可以说网页3最重要,网页1,4次之,网页2最不重要。


然而以上这种方法忽略了一个问题,即,在指向网页k的所有链接中,重要网页提升网页k的程度应该比不重要网页的程度高。结合上图来解释,对于图中网页1,分别有网页3,4指向1,根据以上分析,我们认为网页3比网页4更重要,所以网页3提升1重要程度的量级应该比4提升的多。再举一个例子,从Yahoo链接到你的主页能够显著的提升你的主要的重要程度,而从你同学的主页链接到你的主要所能提升的量相比起来则小得多。

此外我们认为,一个网页如果其外向链接(outlink,即从该网页指向其他网页的链接)越多,则认为该网页的重要程度越低,(可以把外向链接数量是选票数量,如果一个具有投票权的人拥有的选票数量特别多,那么他的选票的含金量一定特别低),因为我们不希望网页排序的结果收到那些具有大量外向链接的网页的影响。下面我们用公式来说明算法含义。

假设网页j有nj个外向链接,其中的一个链接指向网页k,那么我们说它提升了网页k的scorexj/nj,其中xj是网页j自己的score。那么对于网页k,计算所有指向其的网页得分,即:


其中Lk是所有指向网页k的网页的集合。注意,这里我们没有考虑网页指向自己的链接(姑且可以把这种链接看作无效链接)。

以图一为例,我们来计算每个网页的分数。X1=x3/1+x4/2, x2=x1/3, x3=x1/3+x2/1+x4/2,  x4=x1/3+x2/2。让我们用矩阵来表述这种关系,可以写成Ax=x,x=[x1, x2, x3, x4]T。


求解网页得分,即x向量的任务就转变成了求解矩阵A的特征值为1多对应的特征向量的问题!我们把矩阵A称作link matrix。

实际上,上面的这个A矩阵正好有特征值为1,其对应的特征向量是[12, 4, 9, 6]T的任意倍数。我们归一化这个矩阵是的四个网页的总分为1,得到对应的分数为[12/31, 4/31, 9/31, 6/31]T = [0.387, 0.129, 0.290, 0.194]。观察结果,我们可以看到,实际上网页1的得分要高于网页3,虽然指向网页3的连接数量较网页1多,但此处的不同网页的提升程度在发挥作用。

通常的,如果所有的网页都有外向链接,即不存在没有链接的网页(pages withoutoutgoing links), 那么矩阵A总是有特征值为1的特征值。对于A,如果网页j有指向网页i的链接,那么有Aij=1/nj,否则Aij=0。那么矩阵A的第j列的一共有nj个非零的元素(因为第j列代表着网页j所有的外向链接),因此第j列和为1。类似的,A的每一列和都为1。

我们定义:如果一个方阵所有元素都是非负数且每一列和为1,称这样的矩阵为column-stochastic matrix.

下面我们证明:对于每一个column-stochastic matrix都有值为1的特征值。

Proof:A是nxn的column-stochastic matrix,e是n维向量且每个元素都为1,注意任意矩阵和其转置具有相同的特征值,因此有,ATe=e,因此AT具有值为1的特征值,则A具有值为1的特征值。

3.  缺点

在上述的算法中存在两个问题,第一个是高阶特征值,即值为1的特征值对应多个特征向量,此时就无法找到一个确定的特征向量来代表分数,因为任何特征向量的线性组合仍然是其特征向量。第二个问题是如果存在不包含外向链接的网页,此时A中存在全0列。

对于Page rank算法的整体流程就介绍到这里,上述的两个缺点的解决方法请参考原文,如果有什么不清楚的地方,尽请留言,欢迎交流!


 [1] Bryan, Kurt, and Tanya Leise. "The $25,000,000,000 eigenvector: The linear algebra behind Google." Siam Review 48.3 (2006): 569-581.

0 0