现在的位置: 首页 > 综合 > 正文

深入探讨PageRank

2019年05月04日 ⁄ 综合 ⁄ 共 14357字 ⁄ 字号 评论关闭

深入探讨PageRank(一):PageRank算法原理入门

 

一、PageRank简介

大名鼎鼎的PageRank算法是Google排名运算法则(排名公式)的一个非常重要的组成部分,其用于衡量一个网站好坏的标准。在揉合了诸如TitleKeywords标识等所有其它因素之后,Google利用PageRank来调整网页的排名,使得“等级/重要性”的网页会相对排在前面。简单来说,Google通过下述几个步骤来实现网页在其搜索结果页面中排名:

1)找到所有与搜索关键词匹配的网页

2)根据页面因素如标题、关键词密度等排列等级

3)计算导入链接的锚文本中关键词

4)通过PageRank得分调整网站排名结果

事实上,真正的网站的排名过程并非这么简单,我们会在后面进行详细深入阐述。

PageRank20019月被授予美国专利,专利人是Google创始人之一的拉里.佩奇(Larry Page)。所以,PageRank里面的Page并不是指网页,而是指佩奇~PageRank对于网页重要性的级别分为1~10级,10级为满级。PR值越高说明该网页越受欢迎,也即越重要。一个PR值为1的网站表明该网站不具备流行度,而PR值为7~10的网站则表明该网站是非常受欢迎的,或者说极其重要。一般PR值达到4,就算是一相当不错的网站了。Google把自己网站的PR值设置为10~类似里氏震级,PageRank级别并不是线性增长的,而是按照一种指数刻度,打个比方PageRank4PageRank3虽然只是高了一级,但却在影响力上高上6~7倍,因此,一个PageRank5的网页和一个PageRank8的网页之间差距会比你可能认为的要大的多。

在讨论之前,先介绍两个概念:导入链接,又称逆向链接,是指链至你网站的站点,也就是我们一般所说的外部链接。而当你链至另外一个站点,那么这个站点就是你的导出链接,即你向其他网站提供本站的链接。

PageRank的思路很简单,打个比方:如何判断一篇论文的价值,即被其他论文引述的次数越多就越重要,如果被权威的论文引用,那么该论文也很重要。PageRank就是借鉴于这一思路,根据网站的外部链接和内部链接的数量和质量来衡量这个网站的价值,相当于每个到该页面的链接都是对该页面的一次投票,被链接的越多,就意味着被其他网站投票越多。这个就是所谓的链接流行度----衡量多少人愿意将他们的网站和你的网站挂钩。

搜索引擎网站排名算法中各排名因子的重要性取决于它们所提供信息的质量。但如果排名因子具有易操纵性,则往往会被一些网站管理员利用来实现不良竞争。例如初引入的排名因子之一----关键词元标识(Meta Keywords),是由于理论上它可以很好地概括反映一个页面的内容,但后来却由于一些网站管理员的恶意操纵而不得不黯然退出。

PageRank最初推出时针对的只是链接的数量,PageRank值较高的页面排名往往要比PageRank值较低的页面高,这导致了人们对于链接引用的着魔。在过去几年间,整个SEO社区人们忙于争夺、交换甚至销售链接,它是人们关注的焦点,所以被一些网站管理员钻了空子,利用链接工厂和访问簿大量低劣外部链接轻而易举地达到了自己的目的。Google意识到这个问题之后,便在系统中融合了对链接质量分析,开始放弃某些类型的链接,并对发现作弊的站点进行封杀,从而不但有效地打击了这种作法,而且保证了结果的和精准度。比如,被人们广泛接受的一条规定,来自缺乏内容的“link farm”(链接工厂)网站的链接将不会提供页面的PageRank,从PageRank较高的页面得到的链接但是内容不相差,比如说某个流行音乐网站链接到一个汽车网站就不会提供页面的PageRankGoogle选择降低了对PageRank的更新频率,以便不鼓励人们不断地对其进行监测。

PageRank一般一年更新4次,所以刚上线不久的新网站是不可能获得PR值的。你的网站很有可能在相当长的时间内是看不到PR值的变化的,特别是一些新的网站。PR值暂时没有,这不是什么不好的事情,耐心等待就好~

