PageRank算法简介

PageRank算法简介

最早的搜索引擎采用的是分类目录的方法,即通过人工进行网页分类并整理出高质量的网站。当时的 Yahoo 和 hao123 就是使用的这种方法。
后来网页越来越多,人工分类已经不现实了。搜索引擎进入了 文本检索 的时代,即计算用户查询关键词与网页内容的相关程度来返回搜索结果。这种方法突破了数量的限制,但是搜索结果不是很好。因为总有某些网页来回地倒腾某些关键词使自己的搜索排名靠前。
谷歌的两位创始人,当时还是美国斯坦福大学 (Stanford University) 研究生的佩奇 (Larry Page) 和布林 (Sergey Brin) 开始了对网页排序问题的研究。他们的借鉴了学术界评判学术论文重要性的通用方法, 那就是看论文的引用次数。由此想到网页的重要性也可以根据这种方法来评价。于是PageRank的核心思想就诞生了,非常简单:

  • 如果一个网页被很多其他网页链接到的话说明这个网页比较重要,也就是PageRank值会相对较高
  • 如果一个PageRank值很高的网页链接到一个其他的网页,那么被链接到的网页的PageRank值会相应地因此而提高

Simplified algorithm

PageRank算法总的来说就是预先给每个网页一个PR值(下面用PR值指代PageRank值),由于PR值物理意义上为一个网页被访问概率,所以一般是 1 N \frac{1}{N} ,其中 N N 为网页总数。另外,一般情况下,所有网页的PR值的总和为1。如果不为1,最后算出来的不同网页之间PR值的大小关系仍然是正确,但是不能直接地反映概率了。预先给定PR值后,不断迭代下面的等式,直至达到平稳分布为止:
P R ( u ) = v B u P R ( v ) L ( v ) PR(u)=\sum_{v\in B_u}\frac{PR(v)}{L(v)}

B u B_u 表示链接到 u u 的网页的集合, L ( v ) L(v) 表示节点 v v 的连出的边的数目。

Damping factor

互联网中一个网页只有对自己的出链,或者几个网页的出链形成一个循环圈。那么在不断地迭代过程中,这一个或几个网页的PR值将只增不减,显然不合理。为了解决这个问题,PageRank认为人们以一定概率随机跳到任意一个网页,那么上面的等式就变为:
P R ( u ) = 1 d N + v B u P R ( v ) L ( v ) PR(u)=\frac{1-d}{N}+\sum_{v\in B_u}\frac{PR(v)}{L(v)}

Damping factor一般设为0.85,Bayesian analysis认为最优值为0.31。

Computation

幂迭代法

初始化: P R ( u ; 0 ) = 1 N PR(u;0)=\frac{1}{N}
迭代: P R ( u ; t + 1 ) = 1 d N + v B u P R ( v ; t ) L ( v ) PR(u;t+1)=\frac{1-d}{N}+\sum_{v\in B_u}\frac{PR(v;t)}{L(v)} ,也可以看成是矩阵乘法 R ( t + 1 ) = d M R ( t ) + 1 d N R(t+1)=dMR(t)+\frac{1-d}{N} M = ( K 1 A ) T M=(K^{-1}A)^T A A 是链接矩阵, K K 是出度对角线矩阵。
终止条件: R ( t + 1 ) R ( t ) < ϵ |R(t+1)-R(t)|<\epsilon

特征值法

因为收敛之后, R M R R\approx MR ,所以 R R 为矩阵 M M 特征值1对应的特征向量。

代数法

因为 R = d M R + 1 d N R=dMR+\frac{1-d}{N} ,那么 R = ( I d M ) 1 1 d N R=(I-dM)^{-1}\frac{1-d}{N}

缺点

PageRank原理简单但效果惊人。然而,PageRank算法还是有一些弊端。
第一,没有区分站内导航链接。很多网站的首页都有很多对站内其他页面的链接,称为站内导航链接。这些链接与不同网站之间的链接相比,肯定是后者更能体现PageRank值的传递关系。
第二,没有过滤广告链接和功能链接(例如常见的“分享到微博”)。这些链接通常没有什么实际价值,前者链接到广告页面,后者常常链接到某个社交网站首页。
第三,对新网页不友好。一个新网页的一般入链相对较少,即使它的内容的质量很高,要成为一个高PR值的页面仍需要很长时间的推广。
针对PageRank算法的缺点,有人提出了TrustRank算法。其最初来自于2004年斯坦福大学和雅虎的一项联合研究,用来检测垃圾网站。TrustRank算法的工作原理:先人工去识别高质量的页面(即“种子”页面),那么由“种子”页面指向的页面也可能是高质量页面,即其TR值也高,与“种子”页面的链接越远,页面的TR值越低。“种子”页面可选出链数较多的网页,也可选PR值较高的网站。
TrustRank算法给出每个网页的TR值。将PR值与TR值结合起来,可以更准确地判断网页的重要性。

现状

谷歌用PR值来划分网页的等级,有0~10级,一般4级以上的都是比较好的网页了。谷歌自己PR值为9,百度也是9。
如今PR值虽不如以前重要了(没有区分页面内的导航链接、广告链接和功能链接导致PR值本身能够反映出的网页价值不精确,并且对新网页不友好),但是PR值还是个很重要的参考因素。

参考文献:
PageRank算法–从原理到实现
WIki

猜你喜欢

转载自blog.csdn.net/SrdLaplace/article/details/83310475