浅谈PageRank

浅谈PageRank

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处连接和本声明。
本文连接: https://blog.csdn.net/guoziqing506/article/details/70702449

1996年,两位还在斯坦福大学攻读计算机理学博士学位的研究生,开始了一项研究:如何对互联网上“成万上亿”的网页进行排序。在当时看来,这只是发生在斯坦福的一个普通课题研究而已,然而包括其研究者在内,都没有意识到,这项研究最后的成果,会引起互联网搜索引擎领域一个划时代的变革。php

这两位博士的名字相信你们都很熟悉了,他们正是后来大名鼎鼎的Google公司的创始人:拉里佩奇(Larry Page)和谢尔盖布林(Sergey Brin)。而Google做为全球最大的搜索引擎,在其创立之初,使用的核心算法正是咱们今天要讲的PageRank.html

搜索引擎的发展瓶颈

搜索引擎的根本用途在于根据用户的查询,快速而准确地从网络的海洋中找到用户最须要的网页。这是针对网页的一类特殊的信息检索过程。它主要有如下两个特色:算法

  • 搜索的数据量至关大
  • 搜索的数据之间质量良莠不齐

所以,基本的解决思路是根据查询,对这些网页进行排序,按照对用户搜索目的的判断,将最符合用户需求的网页依次排在最前面。也就是说,搜索引擎要解决的最主要问题是对网页排序模型的设计。浏览器

佩奇和布林两我的开始这项研究的原因来自于导师的提议,由于当时搜索引擎的发展遇到了瓶颈——缺少合理的排序算法。在1998年以前(也就是PageRank正式问世的那一年以前),即使是当时最早进的搜索引擎,也是主要依靠以关键词词频为核心的排序技术(这一点在文档检索中保持了旺盛的生命力,咱们到如今还主要依靠”TF×IDFTF(词频)×IDF(逆向文件频率) ”模型为搜索结果排序)。可是在搜索引擎技术中,依赖于词频的模型有其自然缺陷:网页排序的结果仅仅考虑了基于关键词的相关度判断,而未考虑网页自己的质量。显而易见的是,海量的网页来自不一样的制造者,质量必定是良莠不齐的。能够想象,若是有一些低质量的网页对于某些词的词频很高,这至关因而一我的一直在无心义的絮叨某句话,虽然毫无信息量可言的垃圾,却在基于关键词的模型下如鱼得水,一旦其中某个词被查到,当即能“崭露头角”。这一点在当时正是阻碍搜索引擎发展的最大困难。好比,使人感到讽刺的是,在1997年,堪称早期互联网巨子的当时四大搜索引擎在搜索本身公司的名字时, 竟然只有一个能使之出如今搜索结果的前十名内,其他全被这种垃圾网页挤到后面去了[1]。markdown

总结一下,网页排序的任务中,最核心的难点在于判别网页质量。若是网页数量不多,这件事就简单了,靠人工赋予其得分便可,但实际状况是:互联网山网页如大海般浩瀚,且新的网页不断产生,旧的网页也在不停变化,这是人工所不可能完成的任务。咱们只能依靠计算机和算法,自动评估网页质量。因而,当时正在读博的佩奇和布林想到了学术论文的质量判别方法:依靠文章的引用状况。一篇论文的好坏固然与它的引用直接相关,有多少文章引用,什么样级别的文章在引用,才是判断一个文章质量最“靠谱”的标准。这一点放在网页排序上也是同样,论文的引用至关于就是网页的连接,不论某个网页再怎么在关键词方面作“手脚”,没人愿意连接你,那仍是白扯。因而,做为一门学问的“连接分析”就此产生了,这一点也是PageRank算法最基本的原理。网络

连接分析

根据上面的分析,咱们能够将互联网上的网页模拟为一个节点,而这个网页的“出链”看作是指向其余节点的一条“有向边”,而“入链”则是其余节点指向这个节点的有向边。这样整个网络就变成了一张有向图。事情到此就显得容易解决了,由于咱们用图论中最普通的有向图模型,完成了对此类问题的建模。具体的说,网页质量的评估是遵循如下两个假设的:机器学习

  1. 数量假设:一个节点(网页)的入度(被连接数)越大,页面质量越高
  2. 质量假设:一个节点(网页)的入度的来源(哪些网页在连接它)质量越高,页面质量越高