那么,我们如何知道一个网页的PageRank值呢?可以从http://toolbar.google.com上下载安装Google工具栏,这样就能显示所浏览网页的PageRank值了。若不能显示,可检查所安装版本号,需将老版本完全卸载,重启机器后安装最新版本即可

为你的网站获得外部的链接是一件好事,但是无视其他SEO领域的工作而进行急迫的链接建设就是在浪费时间,要时刻保持一个整体思路并记住以下几点:

1Google的排名算法并不是完全基于外部链接的。

2)高PageRank并不能保证Google的高排名。

3PageRank值更新的比较慢,今天看到的PageRank的值可能是三个月前的值。

一般来说,网站排名因素包括网页的标题(META TITLE),网页正文中的关键词密度,锚文本(也叫链接文本,指链接或超链的文本内容)和PageRank所决定的。请记住:单靠PageRank是无法使你获得比较理想的网站排名的。PageRank只是网站排名算法中的一个乘积因子,若你网站的其它排名因子的得分是0,就算你的PageRank值是1个亿都木有用,最后得分还是0。但这并不是说PageRank就毫无价值,而是在什么情况下PageRank能够完全发挥其功力。

如果在Google上进行广泛搜索,看起来好象有几千个结果,但实际显示最多前1000项结果。例如对“car rental”,显示搜索结果为5,110,000,但实际显示结果只有826个。而且用时只有0.81秒。试想一下,0.84秒的时间就可以计算这五百万搜索结果的每个排名因子得分,然后给出最终我们所看到的网站排名结果吗?

