问题提出

PageRank的核心思想就是:

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

因此,我们希望计算出每个网站的PR值,通过这个值来反映网站的重要程度,进而对网站排序。

这样,我们就可以对这个问题进行如下建模和猜想:

假设nn是所有可访问网页的数目,此数值非常大,定义n×nn\times n为网页链接矩阵G=(gij)Rn×nG = (g_{ij})\in R^{n\times n},若从网页jj有一个链接到网页ii,则gij=1g_{ij} = 1,否则为0。矩阵GG有如下特点:

  1. GG是大规模系数矩阵;
  2. jj列非零向量的位置表示了从网页jj链接出去的所有网页;
  3. ii行非零向量的位置表示了所有链接到网页ii的网页;
  4. GG中非零向量的数目为整个网络中存在的超链接的数目;
  5. ri=jgijr_i = \sum _j g_{ij},表示第ii个网站的入度
  6. cj=igijc_j = \sum_i g_ij,表示第jj个网站的出度

建模

为了解决这个问题,我们想象一个随机浏览网页的人,当他到达C网页后:

  1. 假定他有一定概率点击超链接(pp)到达另一个网页。即,若网页ii在网页jj的链接上,概率可以表示为:

    • p1/ci+(1p)1/np \cdot 1/c_i + (1 - p) \cdot 1/n
  2. 假定他有一个确定的概率会输入网址直接跳转到一个随机的网页,若网页ii不在网页jj的链接上,概率可以表示为:

    • (1p)1/n(1-p)\cdot 1/n

由于网页ii是否在网页jj上由gijg_{ij}决定,因此网页jjii的转移概率为:

aij=gij[p1/ci+(1p)1/n]+(1gij)[(1p)1/n]=pgijcj+1pna_{ij} = g_{ij }[p \cdot 1/c_i + (1 - p) \cdot 1/n] + (1 - g_{ij})[(1-p)\cdot 1/n]= \frac{pg_{ij}}{c_j} + \frac {1-p }{n}

应该注意的是,若Cj=0C_j = 0意味着gij=0g_{ij} = 0,则aij=1/na_{ij} = 1/n。任意两个网页之间的转移概率形成了一个转移矩阵AA,设DD为各个网页出度的导数构成的nn阶对角阵,ee是全为1的nn维向量,则:

A=pGD+1pneeTA = pGD + \frac {1-p}{n}ee^T

xi(k)x_i^{(k)}表示时刻kk浏览网页ii的概率,其中xi(k)=1\sum x_i^{(k)} = 1,那么下一刻浏览到网页ii的概率为j=1nxi(k)\sum _{j = 1}^n x_i^{(k)},此时浏览整个网页的概率分布为x(k+1)=Ax(k)x^{(k+1)} = Ax^{(k)}

当这个过程无线进行下去,达到极限情况,即网页访问概率x(k)x^{(k)}收敛到一个极限值,这个极限向量x(k)x^{(k)}为网页的PageRank,满足Ax=xAx = x,且i=1nxi=1\sum _{i = 1}^n x_i = 1

参考资料

  1. PageRank算法--从原理到实现

results matching ""

    No results matching ""