可是如今还面临着一个问题,就是既然一个网页A的质量与连接它的页面质量相关,而连接A的那些页面(咱们记为B)的质量又与连接B们的页面相关。以此类推下去,好像进入了一个无穷无尽的死循环。为了解决这个问题,两颗聪明的大脑又想到,也许能够用数学中随机过程的“随机游走模型”解决这个问题。随机游走模型又称“醉汉模型”,指的是事物当前的状态只与其上一个状态有关,而与其再以前的状态无关。就比如一个醉汉,他这一步走到哪里只跟他上一步在哪里有关,这有点接近于物理学中常讲的“布朗运动”。用户上网也能够看作是一个相似的过程。咱们能够假设,初始状态时,用户访问全部页面的几率都是等大的,而每次访问事后,用户会依照此时该页面中给出的连接以相等几率访问连接所指向的页面,那这就比如是用户在刚刚咱们所说的有向图上作“随机游走”。因此,经过对这种随机游走的几率分析,咱们就能获得用户在上网时,停留在哪个网页上的几率要大一些,几率越大的,表示其质量越高。性能

PageRank

如今,咱们将上面的两个假设以及随机游走模型数学化。若是说最终的目的是要为每一个网页赋予一个得分的话,那么在初始化阶段,全部网页的得分应该是相等的,假设如今一共有NN 个网页,那么初始阶段用户访问每一个网页的几率就是1N1N ,好比下图中的初始几率向量为(1/4,1/4,1/4,1/4)(1/4,1/4,1/4,1/4) ,而由于每一个网页均可能存在着到其余任何网页的连接,因此,咱们能够将这些连接以平均的几率表示成一个几率转移向量。好比下面这张图,(图的来源:PageRank算法–从原理到实现)网页A中有3个连接,分别指向B, C, D,则A的几率转移向量为(0,1/3,1/3,1/3)(0,1/3,1/3,1/3) ,向量的维度依次对应的是网页A指向A, B, C, D四个网页的几率。学习

 


 

显然,每一个网页都有这样一个几率转移向量,咱们把这些向量转置后(按列放置)合起来就是随机过程当中经典的几率转移矩阵了,以下:网站

 

 
⎛⎝⎜⎜⎜⎜01/31/31/31/2001/2100001/21/20⎞⎠⎟⎟⎟⎟(01/2101/3001/21/3001/21/31/200)

 

不难理解,这种几率转移矩阵的一个显著的特征是每一个元素都0≥0 ,且列和为1,含义表示从当前网页跳转到其余网页的几率和为1。咱们记这个矩阵为TT ,T[i][j]T[i][j] 的含义是既能够表示由网页ii 跳转至网页jj 的几率,又能够表示由网页jj 跳转至网页ii 的几率。

根据这个矩阵,咱们可以计算出通过一次网页跳转以后,用户访问到每一个网页的几率分布,好比上图中,通过一次跳转以后,用户访问到各个网页的几率能够以下计算:

 

 
V1=TV0=⎛⎝⎜⎜⎜⎜01/31/31/31/2001/2100001/21/20⎞⎠⎟⎟⎟⎟⎛⎝⎜⎜⎜⎜1/41/41/41/4⎞⎠⎟⎟⎟⎟=⎛⎝⎜⎜⎜⎜9/245/245/245/24⎞⎠⎟⎟⎟⎟V1=T⋅V0=(01/2101/3001/21/3001/21/31/200)⋅(1/41/41/41/4)=(9/245/245/245/24)

 

其中,TT 为几率转移矩阵。同理,咱们能够按照这个方法持续计算到用户第nn 次跳转以后的几率分布,公式以下:

 

 
Vn=TVn1=TnV0Vn=T⋅Vn−1=Tn⋅V0

 

佩奇和布林发现,当n+n→+∞ ,且几率转移矩阵TT 知足如下3个条件时,limn+Vnlimn→+∞Vn 最终收敛,保持在一个稳定值附近。

  • TT 为随机矩阵。即全部T[i][j]0T[i][j]≥0 ,且的全部列向量的元素加和为1,ni=1T[i][j]=1∑i=1nT[i][j]=1

  • TT 是不可约的。所谓不可约是说TT 所对应的图示强连通的,即图中任何一个节点均可以达到其余任何一个节点,它要求几率转移矩阵不存在某些特殊状况,好比某个列向量都为0,即有一个网页没有连接到任何其余网页,咱们把这类状况又称为终止点;或者是在几率转移矩阵的主对角线上,存在有一个元素为1的状况,即这个网页连接只连接它本身,咱们把这类状况又称为陷阱。这两类特殊的情形在后面会详细说。

  • TT 是非周期的。所谓周期性,体如今Markov链的周期性上。即若A是周期性的,那么这个Markov链的状态就是周期性变化的。由于A是素矩阵(素矩阵指自身的某个次幂为正矩阵的矩阵),因此A是非周期的