答案就在于:搜索引擎选取与查询条件最相关的那些网页形成一个子集来加快搜索的速度。例如:假设子集中包含2000个元素,搜索引擎所做的就是使用排名因子中的两到三个因素对整个数据库进行查询,找到针对这两三个排名因子得分较高的前2000个网页。(请记住,虽然可能有五百多万搜索结果,但最终实际显示的1000项搜索结果却是从这个2000页的子集中提炼出来的。然后搜索引擎再把所有排名因子整合进这2000项搜索结果组成的子集中并进行相应的网站排名。由于按相性进行排序,子集中越靠后的搜索结果(不是指网页)相关性(质量)也就越低,所以搜索引擎只向用户显示与查询条件最相关的前1000项搜索结果。

请注意,在搜索引擎生成这2000项网页的子集中我们强调了“相关性”这个词。即搜索引擎找寻的是与查询条件有共同主题的网页。如果这时候我们把PageRank考虑进去,就很可能得到一些PageRank很高但主题只是略微相关的一些搜索结果。显然这有违搜索引擎为用户提供最为相关和精准的搜索结果的原则。

一旦理解了为什么会如此,就说明了为什么你应当首先努力在“页面”因子和锚文本上下足工夫,最后才是PageRank。所以关键在于:你必须首先在页面因素和/或锚文本上下足工夫,使这些排名因子能够获得足够的得分,从而使你的网站能够按目标关键词跻身于这2,000项搜索结果的子集中,否则PageRank再高也与事无补。

因此,我们不鼓励刻意地去追求PageRank,因为决定排名的因素可以有上百种。尽管如此,PageRank还是一个用来了解Google对你的网站页面如何评价的相当好的指标,建议网站设计者要充分认识PageRankGoogle判断网站质量的重要作用,从设计前的考虑到后期网站更新都要给予PageRank足够的分析,很好的利用。我们要将PageRank看作一种业余爱好而不是一种信仰。

 

二、PageRank原理

通过对由超过50000万个变量和20亿个词汇组成的方程进行计算,PageRank能够对网页的重要性做出客观评价。PageRank并不计算直接链接的数量,而是将从网页A指向网页B的链接解释为由网页A对网页B所投的一票。这样,PageRank会根据网页B所收到的投票数量来评估该网页的重要性。此外,PageRank还会评估每个投票网页的重要性,因为某些重要网页的投票被认为具有较高的价值,这样,它所链接的网页就能获得较高的价值。这就是PageRank的核心思想,当然PageRank算法的实际实现上要复杂很多。

但是问题又来了,计算其他网页PageRank的值需要用到网页本身的PageRank值,而其他网页的PageRank值反过来又影响本网页的PageRank的值,这不就成了一个先有鸡还是先有蛋的问题了吗?Google的两个创始人拉里.佩奇(Larry Page)和谢耳盖.布林(Sergey Brin)把这个问题变成一个二维矩阵相乘的问题,并且用迭代的方法解决了这个问题。他们先假定所有网页的排名是相同的,并且根据这个初始值,算出各个网页的第一次迭代的排名,然后再根据第一次迭代排名算出第二次的排名。他们两人从理论上证明了不论初始值如何选取,这种算法都将能够保证了网页排名的估计值能够收敛到它们就有的真实值。值得一提的是,这种算法的执行是完全没有任何人工干预的。

理论问题解决了,但在实际的应用中,互联网上网页的数量是巨大的,上面提到的二维矩阵从理论上讲有网页数目平方之多个元素。如果我们假定有10亿个网页,那么这个矩阵就要有100亿亿个元素。这样大的矩阵相乘,计算量是非常之大。怎么办?怎么办?LarrySergey两利用稀疏矩阵计算的技巧,大大简化了计算量,并实现了这个网页排名算法。今天Google的工程师把这个算法移植移植到并行的计算机中,进一步缩短了计算的时间,使得网页的周期比以前短了许多。

网页排名的高明之处在于它把整个互联网当作了一个整体对等。它无意识中符合了系统论的观点。相比之下,之前的信息检索大多把每一个网页当作独立的个体对等,很多人当初只注意了网页的内容和查询语句的相差性,忽略了网页之间的关联。

今天,Google搜索引擎比最初复杂、完善了许多。但是网页的排名在Google所有算法中依然是到头重要的。在学术界,这个算法被公认为是文献检索中最大的贡献之一,并且被很多大学引入了信息检索课程的教程。

在计算网站排名时,PageRank会将网站的外部链接数考虑进去。并不能说一个网站的外部链接数越多其PR值就越高,如果这样的话,一个网站尽可能地获得最多的外部链接就OK了,这种想法是错误的。Google对一个网站上的外部链接数的重视程度并不意味着你因此可以不求策略与任何网站建立连接。这是因为Google并不是简单地由计算网站的外部链接数来决定其等级的。GooglePageRank系统不单考虑一个网站的外部链接数量,也会考虑其质量,这个问题看来很复杂。

首先来解释一下阻尼系数:当你投票或链接到另外一个站点时所获得的实际PR分值。阻尼系数一般是0.85。当然比起你网站的实际PR值,它就显得微不足道了。具体的PR值计算公式为:

PR(A) = (1 - d) + d (PR(t1) / C(t1) + … + PR(tn) / C(tn))

其中,PR(A)表示从一个外部链接站点t1上,依据PageRank系统给你的网站所增加的PR值。PR(t1)表示该外部链接网站本身的PR值,C(t1)表示该外部链接站点所拥有的外部链接数量。大家要谨记:一个网站的投票权值只有该网站PR值的0.85倍。

必须要注意的一点是:PageRank不单考虑一个网站的外部链接质量,还需要考虑其数量。打个比方:对于网站X而言,网站Y是它唯一的一个外部链接,那么Google就相信网站X将网站Y视为它最好的一个外部链接,从而给网站Y更多的分值。可是,如果网站X上已经存在了49个外部链接,那么Google就相信网站X只是将网站Y视为它第50个好网站。因而一个网站上外部链接的数量越多,它所能够提供的PR值则会越低。如果一个PR值大于等于6的外部链接站点,可显著提升你的PR值。但如果这个外部链接站点已经有100个其它的外部链接时,那么你能够得到的PR值就几乎为0了。同样,如果一个外部链接站点PR值为2,但你却是它唯一一个外部链接,那么你所能够获得的PR值要远远大于那个PR值为6,外部链接数为100的网站。

影响Google PageRank的几个重要因素:

1)与PR高的网站做链接

2)内容质量高的网站链接

3)加入搜索引擎分类目录

4)加入免费开源目录

5)你的链接出现在流量大、知名度高、频繁更新的重要网站上

6GooglePDF格式的文件比较看重

7)域名和Title标题出现关键词与Meta标签等

8)反向链接数量和反向链接等级

9Google抓取你网站的页面数量

10)导出链接数量

