君子博学而日参省乎己 则知明而行无过矣

博客园 首页 新随笔 联系 订阅 管理

Google的Lawrence Page和Sergey Brin为PageRank(PR)算法给出了一个非常简单直观的解释。他们将PageRank视作一种模型,就是用户不关心网页内容而随机点击链接。

  网页的PageRank值决定了随机访问到这个页面的概率。用户点击页面内的链接的概率,完全由页面上链接数量的多少决定的,这也是上面PR(Ti)/C(Ti)的原因。

  因此,一个页面通过随机冲浪到达的概率就是链入它的别的页面上的链接的被点击概率的和。并且,阻尼系数d减低了这个概率。阻尼系数d的引入,是因为用户不可能无限的点击链接,常常因无聊而随机跳入另一个页面。

  阻尼系数d定义为用户不断随机点击链接的概率,所以,它取决于点击的次数,被设定为 0-1之间。d的值越高,继续点击链接的概率就越大。因此,用户停止点击并随机冲浪至另一页面的概率在式子中用常数(1-d)表示。无论入站链接如何,随机冲浪至一个页面的概率总是(1-d)。(1-d)本身也就是页面本身所具有的PageRank值。

  Lawrence Page和Sergey Brin在不同的刊物中发表了2个不同版本的PageRank的算法公式。在第二个版本的算法里,页面A的PageRank值是这样得到的:

  PR(A) = (1-d) / N + d (PR(T1)/C(T1) + ... + PR(Tn)/C(Tn)) ——算法2

  这里的N是整个互联网网页的总数。这个算法2,并不是完全不同于算法1。随机冲浪模型中,算法2中页面的PageRank值就是在点击许多链接后到达这个页面页面的实际概率。因此,互联网上所有网页的PageRank值形成一个概率分布,所有RageRank值之和为1。

  相反地,第一种算法中随机访问到一个页面的概率受到互联网网页总数的影响。因此,算法2 解得的PageRank值就是用户开始访问过程后,该页面被随机访问到的概率的期望值。如果互联网有100个网页,其中一个页面PageRank值为2;那么,如果他将访问互联网的过程重新开始100次(xdanger注:这句话具体含义是,该用户随机点击网页上的链接进入另一个页面,每点击一次都有一定概率因疲劳或厌倦或其他任何原因停止继续点击,这就是阻尼系数d的含义;每当停止点击后,即算作此次访问结束,然后随机给出一个页面让他开始另一次访问过程;让他将这样的“手续”重复进行100次),平均就有2次访问到该页面。

  就像前面所提到的,两种算法并非彼此是本质的不同。用算法2解得的PR(A)乘以互联网的总网页数N,即得到由算法1解得的PR(A)。Page和Brin在他们最著名的刊物《The Anatomy of a Large-Scale Hypertextual Web Search Engine》中调和了两种算法,文中声称算法1是将PageRank形成对于互联网网页的一个概率分布,其和为1。

  接下来,我们将使用算法1。理由是算法1忽略了互联网的网页总数,使得更易于计算。

  假设一个小网站由三个页面A、B、C组成,A连接到B和C,B连接到C,C连接到A。虽然Page和Brin实际上将阻尼系数d设为0.85,但这里我们为了简便计算就将其设为0.5。尽管阻尼系数d的精确值无疑是影响到PageRank值的,可是它并不影响PageRank计算的原理。因此,我们得到以下计算PageRank值的方程:

  (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))

  这些方程很容易求解,以下得到每个页面的PageRank值:

  PR(A) = 14/13 = 1.07692308

  PR(B) = 10/13 = 0.76923077

  PR(C) = 15/13 = 1.15384615

  很明显所有页面PageRank之和为3,等于网页的总数。就像以上所提的,此结果对于这个简单的范例来说并不特殊。

  对于这个只有三个页面的简单范例来说,通过方程组很容易求得PageRank值。但实际上,互联网包含数以亿计的文档,是不可能解方程组的。

  PageRank的迭代计算

  由于实际的互联网网页数量,Google搜索引擎使用了一个近似的、迭代的计算方法计算 PageRank值。就是说先给每个网页一个初始值,然后利用上面的公式,循环进行有限次运算得到近似的PageRank值。我们再次使用“三页面”的范例来说明迭代计算,这里设每个页面的初始值为1。

  迭代次数PR(A)PR(B)PR(C)

  0111

  110.751.125

  21.06250.7656251.1484375

  31.074218750.768554691.15283203

  41.076416020.769104001.15365601

  51.076828000.769207001.15381050

  61.076905250.769226311.15383947

  71.076919730.769229931.15384490

  81.076922450.769230611.15384592

  91.076922960.769230741.15384611

  101.076923050.769230761.15384615

  111.076923070.769230771.15384615

  121.076923080.769230771.15384615

  重复几次后,我们的到一个良好的接近PageRank理想值的近似值。根据Lawrence Page和Sergey Brin共开发表的文章,他们实际需要进行100次迭代才能得到整个互联网的满意的网页级别值。

  同样,用迭代计算的方式,每个网页的PageRank值之和仍然收敛于整个网络的页面数的。因此,每个页面的平均的PageRank值为1。实际上的值在(1-d)和(dN+(1-d))之间,这里的N是互联网网页总数。如果所有页面都连接到一个页面,并且此页单独地连接自身,那么将出现理论上的最大值。

posted on 2012-06-07 11:11  刺猬的温驯  阅读(310)  评论(0编辑  收藏  举报