好比上面这个例子中,limn+Vn=limn+TnV0=(3/9,2/9,2/9,2/9)Tlimn→+∞Vn=limn→+∞Tn⋅V0=(3/9,2/9,2/9,2/9)T

这代表,通过足够屡次的网页跳转,用户停留在网页A的几率要比停留在B, C, D的几率高,然后三者基本是等几率的。通过这样的计算获得的每一个网页的几率值也叫PR值,是评估网页质量的依据。也就是说,在咱们使用搜索引擎时,在保持网页与查询必定相关度的基础上,PR值能够提供很是不错的排序依据。

终止点和陷阱

然而,如今存在的问题是,上面的全部推导都是创建在理想状态下的,即假设全部网页组成的这个有向图是强连通的。可是实际上,网页形形色色,总有那么一些“奇葩”存在,从而在PageRank中,对算法会产生“恶劣”影响,基本上有2种状况:终止点陷阱。

终止点

终止点指的是没有任何出链的网页。能够想象,按照上面这种随机游走模型,用户访问到这个网页后,由于找不到连接,就会“四顾茫然”,不知下一步该怎么办了。好比下图中,网页C没有出链。这种状况下,几率转移矩阵在终止点对应的那一列,全部元素都是0,代入上面的PR值计算公式,会发现通过无穷屡次跳转后,全部网页的PR值都是0:

 


 

上图对应的几率转移矩阵为:

 

 
T=⎛⎝⎜⎜⎜⎜01/31/31/31/2001/2000001/21/20⎞⎠⎟⎟⎟⎟T=(01/2001/3001/21/3001/21/31/200)

 

可见,对应C的第3列全为0,迭代计算PR值,最后的结果都是0:

 

 
⎛⎝⎜⎜⎜⎜1/41/41/41/4⎞⎠⎟⎟⎟⎟⎛⎝⎜⎜⎜⎜3/345/245/245/24⎞⎠⎟⎟⎟⎟⎛⎝⎜⎜⎜⎜5/487/487/487/48⎞⎠⎟⎟⎟⎟⎛⎝⎜⎜⎜0000⎞⎠⎟⎟⎟ (1/41/41/41/4)→(3/345/245/245/24)→(5/487/487/487/48)→…(0000) 

 

那这样的计算结果固然是毫无心义的。

陷阱

陷阱指的是只有指向自身连接的网页。这种状况下,全部“随机游走”的用户到了这个网页后,就如同进了黑洞通常,一直在里面“打转”,出不来了。好比下图中,网页C只有一条出链,而且仍是指向它本身的,这就把C变成了陷阱。

 


 

有陷阱的网络对应的几率转移矩阵中,主对角线上存在至少一个为1的元素(主对角线存在nn 个1,就表明整个网络中有nn 个陷阱)。

 

 
T=⎛⎝⎜⎜⎜⎜01/31/31/31/2001/2001001/21/20⎞⎠⎟⎟⎟⎟T=(01/2001/3001/21/3011/21/31/200)

 

这种状况下,陷阱的PR值为1,而其余正常网页的PR值为0。迭代计算的结果大体以下:

 

 
⎛⎝⎜⎜⎜⎜1/41/41/41/4⎞⎠⎟⎟⎟⎟⎛⎝⎜⎜⎜⎜3/245/2411/245/24⎞⎠⎟⎟⎟⎟⎛⎝⎜⎜⎜⎜5/487/4829/487/48⎞⎠⎟⎟⎟⎟⎛⎝⎜⎜⎜0010⎞⎠⎟⎟⎟ (1/41/41/41/4)→(3/245/2411/245/24)→(5/487/4829/487/48)→…(0010) 

固然,这种结果也是毫无参考意义的。

 

解决思路

为了解决这两个致命的问题,佩奇和布林想到,他们最初定义的用户的上网模型是不够准确的,由于用户不是傻乎乎的机器,他们是具备聪明大脑的人,当一我的遇到终止点或者陷阱的话,他不会不止所错,也不会无休止地本身打转,他会经过浏览器的地址栏输入新的地址,以逃离这个网页。也就是说,用户从一个网页转至另外一个网页的过程当中,会以必定的几率不点击当前网页中的连接,而是访问一个本身从新输入的新地址。咱们能够依照这个原理修正以前的几率转移公式,以下:

 

 
Vn=αTVn1+(1α)V0Vn=αTVn−1+(1−α)V0

 