PageRank和其他排名因子之间存在不同:网页Title标识仅能被列出一次;正文中出现的关键词连续的重复只会降低关键词的重要性,重要的是接近度;锚文本加权值极高,但存在上限,超过上限的锚文本信息将被忽略或降低权值;PageRank潜质无穷,没有上限的限制,但需要大量工作。除了PageRank外,其它排名因子都存在一个阙值,也叫临界值或差值。即当增长到一定值时,因子的重要性反而开始慢慢降低,则该值就是非PageRank因子的阙值。

设阙值为1000,如果网页AB是我们对某一查询条件的其中两个查询结果,且A的总分数(包括页面因子得分和PageRank得分)900B500,则显然A会排在B的前面。但由于AB的分数均低于我们上面假设的非PageRank因子阙值,因而在不改变PageRank的情况下,我们可以通过对B页进行精心的页面优化使页面因子分数得到提高来使其排名超过A。但如果A的总得分升至1100分,则B若还只是一味优化页面因子是远远不够的。在这种情况下,提升PageRank就成为首要任务了。

一般说来,Google的查询结果页中既可能包含一些分数超过阙值的网页,也可能包含一些分数低于阙值的网页。所以为了提高竞争能力,必须在阙值范围内尽可能提高页面的搜索引擎排名得分,否则会降低页面的竞争力。“页面因子”是接近和达到阙值最迅捷的方式,它与PageRank的结合使用才是提升网站排名得分的最佳优化策略。阙值解释了搜索引擎商所遵循的原则和不同的实施途径,同时亦阐述了为什么会产生关于PageRank的一些误解。我们可以把这两种策略当成两个人AB

A认为“PageRank”并不重要。他们已有数年网页优化经验并知道如何完美地利用“页面因素”来达到优化的目的。他们亦理解基本的锚文本,但对PageRank得分毫不在意。结果如何呢?由于最大化地使用了“页面因子”,从而使A迅速达到“非PageRank因子的阙值”。所以通过精心选择关键词可使他们获得较好的网站排名。而且只要网站内容比较好,随着时间推移总会有排名高的站点链接,涓涓细流汇成河。A最后亦得到了PageRank得分,并籍此巩固了排名。

B认为“PageRank”十分重要。他掌握了很多关于提升PageRank得分的信息,并为提高该得分下足了工夫。结果又如何呢?B的做法和A相反,但A在非PageRank因子上下工夫,结果却得到了PageRank得分。而BPageRank因子上下工夫,结果却得到非PageRank因子得分。究其原因,就是由于提高PageRank得分需要外部链接,链接又具有锚文本,从而通过精心挑选外部链接的锚文本,B自发提高了其非PageRank因子的得分,从而赢得了较高的PageRank得分。虽然这只是两个极端,但我们可以利用它们来推知这两种途径各自的优缺点:

A:忽略PageRank  网站排名在短期内就可得到提升,自我生成链接节省了工作量,需投入大量工作维持网站排名,对新竞争者的应变速度较慢。

B:忽略页面排名因子,可获得可靠网站排名,并可在需要时轻松修改页面因素使排名迅速提升,极可能从非搜索类引擎来源上获得更高访问量,网站排名提升较慢,操作难度较大,容易为SPAM过滤程序所制。

事实上,我们前面说过,最终排名得分=所有非PageRank因子实际得分x实际PageRank得分。亦即二者相辅相成,再加上随着网上营销方式的发展壮大,关键词的竞争也变的愈来愈激烈,这种情况下只靠非PageRank因子得到好排名显然是不可能的。而且非PageRank因子存在着阙值的局限性。同时,对于竞争性极高的关键词,还存在着PageRank下限的问题。也就是说,除非网站的PageRank得分超过这个下限标准,否则网站排名很难上去。PageRank的下限由关键词的竞争度所决定。竞争性一般的关键词PageRank下限也不高,而对竞争较为激烈的关键词来说,它所要求的PageRank下限相应就要高。而PageRank得分的提升又非常有难,这时候非PageRank因子就变的非常重要了。 

综上所述:我们需要充分发挥各排名因子的优势来赢取理想的综合排名得分。同时关键词(竞争度适宜)的精心选择亦变的非常重要,它可以节省大量的支出。

