问题提出
PageRank的核心思想就是:
- 如果一个网页被很多其他网页链接到的话说明这个网页比较重要,也就是PageRank值会相对较高
- 如果一个PageRank值很高的网页链接到一个其他的网页,那么被链接到的网页的PageRank值会相应地因此而提高
因此,我们希望计算出每个网站的PR值,通过这个值来反映网站的重要程度,进而对网站排序。
这样,我们就可以对这个问题进行如下建模和猜想:
假设n是所有可访问网页的数目,此数值非常大,定义n×n为网页链接矩阵G=(gij)∈Rn×n,若从网页j有一个链接到网页i,则gij=1,否则为0。矩阵G有如下特点:
- G是大规模系数矩阵;
- 第j列非零向量的位置表示了从网页j链接出去的所有网页;
- 第i行非零向量的位置表示了所有链接到网页i的网页;
- G中非零向量的数目为整个网络中存在的超链接的数目;
- ri=∑jgij,表示第i个网站的入度;
- cj=∑igij,表示第j个网站的出度;
建模
为了解决这个问题,我们想象一个随机浏览网页的人,当他到达C网页后:
假定他有一定概率点击超链接(p)到达另一个网页。即,若网页i在网页j的链接上,概率可以表示为:
- p⋅1/ci+(1−p)⋅1/n
假定他有一个确定的概率会输入网址直接跳转到一个随机的网页,若网页i不在网页j的链接上,概率可以表示为:
- (1−p)⋅1/n
由于网页i是否在网页j上由gij决定,因此网页j到i的转移概率为:
aij=gij[p⋅1/ci+(1−p)⋅1/n]+(1−gij)[(1−p)⋅1/n]=cjpgij+n1−p
应该注意的是,若Cj=0意味着gij=0,则aij=1/n。任意两个网页之间的转移概率形成了一个转移矩阵A,设D为各个网页出度的导数构成的n阶对角阵,e是全为1的n维向量,则:
A=pGD+n1−peeT
设xi(k)表示时刻k浏览网页i的概率,其中∑xi(k)=1,那么下一刻浏览到网页i的概率为∑j=1nxi(k),此时浏览整个网页的概率分布为x(k+1)=Ax(k)。
当这个过程无线进行下去,达到极限情况,即网页访问概率x(k)收敛到一个极限值,这个极限向量x(k)为网页的PageRank,满足Ax=x,且∑i=1nxi=1。
参考资料
- PageRank算法--从原理到实现