其中,αα 为用户继续点击当前网页中的连接的几率,(1α)(1−α) 为用户经过地址栏“逃离”的几率。关于这里的αα ,其实很讲究,首先αα 不能太大,由于αα 的大小与算法的收敛速度呈反比,
αα 太大会致使算法收敛慢而影响性能;其次,αα 也不能过小,由于PageRank的精华就在于上面的公式中前一部分——由几率转矩阵的屡次迭代计算获得PR值。因此,最终两位博士将αα 值定为0.85.

咱们来看通过这样处理以后,上面的终止点和陷阱问题可否获得解决:

当存在终止点时,迭代的结果为:

 
⎛⎝⎜⎜⎜⎜1/41/41/41/4⎞⎠⎟⎟⎟⎟⎛⎝⎜⎜⎜0.140.210.210.21⎞⎠⎟⎟⎟⎛⎝⎜⎜⎜0.10.10.10.1⎞⎠⎟⎟⎟ (1/41/41/41/4)→(0.140.210.210.21)→(0.10.10.10.1) 

 

当存在陷阱时,迭代的结果为:

 

 
⎛⎝⎜⎜⎜⎜1/41/41/41/4⎞⎠⎟⎟⎟⎟⎛⎝⎜⎜⎜0.140.210.420.21⎞⎠⎟⎟⎟⎛⎝⎜⎜⎜0.10.10.70.1⎞⎠⎟⎟⎟ (1/41/41/41/4)→(0.140.210.420.21)→…(0.10.10.70.1) 

 

这样就解决了终止点与陷阱的问题。

PageRank的不足

PageRank的优势太明显,从它取得的巨大成功就可见一斑。可是他也并不是十全十美,文献[2]总结了PageRank的一些缺点,我将它们摘抄以下:

第一,没有区分站内导航连接。不少网站的首页都有不少对站内其余页面的连接,称为站内导航连接。这些连接与不一样网站之间的连接相比,确定是后者更能体现PageRank值的传递关系。

第二,没有过滤广告连接和功能连接(例如常见的“分享到微博”)。这些连接一般没有什么实际价值,前者连接到广告页面,后者经常连接到某个社交网站首页。

第三,对新网页不友好。一个新网页的通常入链相对较少,即便它的内容的质量很高,要成为一个高PR值的页面仍须要很长时间的推广。

结语

当今的搜索引擎固然与20年前不可同日而语,PageRank早已不是惟一的网页质量评估算法了,比较主流的搜索引擎用到的搜索算法数量成百,是一个多算法,多层次的系统。可是咱们依然不能忘记搜索引擎系统曾经这一次巨大的变革,完全改变了咱们对信息检索的认识。

不得不说,PageRank是20世纪末计算机科学史上的一大奇迹,它以及其简明的逻辑,发明了迄今为止在搜索引擎领域还至关有表明性的算法,解决了数以亿计的网页质量评估问题,抛开它难以估量的商业价值不谈,就说其学术方面,这种依靠数据自身结构的学习方法,也依然还在当前不少信息检索领域启发着咱们。

最后,我想以一个故事结束[1]: 2001年, 佩奇为”PageRank”申请到了专利,专利的发明人为佩奇,拥有者则是他和布林的母校斯坦福大学。2004 年 8 月, 谷歌成为了一家初始市值约17亿美圆的上市公司。不只公司高管在一晚上间成为了亿万富翁,就连当初给过他们几十美圆 “赞助费” 的某些同事和朋友也获得了足够终身养老所用的股票回报。做为公司摇篮的斯坦福大学则因拥有”PageRank”的专利而得到了180万股谷歌股票。2005 年 12 月,斯坦福大学经过卖掉那些股票得到了3.36亿美圆的巨额收益,成为美国高校因支持技术研发而得到的有史以来最巨额的收益之一。从投资角度讲, 斯坦福大学显然是过早卖掉了股票,不然获利将更为丰厚。不过,这正是美国名校的一个难得之处,它们虽擅长从支持技术研发中获利,却并不惟利是图。 它们有本身的原则,那就是不能让商业利益干扰学术研究。为此,它们一般不肯长时间持有特定公司的股票,以避免在无形中干扰与该公司存在竞争关系的学术研究的开展。

我这里没有崇洋媚外的意思,不过我想说,美国的大学,至少是一部分名校,是有所谓的“大学精神”的。大家能够想象一下,假如两个中国学生发明了PageRank,创建了Google这样的企业,会不会有哪一个学校像斯坦福这般处理所持有的股票呢?中国想建设世界一流的大学,任重而道远!

[1] 谷歌背后的数学
[2] PageRank算法–从原理到实现

相关文章
相关标签/搜索