三、总结

关于PageRank,最权威的发言人自然还是Google。虽然Google不会也不可能提供相关的技术信息,但我们亦可从中窥得一斑:

ChrisPageRank的命名是基于“Page”,还是和某个创始人有关?

GooglePageRank是以Google的联合创始人兼总裁Larry Page的名字命名的。

ChrisGoogle是否把PageRank视做显著区别于其它搜索引擎的一个特性?

GooglePageRank是一种能够使Google在搜索速度和搜索结果的相关性上区别于其它搜索引擎的技术。不唯如此,在排名公式中Google还使用了100种其它的算法。

ChrisGoogle是否认为引入PageRank可以显著提高搜索结果的质量?以后是否仍将继续使用PageRank

Google:由于PageRank使用了量化方法来分析链接,所以它仍将是决定Google搜索结果页排名的一个重要因素。

Chris:您认为Google工具栏上的PageRank的信息对普通用户/网站管理员/搜索引擎优化专家来说各有什么意义?

GoogleGoogle工具栏上所提供的PageRank信息仅作为一种网站评估信息使用。用户们会觉得它很有趣,网站管理员一般用它来衡量网站性能。不过,由于PageRank只是一个大体评估,所以对搜索引擎专家的价值并不大。

Chris:常有网站试图通过链接工厂和访客簿的手段达到提升PageRank的目的。对这样的网站Google有什么举措?

GoogleGoogle的工程师会经常更新Google的排名算法以防止对Google排名的恶意操纵。 

选择导入链接时应首先考虑对方网站的内容如何,然后再考察其导出链接的数量进行决策。而在建立本站的导出链接时则应尽量使自己网站的PageRank维持在最大回馈和最小流失上。应确保合理的网站设计结构和内部联接方式。网站的结构和内部联接方式也会对PageRank产生影响,可利用其特性有效进行PagaRank在网站内部页面的再分布及尽可能保持网站整体的PageRank。网站的PageRank的提升应与该网站的访问者体验息息相关。即使获得再高的PageRank,如果没有客户访问,一样毫无价值。所以网站的内容始终是提升PageRank最关键的因素之一

 

 

 

 

 

 

 

 

 

 

 

深入探讨PageRank(二):PageRank原理剖析

 

关于PageRank的基础知识简介请参见博文:《深入探讨PageRank(一):PageRank算法原理入门》

 

一、PageRank算法的简单举例

Google PageRank算法的思想精华在于:将一个网页级别/重要性的排序问题转化成了一个公共参与、以群体民主投票的方式求解的问题,网页之间的链接即被认为是投票行为。同时,各个站点投票的权重不同,重要的网站投票具有较大的分量,而该网站是否重要的标准还需要依照其PageRank值。这看似是一个矛盾的过程:即我们需要用PageRank值来计算PageRank~

听起来有点不可思议,既像是递归,又像是迭代,似乎陷入了一个漩涡,Google的创始人佩奇和布林证明了这个过程最终收敛值与初始值无关。遗憾的是我一直都没有找到这个证明,甚至我把佩奇他们当年那篇论文找出来看也没有发现~

对于PageRank的收敛性,我们是可以找到反例的,这说明PageRank至少在某些情况下是不可能收敛的,或者说是收敛不完备的。在本文的第三部分,我们将PageRank的问题转化为了马尔可夫链的概率转移问题,其收敛性的证明也即转化为了马氏链的平稳分布是否存在的证明。我们先来看一个简单的例子:

Google PageRank取值范围是0~10,为了叙述方便,我们使用0~1的区间作为度量,这并不会影响我们对PageRank原理的剖析,并且在初始化的时候,我们假设所有网站的PageRank的值是均匀分布的。这意味着,如果有N个网站,那么每个网站的PageRank初始值都是1/N。现在假设有4个网站ABCD,则它们的初始PageRank都是0.25,它们的链接关系如下:

 

则初始值PR(A) = PR(B) = PR(C) = PR(D) = 0.25,又因为BCD都有指向A的链接,因此,它们每人都为A贡献了0.25PageRank值,重新计算APageRank值为:PR(A) = PR(B) + PR(C) + PR(D) = 0.75,由于BCD并没有外部链接指向它们,因此PR(B)PR(C)PR(D)在这次计算中将被赋值为0。反复套用PageRank的计算公式,来看一下,这种情况下PageRank的收敛性,在第二次迭代之后,所有的PageRank值就都是0了:

 

