以文本方式查看主题 - 中文XML论坛 - 专业的XML技术讨论区 (http://bbs.xml.org.cn/index.asp) -- 『 Google PageRank/Google排名/SEO/Google Analytics 』 (http://bbs.xml.org.cn/list.asp?boardid=54) ---- Google 的秘密- PageRank 彻底解说 中文版 (http://bbs.xml.org.cn/dispbbs.asp?boardid=54&rootid=&id=13637) |
-- 作者:admin -- 发布时间:1/15/2005 4:34:00 PM -- Google 的秘密- PageRank 彻底解说 中文版 Google 的秘密- PageRank 彻底解说 中文版 原著:Google の秘密 - PageRank 徹底解説 Hajime BABA / 馬場 肇 翻译:Kreny / 袁 黄 琳 <krenyATdalouis.com> 创作于:2003/12 最后更新: 2004年10月28日 3:53 关键词:pagerank, google, link 翻译说明: 一些语句的翻译上使用了意译,使得尽可能得符合中文的理解和说明思路。 版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明 http://linux.dalouis.com/pagerank_cn.htm 返回首页 ★(2003/5/20) 与 Google 有关的在线新闻报道一览(日语)已被分离到 另一张页面(googlenews.html) 。 ★(2001/2/28) Namazu 的索引中使用的计算 PageRank 的 Perl 脚本 prnmz-1.0.tar.gz 公开下载。 1.前言 Google 被评价的优点不仅仅在于去除无用的(广告)标语构成单一页面的功能、独自的 Cache 系统、动态制成摘要信息、为实现高速检索而设置的分散系统(数千台规模的Linux群集器)等,而其中最大的优点正是它检索结果的正确性。一种能够自动判断网页重要性的技术「PageRank是(网页等级)」就是为此而设计的一种技术。 本文的目的就是以尽可能浅显易懂的语言来说明 PageRank 系统的概要和原理。 以下是 PageRank 的一篇基础文章。 Lawrence Page, Sergey Brin, Rajeev Motwani, Terry Winograd, 'The PageRank Citation Ranking: Bringing Order to the Web', 1998, Taher H. Haveliwala, 'Efficient Computation of PageRank', Stanford Technical Report, 1999, Larry Page, 'PageRank: Bringing Order to the Web', 另外,为了能够理解以下的说明内容,需要大学基础课程程度的数学知识(尤其是线形代数)。然而为使文科生也能够顺利读下去,尽可能地不用算式来说明问题,同时,为了加入笔者个人的见解,没有加入像原文那么多的算法和数字,也存在许多不够严密和欠正确的地方,事先在次声明。具体内容请参照原文。 PageRank(TM) 是美国 Google 公司的登记注册商标。 2. PageRank 的基本概念 在以下冗长的说明中,许多部分大量地使用了专业用语,会造成理解上的困难。这一章虽然准备集中于定性而简单的解说,但是,即使如此也会有怎么也不明白的时候,此时只要能够理解「从许多优质的网页链接过来的网页,必定还是优质网页」这一思考方法也就非常得可贵了。因为在所有几个要点中,这个是最重要的思考方法。 来自于 Google 自己的介绍「Google的受欢迎的秘密(http://www.google.co.jp/intl/ja/why_use.html)」 是象以下一样解说的。 关于PageRank 通过下面的图我们来具体地看一下刚才所阐述的算法。具体的算法是,将某个页面的 PageRank 除以存在于这个页面的正向链接,由此得到的值分别和正向链接所指向的页面的 PageRank 相加,即得到了被链接的页面的 PageRank。 让我们详细地看一下。提高 PageRank 的要点,大致有3个。 反向链接数 (单纯的意义上的受欢迎度指标) 也就是说,不仅仅是通过反向链接数的多少,还给推荐度较高页面的反向链接以较高的评价。同时,对来自总链接数少页面的链接给予较高的评价,而来自总链接数多的页面的链接给予较低的评价。 换句话说「(汇集着许多推荐的)好的页面所推荐的页面,必定也是同样好的页面」和「与感觉在被胡乱链接的链接相比,被少数挑选出的链接肯定是优质的链接」这两种判断同时进行着。一方面,来自他人高水平网页的正规链接将会被明确重视,另一方面,来自张贴有完全没有关联性的类似于书签的网页的链接会作为「几乎没有什么价值(虽然比起不被链接来说好一些)」而被轻视。 因此,如果从类似于 Yahoo! 那样的 PageRank 非常高的站点被链接的话,仅此网页的 PageRank 也会一下子上升;相反地,无论有多少反向链接数,如果全都是从那些没有多大意义的页面链接过来的话,PageRank 也不会轻易上升。不仅是 Yahoo!, 在某个领域中可以被称为是有权威的(或者说固定的)页面来的反向链接是非常有益的。但是,只是一个劲地在自己一些同伴之间制作的链接,比如像「单纯的内部照顾」这样的做法很难看出有什么价值。也就是说,从注目于全世界所有网页的视点来判断(你的网页)是否真正具有价值。 综合性地分析这些指标,最终形成了将评价较高的页面显示在检索结果的相对靠前处的搜索结构。 以往的做法只是单纯地使用反向链接数来评价页面的重要性,但 PageRank 所采用方式的优点是能够不受机械生成的链接的影响。 也就是说,为了提高 PageRank 需要有优质页面的反向链接。 譬如如果委托 Yahoo! 登陆自己的网站,就会使得 PageRank 骤然上升。但是为此必须致力于制作(网页的)充实的内容。这样一来,就使得基本上没有提高 PageRank 的近路(或后门)。不只限于PageRank (Clever 和 HITS 等也同样),在利用链接构造的排序系统中,以前单纯的 SPAM 手法将不再通用。这是最大的一个优点,也是 Google 方便于使用的最大理由。(虽然是最大的理由,但并不是唯一的理由。) 在这里请注意,PageRank 自身是由 Google 定量,而与用户检索内容的表达式完全无关。就像后边即将阐述的一样,检索语句不会呈现在 PageRank 自己的计算式上。不管得到多少的检索语句,PageRank 也是一定的、文件固有的评分量。 PageRank 的定性说明大致就是这样一些。但是,为了实际计算排列次序、比较等级,需要更定量性的讨论。以下一章将做详细的说明。 3.怎样求得 PageRank 那么,一般地说为了使得像 Web 那样的超级链接构造能够反映在在排列次序上,需要在计算机上建立超级链接构造的数字模型。 怎么模型化需要取决于安装者的方针所以一概而论,但是如果应用图表理论来观察超级链接构造的话,最终常常回到线形代数考虑方法上去。这对于 PageRank 也是一样的。 计算方法的原理 aij=1 if (从页面 i 向页面 j 「 有 」 链接的情况) (*注)由点和点连接的线构成的图形被称为「图表(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 的普通的(一元)排列就可以了。 简单的例子 首先,把这张推移图图表构造的邻接列表表示为排列式,就有以下式子。即,根据各个链接源ID列举链接目标的ID。 链接源I D 链接目标 ID A = [ M = [ 在分解特性值时有相应的各种各样的数值分析法,但是本文将不在这里对各种方法详细说明,请读者自己去阅读一本恰当的教科书(在你的暑假里一定有这么一本被埋没的教科书)。在此,我们就暂且使用决 GNU Octave 这个计算程序实际计算一下特性值和固有矢量。 (*注) GNU Octave ,是支持数值计算,类似于描述性出色的 MATLAB 的编程语言。扩展后的处理语言更适合于行列演算,但基本上和C语言的语风相像,因此可读性很高。详细请参照 http://www.octave.org/。 当然,除了Octave以外 MATLAB 和 Scilab 也是非常不错的语言,但是根据 GPL, Octave 是最容易得到的。 实际举例 首先,使用恰当的编辑器制作以下 Octave 脚本。(在行尾加上分号就能消去多余的结果输出,不过,此次为了说明特意去掉了。) % cat pagerank.m ##设置计时器。 ## 根据PageRank 的定义,将从文件 i 链接到文件 j 的链接状态的推移概率行列定义为 M(i,j) M = [ [V,D]= eig(M) ## 保存与绝对价值最大的特性值对应的固有矢量到EigenVector。 ## PageRank 是将 EigenVector 在概率矢量上标准化后得到的值。 (2003/7/23: 修正上述脚本的错误。) 误: EigenVector = V(:, find(max(abs(diag(D)))) ) % octave pagerank.m V = 0.69946 + 0.00000i 0.63140 + 0.00000i 0.63140 + 0.00000i Columns 4 through 6: 0.56600 + 0.00000i 0.56600 + 0.00000i -0.32958 + 0.00000i Column 7: 0.00000 + 0.00000i D = Columns 1 through 3: 1.00000 + 0.00000i 0.00000 + 0.00000i 0.00000 + 0.00000i Columns 4 through 6: 0.00000 + 0.00000i 0.00000 + 0.00000i 0.00000 + 0.00000i Column 7: 0.00000 + 0.00000i EigenVector = PageRank = elapsed_time = 0.063995 Octave 的输出中,特性值被表示为对角行列 D 的对角成分,各个特性值相对应的固有矢量被表示为行列 V 对应列的列矢量。也就是说 M * V = D * M 成立。 如果包含复数特性值的话这里的特性值有7个,其中绝对价值最大的特性值 λ 是λ=1。与之相对应的固有矢量为实矢量: EigenVector = PageRank = 求得的 PageRank 的评价 名次 PageRank 文件ID 发出链接ID 被链接ID 首先应该关注的是,PageRank 的名次和反向链接的数目是基本一致的。无论链接多少正向链接都几乎不会影响 PageRank,相反地有多少反向链接却是从根本上决定 PageRank 的大小。但是,仅仅这些并不能说明第1位和第2位之间的显著差别(同样地、第3位和第4位,第6位和第7位之间的差别)。总之,绝妙之处在于 PageRank 并不只是通过反向链接数来决定的。 让我们详细地看一下。ID=1 的文件的 PageRank 是0.304,占据全体的三分之一,成为了第1位。特别需要说明的是,起到相当大效果的是从排在第3位的 ID=2 页面中得到了所有的 PageRank(0.166)数。ID=2页面有从3个地方过来的反向链接,而只有面向 ID=1页面的一个链接,因此(面向ID=1页面的)链接就得到了所有的 PageRank 数。不过,就因为 ID=1页面是正向链接和反向链接最多的页面,也可以理解它是最受欢迎的页面吧。 反过来,最后一名的 ID=6 页面只有 ID=1 的15%的微弱评价,这可以理解为是因为没有来自 PageRank 很高的 ID=1 的链接而使其有很大地影响。 总之,即使有同样的反向链接的数目,链接源页面评价的高低也影响 PageRank 的高低。 实际地试着计算一下PageRank的收支。因为λ=1所以计算很简单,只要将自各页的流入量单纯相加即可。譬如 ID=1 的流入量为, 流入量=(ID=2发出的Rank)+(ID=3发出的Rank)+(ID=5发出的Rank)+(ID=6发出的Rank) 不过,这样绝妙均衡的本身,对理解线形代数的人来说当然不会是让人惊讶的事情。因为这正是「特性值和固有矢量的性质」,总之这样被选的数值的组就是固有矢量。但即使是这样,实际试着确认一下的话,已经能够很好地使用PageRank的方法来考虑了。 以上就是 PageRank 的基本原理。 Google 做的就是大规模地处理这样的非常特性值问题。 4.实际应用时的问题 准备:数学用语(主要概率过程)的解说 从有向图表S的状态 i 出发,将有限时间之后再次回复到状态 i 的概率作为 1 时,也就是说,当沿着(有向)图表的方向前进能够回到原来位置的路径存在的时候,i 就被成为「回归」。不能回归的状态被称为「非回归」。从状态 i 出发,当通过有限次数的推移达到状态 j 的概率非负的时候,我们就说「从状态 i 到达状态 j 是可能的」。当反方向也可能到达的时候,我们称「i 和 j 互相可能到达」。从状态 i 不能到达其他任何状态的时候,称 i 为「吸收状态」。 从邻接行列 A 所决定的图表(graph)的任意顶点出发,指向其他任意的顶点图表的路径能够像箭头那样到达时被称为「强联结」( 也被称为「分解不能」)。强联结,等价于从任意状态到任意状态可以互相到达。邻接行列 A 的成分中有很多 0 时,强联结性就会有问题。注意,如果全部成分都为 aij ≠0 的话,则都属于强联结。因为,对应的 马尔可夫链的样本路径表示 S 的任意两点间以正的概率来往通行。 我们可以把全体状态以等价类(或者回归类)来划分。在这里,回归类是指链接所围成的范围。属于一个等价类的状态可以互相到达。从一个类出发以正的概率进入到其他的类的可能性也是存在的。可是很明显,在这种情况下不可能回复到原来的类。不然的话,这两个类就归于等价类了。下图表示了,当 T 作为非回归性的等价类、R 作为回归性等价类时,虽然存在 马尔可夫链 既不来自回归类,也不来自非回归类的情况,但如果一旦来自前两者的话,就不再会回到非回归类中了。 这个等价关系中只有一个回归类的时候,那个 马尔可夫链就被称为「最简」。换句话说,全部的状态之间互相可以到达时就被称为最简。最简时都是强联结。 互相完全没有关联的邻接行列(或推移概率行列),乘以恰当的置换行列(掉换行和列)以后得到 P = | P1 0 | 回归类、非回归类掺杂在一起的邻接行列(或推移概率行列),乘以恰当的置换行列后得到, P = | P1 0 | 推移概率行列有时也被称作马尔可夫行列。称马尔可夫过程的试验行列的观测结果为马尔可夫链(Markov chain)。 当经过相当的时间后马尔可夫链会趋向某种平衡状态。对任意的状态 i, 如果 j 是非回归状态,则 Pij(n)→0。相反,当 i 为非回归、j 为回归时,停留在状态 i 上着的概率是0。如果 i,j 属于同样的非周期性回归类的话,Pij(n)→Pj≥0。 定理:若 P 是有限马尔可夫行列的话,P 的特性值 1 的重复度等于 P 决定的回归类的数目。(证明太长,省略)。 跟随着推移概率行列的有向图表的最大强联结成分(与之对应的状态的集合)被称为Ergodic部分(历遍部分),此外的强联结成分被称为消散部分。因为无论从怎样的初期状态概率 x(0)开始,经过时间 n 后 x(n) = P(n)x(0),所以属于消散部分的状态概率几乎接近于0。关于EllGoth部分,连同与各联结成分对应状态的类、像独立的最简的马尔可夫链一样行动,其中,各类中的状态概率(即从过去开始的平均值)的值和初期状态概率无关,换言之,是近似于与对应 P 的最简成分的固有矢量成比例的东西。在类之间概率的分配依存于初期状态的概率。 离散时间型马尔可夫链的不变分布是属于极限分布,从那个分布开始已经不是在分布意义上的随时间的变化了。状态的概率分布在时间变化时也不会变化时被称为固定分布。PageRank 用马尔可夫过程来说就是,PageRank就是以一定时间内用户随机地沿着(网页)链接前进时对各个页面访问的固定分布。 假想模型和现实世界的不同 对于刚才举例的假想网页群来说,只要相互顺着链接前进则在彼此页面间必定有相互链接的关系。即,有向图表是强联结的行列既是回归又是最简。像上面举的很多的概率过程的教科书一样,许多证明都是把回归和最简作为前提来证明的,如果是最简的话,各种各样的性质就变得容易说了。 但是现实的网页并不是强联结。也就是说邻接行列不是最简的。具体来说,顺着链接前进的话,有时会走到完全没有向外链接的网页。通常这样的情况,只有利用 web 浏览器的「返回」功能了。如果人们只是浏览而已的话,一切就到此结束了,然而 PageRank 的计算却不能到此结束。因为PageRank 一旦被引入以后是不能返回的。Pagerank 称这种页面为为「dangling page」。同样道理,只有向外的链接而没有反向链接的页面也是存在的。但 Pagerank 并不考虑这样的页面,因为没有流入的 PageRank 而只流出的 PageRank,从对称性来考虑的话必定是很奇怪的。 同时,有时候也有链接只在一个集合内部旋转而不向外界链接的现象。这是非周期性的回归类多重存在时可能出现的问题。(请读者考虑一下陷入上图中一个 R 中而不能移动到别的 R 和 T 的情况)。 Pagerank 称之为「rank sink」。在现实中的页面,无论怎样顺着链接前进,仅仅顺着链接是绝对不能进入的页面群总归存在,也就是说,这些页面群是从互相没有关联的多数的同值类(回归类)形成的。 总之,由现实的 Web 页组成的推移概率行列大部分都不是最简的。当不是最简时,最大特性值(即1)是重复的,并且不能避免优固有矢量多数存在的问题。换句话说,PageRank 并不是从一个意义上来决定的。 在此,Pagerank 为了解决这样的问题,考虑了一种「用户虽然在许多场合都顺着当前页面中的链接前进,但时常会跳跃到完全无关的页面里」,这样的浏览模型。再者,将「时常」固定为 15% 来计算。用户在 85% 的情况下沿着链接前进,但在 15% 的情况下会突然跳跃到无关的页面中去。(注:Pagerank 的原始手法是各自87%(=1/1.15 )和13%(=0.15/1.15)。) 将此用算式来表示的话得到以下公式。 M'= c*M +(1-c)*[1/N] 其中,[1/N]是所有要素为 1/N 的 N次正方行列,c =0.85(=1-0.15)。M'当然也同样是推移概率行列了。也就是说,根据 Pagerank 的变形,原先求行列 M 的特性值问题变成了求行列 M'的优固有矢量特性值问题。M 是固定无记忆信息源(i.i.d.)时,M'被称为「混合信息源」,这也就是固定但非ellGoth信息源的典型例子。 如果从数学角度看,「把非最简的推移行列最简化」操作的另外一种说法就是「把不是强联结的图表变成强联结」的变换操作。所谓对全部的要素都考虑0.15的迁移概率,就是意味着将原本非最简的推移概率行列转换为最简并回归的(当然非负的情况也存在)推移概率行列。针对原本的推移概率行列,进行这样的变换操作的话,就能从一个意义上定义 PageRank、也就是说能保证最大特性值的重复度为1。如果考虑了这样的变换操作的话,因为推移概率行列的回归类的数目变成 1 的同时也最简化,根据前面的定理,优固有矢量(即 PageRank)就被从一个意义上定义了。 数值计算上的问题点(其1) 主记忆领域的问题是在数值计算上的问题之一。 假设 N 是 104 的 order。通常,数值计算程序内部行列和矢量是用双精度记录的,N 次正方行列 A 的记忆领域为 sizeof(double)* N * N =8 *104 * 104=800MB。 800MB 的主记忆领域不是那种经常会拥有的东西, 虽然这么说也非那种不可能的数字。但是,N 如果变成 105 或106 的话,各自就变成80GB,8TB。这样的话不用说内存就连硬盘也已经很困难了。 Google 从处理着10亿以上的页面(2001年时)以来,就知道这种规矩的做法已经完全不适用了。 不过,A 只是稀疏(sparse)行列。因为即使有一部分的页面拼命地进行链接,但是向整个Web展开链接的页面是没有的,即使有也是极为稀少的。平均一下,每一张页面有10-20个左右的链接(根据 IBM Almaden 研究所'Graph structure in the web' 的统计,平均在16.1个左右)。因此,我们可以采用恰当的压缩方法来压缩 A 。 N 即使是 106 时,如果平均链接数是10,最终的记忆领域只要 80MB,从规模上来说可以收纳到合理的数字里。 稀疏行列的容纳方式当今已经被充分地研究(有限要素法的解法等),在恰当的数值计算的专业书中就可以学到。虽然这么说,因为相当地难解还是需要很复杂的手法。但想指出的是如果可以很好的解决的话,并列化的高速计算(也许)就变得可能了。因为比起怎样排列并容纳非零要素来说,计算性能和并列性能对其的影响会更大。 数值计算上的问题点(其2) 固定方程式 xi=ΣAijxi 是 N 元的联立一次方程式,一般地不能得到分析解,所以只能解其数值。刚才举的例子中为了求特性值和固有矢量,使用了 Octave 的 eig()函数, 不过,这个在问题小的时候不能适用。说起来,并不需要计算全部的特性值/固有矢量。 求最大特性值和属于它的固有矢量(优固有矢量)的数值计算手法中,一般使用「幂乘法」(也叫反复法)。这是指,取适当初期矢量 x0 ,当 x(n+1) = A y(n) (其中 y(n) = x(n) / c(n) )中的 n →∞ 时,x 向拥有最大特性值的固有矢量收敛的同时 c 向此最大特性值收敛的利用线形代数性质的计算方法(证明请参照线形代数的教科书)。幂乘法(反复法)的特长与逐次反复计算的近似法比,能够改善解矢量的问题。它的优点是,因为只要反复对行列和矢量进行适当次数的乘法运算,所以只要通过程序就能够简单地解决,并且还可以进行由于受到内存和硬盘的限制通过直接法不能解决的大规模分析。这是许多的实用算法的出发点。 在这里,请注意从线形代数的简单定理(Peron-Frobenius定理)得到推移概率行列的绝对价值的最大特性值是1。如果采用了这个,就会使得反复法的 PageRank 的计算变得更容易。即,因为最大特性值是既知的,比起求满足 Ax=x 的矢量 x来说 ,变成更加简单的问题了。这虽然是很细小的地方但是很重要。首先,可以去掉比较花费成本的除法计算 (y(n)=x(n)/c(n))不用完成。如果是反复法的话,不能得到很高的精确度,并且如果搞错了加速方法的话,计算出的不是是最大特性值而是第二大特性值和属于它的固有矢量(虽然这种情况很少,但是说不定就是从根本上错误的值)。但如果知道了最大特性值,就可以进行核对了。在 Pagerank 的第一篇论文中他们似乎没有注意到这个事情,但在 Haveliwala 的第二论文中增加了关于此的修正。 反复的次数取决于想要求的精度。也就是说,想要求的精度越高,反复的次数就越多。可是,幂乘法(反复法)的误差的收敛比与系数行列的谱段特性(特性值的绝对值分布)有很强的依存关系。具体地说,绝对值最大的特性值用λ1表示,第二位用 λ2 表示,优越率(收敛率 probability of dominance)为 d =λ1/λ2 话,可以知道d离1越近收敛就变得越慢。在 N 很大的情况时d当然离1很近。这是因为,绝对值最大的特性值是1,而其他所有的 N-1 个特性值的绝对值都比1小。但是,N-1个特性值之间非常的拥挤,所以λ1和λ2 之间几乎没有差别。因此一般来说,收敛会变慢。 所谓收敛变慢,严密地说,就是无论经过多少时间也完成不了的计算。对此,为了使收敛加快的适当的加速方法也是存在的,应用这些方法时,需要对数值计算技术有十二分的理解,因此如果不是数值计算的专家就很难引入。 5. Namazu 上的实际安装实验 由于实验能简单地控制内存的使用量,并将最大特性值用1来考虑,所以将 Have liwala(1999)的想法做为基本的考虑方法。但是对 dangling pages 的处理有少许不同。固有矢量的计算内核使用了数值计算脚本 GNU Octave。所以基本的代码编写自己只用了一天就解决了。另外,从用 mknmz 编写的索引不能直接计算 PageRank,而要事前准备表示邻接关系的索引(邻接列表)。这个也有可能被编入检索者(Indexer)的主要部分。 以下表示了实际计算时间(单位:秒)。运行机器的配置为 PentiumII 400MHz x 2,内存512MB,Kondara MNU/Linux 1.2的(kernel-2.2 .17-15ksmp),Octave-2.0.16(一般状态分发物)。收敛精度(剩余差矢量的L1规范)取了到1.0e-10,也许有些过分精确了。 文书数N mknmz时间 准备时间 PageRank计算时间 因为 Namazu 自身中也有很多难题,所以并不寄予很大的奢望,但至少使用 105 程度(尽可能 106)规模的web页面群来实验。从趋势来看可以预想 N=106 的计算时间恐怕会发散开去,所以在 N=106 时,若是能够讨论把mknmz时间变成和comparable一样的加速方法的话,对于Personalized PageRank 来说就十分实用了。作为参考,根据Page et al.(1998),Google 对7500万的URL的实际 PageRank 计算时间约是5小时。(2001年2月现在不明)。从这个角度来说,研究更加高效的加速法的余地就十分得必要了吧。 计算实际运行时的使用内存最大也是10几MB左右。如果是Haveliwala (1999)那样的「吝啬地作战」的话,最大只有O(3N+2)左右的内存使用量就做完了,不过 N 是 104-5 程度和内存的使用量连 N2 也放不进的话,其他的也只能勉强调谐了,所以以 O(5N+α) (α是疏松行列的非零成分数字,典型的是5-20N左右) 程度来编写代码。另外 N 是103 左右时,可以确认不压缩疏松行列就在内存上使用幂乘法来计算,从速度面上来说是非常有利的。实测时速度为上述数字的6-7倍左右的。但遗憾的是,这个方法从内存的限制来看,尽可能地只使用2-3千页以内。 此次我们使用了 Octave 分发附属的「Tsurushi」,不过,正像大家知道的那样,如果把 Octave 调谐的好的话,会戏剧性地提高完成的速度。Octave-2.1.x 和 ATLAS 的组合有时候根据情况甚至会使大规模行列乘法的运算速度提高10倍以上。 实验的详细结果请参照prnmz-1.0.tar.gz 中的文档。 Personalized PageRank 的基本性质 或是象 sitemap.html 一样变成树状的情况下,分数会集中在sitemap.html中。就算占据全体的9成也不算新奇。 从现在起能说的是,为了计算有意义的 PageRank,要尽可能地排除机械生成的链接关系。如果把链接关系看做是推荐关系的话更加容易认同了吧。 6.对 PageRank 的个人的见解 不过,阅读了这些论文以后笔者自身也考虑了许多问题。在这里,列举几个对 PageRank 的个人见解。虽是见解,说到底就是方法论,也许会有很多错误的地方。 关于 dangling page,不相反考虑的原因是什么? 改善推移概率行列的可能性 考虑「逗留概率」会怎样 如果考虑概率论应用的话必定会考虑其他许多问题 不能作为非马尔可夫过程(或者说 m次的多重马尔可夫过程)来考虑吗 在考虑到和看到的许许多多中,有像实际安装那样不太难的东西,也有因为只是嘴上说说而不知道怎样实际安装的东西,不管怎样,定量地评价它的效果是极为困难的。难道真的是不能实现的东西吗? PageRank 的技术有多少 尽管是这样,充其量只触及了概要的表面就在嘴边说「没什么嘛,原来是程度这么简单的技术呀」 的那种不懂装懂的人也是有的。在这里事先强调:这种浅薄的看法是从根本上完全错误的。 当然,PageRank 技巧的非常好的地方是「从许多优质的页面连接过来的页面是还是优质的页面」,如果明白了就会觉得是简单的想法。但更进一步说,真正绝妙的地方是,不仅仅只是想到一个主意,而是将想法用固定状态变迁的概率分布来定式化,为了实证其有效性而实际地进行安装实验,并证明其在现实领域也能很好地运作的过程。在所有的这些阶段都成功了才是真正值得被称赞的。 的确,不仅有斩新而且巧妙的想法,再加上结合教科书的手法,也有可能制造出能和 Google 匹敌(或是凌驾)的搜索引擎。也可以说实际上 Google 自己也在这么做着。但是,实际完成的人却是少得惊人。假想模型中的「肯定能够完成」的东西和实际运作的东西之间有着天差地别。在实际问题上,处理大规模疏松行列本身,通过一般的手法也是相当的困难,需要高度的专业技术。应该铭记在头脑中总觉得能够理解的事和实现中能够做的事之间绝对会有不能填埋的差距。不可过分轻率地考虑。 7.参考文献 S. Brin, L. Page, 'The Anatomy of a Large-Scale Hypertextual Web Search Engine', http://www-db.stanford.edu/~backrub/google.html S.卡琳 著,佐藤健一,佐藤由身子译,『概率过程讲义』(数理分析与周边3),1974年,产业图书 其他,特别列出几个认为有关联的页面。 Interview with Google's Sergey Brin(翻译报道) (LinuxGazette) ZDNet China中文 如何提高网站在Google中的排名(2003/1/6报道) 。读不了... :-) 不过,有oo 这个拼写的英文单词有以下这些。 book, bool, cook, cool, food, good, hook, look, loop, loose, mood, moon, noon, pool, roof, soon, tool, wood, zoo, ... 这些都是简单的一般的英文单词,但不论取哪个都有「u:」这个发音。至少,对许多的典型的日本人来说听起来是这样的吧。英语(美式英语),oo 的拼写基本读成「u」。当然,goo就读成「gu:」。 广末凉子不也在中古车信息杂志的电视广告中说「如果要说车,gu―」吗?另外,游泳时使用游泳眼镜的拼写是 goggle。 当然,如果 Google 不是英语(美式英语)话那就另当别论了。但是,Google 名字的由来是从表示10的100次方的英文单词「googol」而来的,也许还是英语发音比较适合(google)吧。不用说,googol 的发音也是「guguru」吧。 另外,创业者之一是 Sergey Brin,从他的名字就能明白他是俄罗斯出身,也有可能是他的英语发音带有自己的方言。如果扯到那里的话,已经是牵强附会了。而且,我也不太清楚Google 用俄罗斯的地方口音怎么发音。如果有识之士在的话,请一定告诉我。 补充(2001/4): 给Google的支持中心发了「是goguru,还是guguru?」的询问信的一位读者,热情地给我转发了这封邮件。对方说虽然 Google 自己本身的发音是「guguru」,不过,你以你自己喜欢的叫法称呼也决不会介意的哦。
-------------------------------------------------------------------------------- |
-- 作者:url -- 发布时间:1/25/2005 10:17:00 AM -- 好像是从日文中翻译过来的,不过非常不错,就是看不懂,呵呵。 |
W 3 C h i n a ( since 2003 ) 旗 下 站 点 苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》 |
125.000ms |