织梦CMS - 轻松建站从此开始!

龙舞天翔资料中心

Google的PageRank算法学习

时间:2012-01-25 14:45来源:http://hedong.3322.org/ 作者:竹笋炒肉 点击:
此贴看起来很是复杂,但是可以从理论上了解它的运算方式。

1、PageRank(网页级别)的概念
  互联网发展早期的搜索引擎,对web页面的排序,是根据搜索的词组(短语)在页面中的出现次数(occurence ),并用页面长度和html标签的重要性提示等进行权重修订。链接名气(link popularity)技术通过其它文档链接到当前页面(inbound links)的链接数量来决定当前页的重要性,这样可以有效地抵制被人为加工的页面欺骗搜索引擎的手法。
  PageRank计算页面的重要性,对每个链入(inbound)赋以不同的权值,链接提供页面的越重要则此链接入越高。当前页的重要性,是由其它页面的重要性决定的。

2、PageRank算法1

  PR(A) = (1-d) + d (PR(T1)/C(T1) + ... + PR(Tn)/C(Tn))
其中:PR(A):页面A的网页级别,
PR(Ti):页面Ti的网页级别,页面Ti链向页面A,
C(Ti):页面Ti链出的链接数量,
d:阻尼系数,取值在0-1之间.

由此可见,1)这个算法不以站点排序,页面网页级别由一个个独立的页面决定;2)页面的网页级别由链向它的页面的网页级别决定,但每个链入页面的贡献的值是不同的。如果Ti页面中链出越多,它对当前页面A的贡献就越小。A的链入页面越多,其网页级别也越高;3)阻尼系数的使用,减少了其它页面对当前页面A的排序贡献。

3、随机冲浪模型
  Lawrence Page 和 Sergey Brin 提出了用户行为的随机冲浪模型,来解释上述算法。他们把用户点击链接的行为,视为一种不关心内容的随机行为。而用户点击页面内的链接的概率,完全由页面上链接数量的多少决定的,这也是上面PR(Ti)/C(Ti)的原因。一个页面通过随机冲浪到达的概率就是链入它的别的页面上的链接的被点击概率的和。阻尼系数d的引入,是因为用户不可能无限的点击链接,常常因劳累而随机跳入另一个页面。d可以视为用户无限点击下去的概率,(1-d)则就是页面本身所具有的网页级别。

4、PageRank算法2(对算法1的修订)

PR(A) = (1-d) / N + d (PR(T1)/C(T1) + ... + PR(Tn)/C(Tn))
其中N是互联网上所有网页的数量

由此,所有页面的网页级别形成的一个概率分布,所有页面的网页级别之和是1。在算法1中,随机冲浪访问某个页面的概率由互联网的总页数决定,在算法2中,网页级别是一个页面被随机访问的期望值。
  以下讲解,皆基于算法1,主要是计算简单,因为不用考虑N的值。

5、PageRank的特性
  所有页面的网页级别之和等于互联网的总页数。在网页数比较少的情况下,网页级别方程可以解出,而面对互联网上成亿的网页,再解方程是不可能的。
pagerank_ex1.gif  此处设阻尼系数为0.5,虽然Lawrence Page 和 Sergey Brin在实际将其设为0.85.

PR(A) = 0.5 + 0.5 PR(C)
PR(B) = 0.5 + 0.5 (PR(A) / 2)
PR(C) = 0.5 + 0.5 (PR(A) / 2 + PR(B))
解得:
PR(A) = 14/13 = 1.07692308
PR(B) = 10/13 = 0.76923077
PR(C) = 15/13 = 1.15384615
有:
PR(A)+PR(B)+PR(C)=3

6、迭代计算pagerank
  Google采用一种近似的迭代的方法计算网页的网页级别的,也就是先给每个网页一个初始值,然后利用上面的公式,循环进行有限次运算得到近似的网页级别。根据Lawrence Page 和 Sergey Brin公开发表的文章,他们实际需要进行100次迭代才能得到整个互联网的满意的网页级别值,这儿的例子只用了10多次就可以了。在迭代的过程中,每个网页的网页级别的和是收敛于整个网络的页面数的。所以,每个页面的平均网页级别是1,实际上的值在(1-d)和(dN+(1-d))之间。

迭代次数 PR(A) PR(B) PR(C)
0 1 1 1
1 1 0.75 1.125
2 1.0625 0.765625 1.1484375
3 1.07421875 0.76855469 1.15283203
4 1.07641602 0.76910400 1.15365601
5 1.07682800 0.76920700 1.15381050
6 1.07690525 0.76922631 1.15383947
7 1.07691973 0.76922993 1.15384490
8 1.07692245 0.76923061 1.15384592
9 1.07692296 0.76923074 1.15384611
10 1.07692305 0.76923076 1.15384615
11 1.07692307 0.76923077 1.15384615
12 1.07692308 0.76923077 1.15384615

7、Google搜索引擎的网页级别的实现
  有三个因素决定的网页的等级:网页特定性因素、入链锚的文本、网页级别。
  网页特定性因素包括网页的内容、标题及URL等。
  为提供检索结果,Google根据网页特定性因素和入链锚的文本计算出网页的IR值,这个值被检索项在页面中的位置和重要性加权,以决定网页和检索请求相关性。IR值和网页级别联合标志网页的基本重要程度,这两个值的联合方式有多种,但要做乘法运算,明显的是不能相加的。
  由于网页级别只对非特定的单个词的检索请求影响比较明显,对于由多个检索词构成的检索请求,内容相关性的分级标准的影响更大。

8、用Google工具条显示当前页面的网页级别
  Google工具条是Google公司开发的IE插件,需要从Google下载并安装。注意,显示网页级别的功能是其高级功能,这时会自动收集用户的信息,并会自动升级工具条。
  这个工具条显示的网页级别分为0-10共11级,如果根据理论用(Nd+(1-d))测算,假定d=0.85,则推测实际网级别的对数即为显示的级别,且对数的基数在6-7之间。

  参考文献1中给出了一个方法,可以不经过toolbar就可以取得网站主页的网页级别,可惜因为版本或别的原因,已经不可行。下面我根据提示在IE缓冲目录里找到http://hedong.3322.org的获取URL.

http://216.239.33.104/search?client=navclient-auto&ch=5766303732&ie=UTF-8&oe=UTF-8&features=Rank:FVN&q=info:http%3A%2F%2Fhedong%2E3322%2Eorg%2F

  我的主页的网页级别是0。:( isaac和chedong的分别是5和4。

9、Google的目录服务可以显示网站的级别directory_toolbar.gif
  此处级别分为7级。有人对两种级别进行了比较。  


参考文献:
1、A Survey of Google's PageRank,http://pr.efactory.de/
2、认真从计算方法角度阐述PageRank机制2篇文章,chedong, http://www.cnblog.org/blog/archives/2003_06_15_cnblog_archive.html#95908517 (责任编辑:龙舞天翔)
织梦二维码生成器
顶一下
(1)
100%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片