PageRank

PR(A)

PR(B)

PR(C)

PR(D)

初始值

0.25

0.25

0.25

0.25

第一次迭代后

0.75

0

0

0

第二次迭代后

0

0

0

0

 

我们来分析一下这个例子PageRank收敛的情况,由于没有网站链接到D,那么第一次迭代之后PR(D)=0,这将导致PR(B)=0,继而导致PR(C)=0PR(A)=0

 

 

现在来看第个例子,假设网站B还有C链接,网站D上有其他三个网站的链接。对于B而言的话,它把自己的总价值分散投给了AC,各占一半的PageRank,即0.125CD的情况同理。即一个网站投票给其它网站PageRank的值,需要除以它所链接到的网站总数。此时PageRank的计算公式为:

 

PR(A) = PR(B) / 2 + PR(C) / 1 + PR(D) / 3

PR(B) = PR(D) / 3

PR(C) = PR(B) / 2 + PR(D) / 3

PR(D) = 0

 

 

 

 

PageRank

PR(A)

PR(B)

PR(C)

PR(D)

初始值

0.25

0.25

0.25

0.25

第一次迭代后

0.4583

0.0833

0.2083

0

第二次迭代后

0.25

0

0.0417

0

第三次迭代后

.0.417

0

0

0

第四次迭代后

0

0

0

0

 

PageRank值计算过程的一般步骤可以概括如下:

1)为每个网站设置一个初始的PageRank值。

2)第一次迭代:每个网站得到一个新的PageRank

3)第二次迭代:用这组新的PageRank再按上述公式形成另一组新的PageRank

……

当然,我们最关心的问题是,如此迭代下去,这些PageRank的值最终会收敛吗?我们上述的两个例子都是收敛的,但是不是所有情况都是如此呢?而且,上述例子中,我们发现,一旦某个页面的外部链接数目为0的话,那必然将导致全部网页最终收敛值为0

 

二、PageRank算法的“黑洞效应”

为了讨论收敛性的问题,我们暂时抛开具体的网站,把问题做一个抽象化的描述,我们可以把网页之间的关联关系理解为是若干张有向图,图与图之间是互不连通的,那我们只考虑每一部分的收敛性,并不会影响其他部分的收敛性。我们考虑把边权值当作网站所传递的PageRank值,则对于任意一个顶点而言,其出边的权值之和必为1

一个很显然的结论是,如果连通图中有一个顶点的入度为0,则经过有限次迭代之后,该连通图内的所有顶点的PageRank均为0,形象的说,这个顶点就像一个黑洞一样,把整体的PageRank值慢慢地“吸收”了。由于它不对外贡献任何PR值,所以整体的PR总和是在不断地减少,直到最终收敛到0。我把它称之为:PageRank的“黑洞效应”。至于说Google是如何防止这种情况的发生,毕竟一个网站没有外链是完全有可能的,我也尚未找到确切的答案。不过网上道是有人给出了一种解决办法:即如果一个网站没有外链,那么就假定该连通图内其余所有的网点都是它的外链,这样我们就避免了整体PageRank值被吸收的现象。

当一个连通图内部每一个顶点入度均大于0时,不难看出,PR值在内部流通过程中,整体的PR值是守恒的。如果是存在一个顶点的入度为0呢?通过一次迭代,它的PR值就会变成0,而把它的那部分PR值贡献给了图中剩余的部分。所以,最终入度为0的顶点的PR值都将是0,而整体的PR仍然守恒。那么整体的PR值守恒就一定能够保证每个顶点的PR值最终会收敛吗?下面看一个简单的例子:

按照之前的迭代步骤,会得到一个迭代的结果表。这将是一个无限循环,且不会收敛的过程。

 

PageRank

PR(A)

PR(B)

PR(C)

PR(D)

初始值

0.25

0.25

0.25

0.25

第一次迭代后

0

0.375

0.25

0.375

第二次迭代后

0

0.375

0.375

0.25

第三次迭代后

0

0.25

0.375

0.375

第四次迭代后

0

