Google 的秘密- PageRank 彻底解说

Google 的秘密- PageRank 彻底解说 中文版

本文对作为评价甚高的搜索引擎 Google 的核心技术之一 PageRank (网页等级)的基本的概念和评价原理进行解释。
索引
前言
PageRank 的基本概念
怎样求得 PageRank
实际应用时的问题
Namazu 上的实际安装实验
对 PageRank 的个人见解
参考文献
附录:「guguru?/gouguru?」
★(2003/7/1) 拙著『Namazu系统的构筑和活用』已作修订。 详情请看 介绍页面 。

★(2003/5/20) 与 Google 有关的在线新闻报道一览(日语)已被分离到 另一张页面(googlenews.html) 。

★(2001/2/28) Namazu 的索引中使用的计算 PageRank 的 Perl 脚本 prnmz-1.0.tar.gz 公开下载。

1.前言
最近,搜索引擎 Google (http://www.google.com/)非常引人注目。Google 是基于现担任 CEO 的 Larry Page 和担任总经理的 Sergey Brin (2001年2月)在就读于美斯坦福大学研究生院时所开发的搜索引擎的一种检索服务。Google 从1998年9月开始服务,但Netscape Communications 在 Google 的测试阶段就开始与其合作,美国 Yahoo! 公司也从2000年6月起将默认搜索引擎(美国 Yahoo! 不能检索时作为增补的搜索引擎)由原先合作的 Inktomi 转换为了 Google。日语版 Google 在2000年9月正式登场,现已被 BIGLOBE(NEC)所采用。 (注:2001年4月 Yahoo! JAPAN 和 @NIFTY,7月索尼,2002年1月 Excite 也相继与 Google 建立了协作关系)。

Google 被评价的优点不仅仅在于去除无用的(广告)标语构成单一页面的功能、独自的 Cache 系统、动态制成摘要信息、为实现高速检索而设置的分散系统(数千台规模的Linux群集器)等,而其中最大的优点正是它检索结果的正确性。一种能够自动判断网页重要性的技术「PageRank是(网页等级)」就是为此而设计的一种技术。 本文的目的就是以尽可能浅显易懂的语言来说明 PageRank 系统的概要和原理。

以下是 PageRank 的一篇基础文章。

Lawrence Page, Sergey Brin, Rajeev Motwani, Terry Winograd, 'The PageRank Citation Ranking: Bringing Order to the Web', 1998,
http://www-db.stanford.edu/~backrub/pageranksub.ps
为了更高效地计算 PageRank,以下是改良以后的一篇论文。

Taher H. Haveliwala, 'Efficient Computation of PageRank', Stanford Technical Report, 1999,
http://dbpubs.stanford.edu:8090/pub/1999-31
另外,以下是 PageRank 的演示用资料(PowerPoint)。

Larry Page, 'PageRank: Bringing Order to the Web',
http://hci.stanford.edu/~page/papers/pagerank/ (已失效)
接下来就对这两篇文章(另加一篇资料)进行基本说明。 首先,用简单的例子来解说 PageRank 的概念,再归结到使用超链接关系的排序系统来解决大规模疏松疏矩阵的特性值的问题。然后我们会接触一些在现实世界中应用基本模型时出现的问题和对应方法。接下来,为了探讨是否能够作为「个人化 PageRank」使用,进行对免费全文检索系统 Namazu 的安装实验并对其结果进行阐述。最后发表我对 PageRank 的个人见解。

另外,为了能够理解以下的说明内容,需要大学基础课程程度的数学知识(尤其是线形代数)。然而为使文科生也能够顺利读下去,尽可能地不用算式来说明问题,同时,为了加入笔者个人的见解,没有加入像原文那么多的算法和数字,也存在许多不够严密和欠正确的地方,事先在次声明。具体内容请参照原文。

PageRank(TM) 是美国 Google 公司的登记注册商标。
2. PageRank 的基本概念
PageRank 是基于「从许多优质的网页链接过来的网页,必定还是优质网页」的回归关系,来判定所有网页的重要性。

在以下冗长的说明中,许多部分大量地使用了专业用语,会造成理解上的困难。这一章虽然准备集中于定性而简单的解说,但是,即使如此也会有怎么也不明白的时候,此时只要能够理解「从许多优质耐沉唇庸吹耐常囟ɑ故怯胖释场拐庖凰伎挤椒ㄒ簿头浅5每晒罅恕R蛭谒屑父鲆阒校飧鍪亲钪匾乃伎挤椒ā?

来自于 Google 自己的介绍「Google的受欢迎的秘密(http://www.google.co.jp/intl/ja/why_use.html)」 是象以下一样解说的。

关于PageRank
   PageRank,有效地利用了 Web 所拥有的庞大链接构造的特性。 从网页A导向网页B的链接被看作是对页面A对页面B的支持投票,Google根据这个投票数来判断页面的重要性。可是 Google 不单单只看投票数(即链接数),对投票的页面也进行分析。「重要性」高的页面所投的票的评价会更高,因为接受这个投票页面会被理解为「重要的物品」。
   根据这样的分析,得到了高评价的重要页面会被给予较高的 Page Rank(网页等级),在检索结果内的名次也会提高。PageRank 是 Google 中表示网页重要性的综合性指标,而且不会受到各种检索(引擎)的影响。倒不如说,PageRank 就是基于对"使用复杂的算法而得到的链接构造"的分析,从而得出的各网页本身的特性。
   当然,重要性高的页面如果和检索词句没有关联同样也没有任何意义。为此 Google 使用了精练后的文本匹配技术,使得能够检索出重要而且正确的页面。

通过下面的图我们来具体地看一下刚才所阐述的算法。具体的算法是,将某个页面的 PageRank 除以存在于这个页面的正向链接,由此得到的值分别和正向链接所指向的页面的 PageRank 相加,即得到了被链接的页面的 PageRank。


PageRank 概念图。(引自 Page et al.(1998) Figure 2 'Simplified Page Calculation')

让我们详细地看一下。提高 PageRank 的要点,大致有3个。

反向链接数 (单纯的意义上的受欢迎度指标)
反向链接是否来自推荐度高的页面 (有根据的受欢迎指标)
反向链接源页面的链接数 (被选中的几率指标)
首先最基本的是,被许多页面链接会使得推荐度提高。也就是说「(被许多页面链接的)受欢迎的页面,必定是优质的页面」。所以以反向链接数作为受欢迎度的一个指标是很自然的想法。这是因为,“链接”是一种被看作「可以看看这个页面/这个页会有用」的推荐行为。但是,值得骄傲的是 PageRank 的思考方法并没有停留在这个地方。

也就是说,不仅仅是通过反向链接数的多少,还给推荐度较高页面的反向链接以较高的评价。同时,对来自总链接数少页面的链接给予较高的评价,而来自总链接数多的页面的链接给予较低的评价。 换句话说「(汇集着许多推荐的)好的页面所推荐的页面,必定也是同样好的页面」和「与感觉在被胡乱链接的链接相比,被少数挑选出的链接肯定是优质的链接」这两种判断同时进行着。一方面,来自他人高水平网页的正规链接将会被明确重视,另一方面,来自张贴有完全没有关联性的类似于书签的网页的链接会作为「几乎没有什么价值(虽然比起不被链接来说好一些)」而被轻视。

因此,如果从类似于 Yahoo! 那样的 PageRank 非常高的站点被链接的话,仅此网页的 PageRank 也会一下子上升;相反地,无论有多少反向链接数,如果全都是从那些没有多大意义的页面链接过来的话,PageRank 也不会轻易上升。不仅是 Yahoo!, 在某个领域中可以被称为是有权威的(或者说固定的)页面来的反向链接是非常有益的。但是,只是一个劲地在自己一些同伴之间制作的链接,比如像「单纯的内部照顾」这样的做法很难看出有什么价值。也就是说,从注目于全世界所有网页的视点来判断(你的网页)是否真正具有价值。

综合性地分析这些指标,最终形成了将评价较高的页面显示在检索结果的相对靠前处的搜索结构。

以往的做法只是单纯地使用反向链接数来评价页面的重要性,但 PageRank 所采用方式的优点是能够不受机械生成的链接的影响。 也就是说,为了提高 PageRank 需要有优质页面的反向链接。 譬如如果委托 Yahoo! 登陆自己的网站,就会使得 PageRank 骤然上升。但是为此必须致力于制作(网页的)充实的内容。这样一来,就使得基本上没有提高 PageRank 的近路(或后门)。不只限于PageRank (Clever 和 HITS 等也同样),在利用链接构造的排序系统中,以前单纯的 SPAM 手法将不再通用。这是最大的一个优点,也是 Google 方便于使用的最大理由。(虽然是最大的理由,但并不是唯一的理由。)

在这里请注意,PageRank 自身是由 Google 定量,而与用户检索内容的表达式完全无关。就像后边即将阐述的一样,检索语句不会呈现在 PageRank 自己的计算式上。不管得到多少的检索语句,PageRank 也是一定的、文件固有的评分量。

PageRank 的定性说明大致就是这样一些。但是,为了实际计算排列次序、比较等级,需要更定量性的讨论。以下一章将做详细的说明。

3.怎样求得 PageRank
我们感兴趣的是,在有像超级链接构造那样的互相参照关系的时候,定量地知道哪一个页面是最「重要」的。换句话大胆地说,这个也就是严密计算「应该从哪一页开始读取」这个指标的过程。就算从谁都不看的小页面开始读取也没有办法。

那么,一般地说为了使得像 Web 那样的超级链接构造能够反映在在排列次序上,需要在计算机上建立超级链接构造的数字模型。 怎么模型化需要取决于安装者的方针所以一概而论,但是如果应用图表理论来观察超级链接构造的话,最终常常回到线形代数考虑方法上去。这对于 PageRank 也是一样的。

计算方法的原理
作为最基本的考虑方法,就是用行列阵的形式来表达链接关系。从页面 i 链接到另一张页面 j 的时,将其成分定义为1,反之则定义为 0 。即,行列阵 A 的成分 aij 可以用,

aij=1 if (从页面 i 向页面 j 「 有 」 链接的情况)
    0 if (从页面 i 向页面 j 「没有」链接的情况)
来表示。文件数用 N 来表示的话,这个行列阵就成为 N×N 的方阵。这个相当于在图表理论中的「邻接行列」。也就是说,Web 的链接关系可以看做是采用了邻接关系有向图表 S。总而言之,只要建立了链接,就应该有邻接关系。

(*注)由点和点连接的线构成的图形被称为「图表(graph)」。这些点被称为「顶点(vertex)」或者「节点(node)」;这些线被称为「边(edge)」或者「弧(arc)」。图表分为两类,“边”没有方向的图表被称为「无向图表(undirected graph)」,“边”带有方向的图表被称为「有向图表(directed graph)」。把有向图表想像成单向通行的道路就可以了。 图表能用各种的方法来表示,但一般用在数据结构上的是「邻接行列(adjacency matrix)」和「邻接列表(adjacency list)」。需要注意的是,如果是无向图表,邻接行列 A 就成为了对称行列,而如果是有向图表,A 就会成为不对称行列。

以下是用位图表示的 Apache 的在线手册(共128页)的邻接行列。当黑点呈横向排列时,表示这个页面有很多正向链接(即向外导出的链接);反之,当黑店呈纵向排列时,表示这个页面有很多反向链接。


邻接行列的例子(采用了Apache 的在线手册)

PageRank 的行列阵是把这个邻接行列倒置后(行和列互换),为了将各列(column)矢量的总和变成 1 (全概率), 把各个列矢量除以各自的链接数(非零要素数)。这样作成的行列被称为「推移概率行列」,含有 N 个概率变量,各个行矢量表示状态之间的推移概率。倒置的理由是,PageRank 并非重视「链接到多少地方」而是重视「被多少地方链接」。

PageRank 的计算,就是求属于这个推移概率行列最大特性值的固有矢量(优固有矢量)。

这是因为,当线性变换系 t→∞ 渐近时,我们能够根据变换行列的"绝对价值最大的特性值"和"属于它的固有矢量"将其从根本上记述下来。换句话说,用推移概率行列表示的概率过程,是反复对这个行列进行乘法运算的一个过程,并且能够计算出前方状态的概率。

再者,虽然听起来很难,但是求特性值和固有矢量的值是能够严密分析的一种基础的数学手段。我们能够自由地给矢量的初始值赋值,但是因为不断地将行列相乘,得到的矢量却会集中在一些特定数值的组合中。我们把那些稳定的数值的组合称为固有矢量,把固有矢量中特征性的标量(scalar)称为特性值,把这样的计算方法总称为分解特性值,把解特性值的问题称为特性值问题。

(*注) 对 N 次的正方行列 A 把满足 Ax =λx 的数 λ 称为 A 的特性值,称 x 为属于 λ 的固有矢量。如果你怎么也不能适应行列的概念的话,你也可以考虑 N×N 的二元排列就可以了。同时,也可以把矢量考虑成为长度为 N 的普通的(一元)排列就可以了。
阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页