0.375

0.25

0.375

第五次迭代后

0

 

其实,同样的问题我们还可以换一个角度来考虑,因为本质上有向图和矩阵是可以相互转化的,令A[i][j]表示从顶点i到达顶点j的概率,那么目力的矩阵表示就是:

 

0     0.5  0     0.5

0     0     1     0

0     0     0     1

0     1     0     0

 

而我们所给定的初始向量是:(0.25   0.25       0.25       0.25),做第一次迭代,就相当于用初始向量乘以上面的矩阵。第二次迭代就相当于第一次迭代的结果再乘以上面的矩阵……实际上,在随机过程理论中,上述矩阵被称为“转移概率矩阵”。这种离散状态按照离散时间的随机转移过程称为马氏链(马尔可夫链,Markov Chain)。设转移概率矩阵为P,若存在正整数N,使得P^N>0(每个元素大于0),这种链被称作正则链,它存在唯一的极限状态概率,并且与初始状态无关。

在这里,我们仅仅是非常简单地讨论了一下PageRank的原理,这与Google PageRank的实际算法实现相当甚远。域名数据、内容质量、用户数据、建站时间等都有可能被考虑进去,从而形成一个完善的算法。

当然,最让人惊叹的是,GooglePageRank能够应对互联网所产生的如此海量的网页信息和实时的变化,并能够在有限的时间内计算出所有网站的PageRank!这里面到底蕴涵着什么样的奥秘,我也会继续地追寻下去!

 

三、PageRank算法的马尔科夫过程分析

从第二节的陈述中我们知道,事实上,PageRank值在转移过程中变化规律是完全可以用马尔科夫的状态转移来进行表征的,两者本质属于同一个问题。则当PageRank值收敛时,即为马尔可科夫链达到平衡分布。推荐大家去读《随机过程》的教材,这里不在详细地讨论马氏链的内容,只给出相应的结论。

为了形象说明马氏链,这里举一个例子。假设一{A, B, C}为马氏链,其转移概率矩阵如下所示:

 

0.7         0.1         0.2

0.1         0.8         0.1

0.05       0.05       0.9

 

因为该马氏链是不可约的非周期的有限状态,平稳分布存在,则我们要求其平衡分布为:

 

X = 0.7X + 0.1Y + 0.05Z

Y = 0.1X + 0.8Y + 0.05Z

Z = 0.2X + 0.1Y + 0.9Z

X + Y + Z = 1

 

解得上述方程组的平稳分布为:X = 0.1765Y = 0.2353Z = 0.5882

既然,说我们把PageRank收敛性问题转化为了求马尔可夫链的平稳分布的问题,那么我们就可以从马氏链的角度来分析问题。因此,对于PageRank的收敛性问题的证明也就迎刃而解了,只需要证明马氏链在什么情况下才会出现平稳分布即可。我们可以知道马氏链有三个推论:

推论1. 有限状态的不可约非周期马尔可夫链必存在平稳分布。

推论2. 若不可约马尔可夫链的所有状态是非常返或零常返的,则不存在平稳分布。

推论3. {Xi}是不可约的非周期马氏链的平稳分布,则lim(n→∞)Pj(n) = Xi

上面的三个推论看不懂不要紧,找本《随机过程》的书就明白了,这里不再详细讨论了。既然问题得以转化,那么我们还计算一个实例,看看PageRank是如何工作的。假设这里有相互链接关系的7HTML网页,并且HTML网页之间的链接关系闭合于这1~7个网页中,也即是说,除了这些网页之外,没有任何链接的出入。

那么我们可以很容易地将这个链接关系使用数学的方式表示出来。首先,分析链接的关系,列举出各个链接源的ID及其所链接的目标ID

 

链接源I D 链接目标 ID

1                   2,3 ,4,5, 7

2                   1

3                   1,2

4                   2,3,5

                 1,3,4,6

6                   1,5

7                   5

 

使用邻接矩阵的形式表述网页之间的链接关系,A[i][j]=1表示从ij有链接,否则表示无链接,A7*7的矩阵。

 

A = [

        0, 1, 1, 1, 1, 0, 1;

        1, 0, 0, 0, 0, 0, 0;

        1, 1, 0, 0, 0, 0, 0;

        0, 1, 1, 0, 1, 0, 0;

        1, 0, 1, 1, 0, 1, 0;

        1, 0, 0, 0, 1, 0, 0;

        0, 0, 0, 0, 1, 0, 0;

 ]

 

我们现假设,每个网页初始的PageRank均为1,则会形成一个初始的PageRank转移矩阵。

 

A = [

0,    1/5,        1/5,        1/5,        1/5,        0,    1/5;

1,    0,           0,           0,           0,           0,    0;

1/2, 1/2,        0,           0,           0,           0,    0;

0,    1/3,        1/3,        0,           1/3,        0,    0;

1/4, 0,           1/4,        1/4,        0,           1/4, 0;

1/2, 0,           0,           0,           1/2,        0,    0;

0,    0,           0,           0,           1,           0,    0;

]

 

这样的话,我们就可以按照求马氏链平稳分布的方式,求得PageRank收敛结果,方程组为:

 

X1 = X2 + X3 / 2 + X5 / 4 + X6 / 2

X2 = X1 / 5 + X3 / 2 + X4 / 3

X3 = X1 / 5 + X4 / 3 + X5 / 4

X4 = X1 / 5 + X5 / 4

X5 = X1 / 5 + X4 / 3 + X6 / 2 + X7

X6 = X5 / 4

X7 = X1 / 5

X1 + X2 + X3 + X4 + X5 + X6 + x7 = 1

 

解这个方程,最终我们得到每个网页的PageRank收敛值分别为:

X1 = 0.303514X2 = 0.38286X3 = 0.32396X4 = 0.24297X5 = 0.41231X6 = 0.10308X7 = 0.13989

PageRank的评价按顺序排列,小数点3位四舍五入,可以得到下表:

 

名次 PageRank   文件ID   发出链接ID  被链接ID

  1     0.304     1       2,3,4,5,7   2,3,5,6

  2     0.179     5       1,3,4,6     1,4,6,7

  3     0.166     2       1           1,3,4

  4     0.141     3       1,2         1,4,5

  5     0.105     4       2,3,5       1,5

  6     0.061     7       5           1

  7     0.045     6       1,5          5

 

让我们详细地看一下。ID=1 的文件的 PageRank 0.304,占据全体的三分之一,成为了第1位。特别需要说明的是,起到相当大效果的是从排在第3位的 ID=2 页面中得到了所有的 PageRank0.166)数。ID=2页面有从3个地方过来的反向链接,而只有面向 ID=1页面的一个链接,因此(面向ID=1页面的)链接就得到了所有的 PageRank 数。不过,就因为 ID=1页面是正向链接和反向链接最多的页面,也可以理解它是最受欢迎的页面吧。

 

依据上图的PageRank值,我们实际地试着计算一下PageRank的收支,只要将自各页的流入量单纯相加即可。譬如 ID=1 的流入量为:

 

ID=1的流入量=(ID=2发出的Rank)+(ID=3发出的Rank) + (ID=5发出的Rank) + (ID=6发出的Rank) = 0.166 + 0.141 / 2 + 0.179 / 4 + 0.045 / 2 = 0.30375

 

在误差范围内PageRank的收支相符合。其他页面ID的情况也一样。以上的 PageRank 推移图正表示了这个收支。沿着各自的链接发出的PageRank等于此页面原有的PageRank除以发出链接数的值,而且和各自的页面的PageRank收支相平衡。

不过,这样绝妙均衡的本身,对理解线形代数的人来说当然不会是让人惊讶的事情。因为这正是“特性值和固有矢量的性质”,总之这样被选的数值的组就是固有矢量。以上就是 PageRank 的基本原理。 Google 做的就是大规模地处理这样的非常特性值问题。

PSLZ系保研,由于没有参加考研,像《线性代数》、《随机过程》好多年没摸过了,很多知识都有所遗忘,所以写的不深入。本文的一些内容是参考了别人的博客,自己又加入了些新元素,算是做一次探讨。当然,接下来LZ会开始复习一下相关的数学知识,后续会重写本文,以便于让本文显得更为Strong~

 

参考的相关博客地址:

http://www.charlesgao.com/?p=157

http://www.kreny.com/pagerank_cn.htm

抱歉!评论已关闭.