PageRank算法

什么是PageRank?

P a g e R a n k PageRank PageRank算法由 G o o g l e Google Google创始人 L a r r y   P a g e Larry\ Page Larry Page在斯坦福大学时提出,又称 P R PR PR,佩奇排名。主要针对网页进行排名,计算网站的重要性优化搜索引擎的搜索结果 P R PR PR值表示其重要性的因子。


算法中心思想

数量假设
当在网页模型图中,一个网页受到的其他网页指向的入链( i n − l i n k s in-links inlinks)越多,说明该网页越重要。
在这里插入图片描述


质量假设
当一个质量高的网页指向( o u t − l i n k s out-links outlinks)一个网页,说明这个被指的网页很重要
在这里插入图片描述


入链与出链
在这里插入图片描述


PageRank公式

P R ( a ) i + 1 = ∑ j = 0 n P R ( T j ) i L ( T j ) PR(a)_{i+1}=\sum_{j=0}^n\frac{PR(T_j)_i}{L(T_j)} PR(a)i+1=j=0nL(Tj)PR(Tj)i

  • P R ( a ) i PR(a)_i PR(a)i:表示第 i i i轮迭代,节点 a a a P R PR PR
  • T j T_j Tj T T T表示指向节点 a a a的节点的集合; T T T中共有 n n n个节点, T j T_j Tj表示集合中的第 j j j个节点
  • P R ( T j ) i PR(T_j)_i PR(Tj)i:第 j j j个指向 a a a的节点的 P R PR PR值, i i i表示第 i i i轮迭代
  • L ( T j ) L(T_j) L(Tj):第 j j j个指向 a a a的节点的出链数
  • P a g e R a n k PageRank PageRank算法的基本想法是在有向图上定义一个随机游走模型,即一阶马尔可夫链,描述随机游走者沿着有向图随机访问各个结点的行为。
  • 浏览者在每个网页依照连接出去的超链接以等概率跳转到下一个网页,并在网上持续不断进行这样的随机跳转,这个过程形成随机游走的一阶马尔可夫链。
  • 即每次 P R PR PR的更新只会考虑一跳距离的网页,当迭代的次数足够多就能通过其他所有的网页信息得出自己的 P R PR PR值。

实例:

在这里插入图片描述

循环次数 循环次数 循环次数\ P R 值 PR值 PR P R ( A ) PR(A) PR(A) P R ( B ) PR(B) PR(B) P R ( C ) PR(C) PR(C) P R ( D ) PR(D) PR(D)
i = 0 i=0 i=0 , P R PR PR值初始化为 1 N \frac{1}{N} N1 1 N \frac{1}{N} N1 1 N \frac{1}{N} N1 1 N \frac{1}{N} N1 1 N \frac{1}{N} N1

i = 0 i=0 i=0,第一轮循环:

先求 P R ( A ) 1 PR(A)_{1} PR(A)1
P R ( A ) 1 = ∑ j = 0 n P R ( T j ) 0 L ( T j ) = P R ( C ) 0 L ( C ) + P R ( D ) 0 L ( D ) = 1 4 2 + 1 4 1 = 3 8 PR(A)_{1}=\sum_{j=0}^n\frac{PR(T_j)_0}{L(T_j)}=\frac{PR(C)_0}{L(C)}+\frac{PR(D)_0}{L(D)}=\frac{\frac{1}{4}}{2}+\frac{\frac{1}{4}}{1}=\frac{3}{8} PR(A)1=j=0nL(Tj)PR(Tj)0=L(C)PR(C)0+L(D)PR(D)0=241+141=83

因为指向 A A A的节点只有 C C C D D D,所以只考虑这两个节点。 L ( C ) L(C) L(C)表示节点 C C C的出链数,图中有两个箭头从 C C C发出,所以 L ( C ) = 2 L(C)=2 L(C)=2;同理 L ( D ) = 1 L(D)=1 L(D)=1

其余节点进行相同的 P R PR PR计算:

P R ( B ) 1 = ∑ j = 0 n P R ( T j ) 0 L ( T j ) = P R ( A ) 0 L ( A ) = 1 4 2 = 1 8 PR(B)_{1}=\sum_{j=0}^n\frac{PR(T_j)_0}{L(T_j)}=\frac{PR(A)_0}{L(A)}=\frac{\frac{1}{4}}{2}=\frac{1}{8} PR(B)1=j=0nL(Tj)PR(Tj)0=L(A)PR(A)0=241=81

P R ( C ) 1 = ∑ j = 0 n P R ( T j ) 0 L ( T j ) = P R ( A ) 0 L ( A ) + P R ( B ) 0 L ( B ) = 1 4 2 + 1 4 1 = 3 8 PR(C)_{1}=\sum_{j=0}^n\frac{PR(T_j)_0}{L(T_j)}=\frac{PR(A)_0}{L(A)}+\frac{PR(B)_0}{L(B)}=\frac{\frac{1}{4}}{2}+\frac{\frac{1}{4}}{1}=\frac{3}{8} PR(C)1=j=0nL(Tj)PR(Tj)0=L(A)PR(A)0+L(B)PR(B)0=241+141=83

P R ( D ) 1 = ∑ j = 0 n P R ( T j ) 0 L ( T j ) = P R ( C ) 0 L ( C ) = 1 4 2 = 1 8 PR(D)_{1}=\sum_{j=0}^n\frac{PR(T_j)_0}{L(T_j)}=\frac{PR(C)_0}{L(C)}=\frac{\frac{1}{4}}{2}=\frac{1}{8} PR(D)1=j=0nL(Tj)PR(Tj)0=L(C)PR(C)0=241=81

更新表格:

循环次数 循环次数 循环次数\ P R 值 PR值 PR P R ( A ) PR(A) PR(A) P R ( B ) PR(B) PR(B) P R ( C ) PR(C) PR(C) P R ( D ) PR(D) PR(D)
i = 0 i=0 i=0 , P R PR PR值初始化为 1 N \frac{1}{N} N1 1 N \frac{1}{N} N1 1 N \frac{1}{N} N1 1 N \frac{1}{N} N1 1 N \frac{1}{N} N1
i = 1 i=1 i=1 3 8 \frac{3}{8} 83 1 8 \frac{1}{8} 81 3 8 \frac{3}{8} 83 1 8 \frac{1}{8} 81
排名 排名 排名1212

向量化
引入转移概率矩阵/马尔可夫矩阵:
W =        A       B       C       D A B C D [ 0 0 1 / 2 1 1 / 2 0 0 0 1 / 2 1 0 0 0 0 1 / 2 0 ] W=\begin{matrix} \ \ \ \ \ \ A\ \ \ \ \ B\ \ \ \ \ C\ \ \ \ \ D\\ \begin{matrix} A\\B\\C\\D \end{matrix}\begin{bmatrix} 0 &0&1/2&1 \\ 1/2 & 0&0&0\\1/2 & 1&0&0\\0 & 0&1/2&0\end{bmatrix} \end{matrix} W=      A     B     C     DABCD 01/21/2000101/2001/21000

看第一列,有两个 1 / 2 1/2 1/2分别表示 A A A跳转到 B B B的概率为 1 / 2 1/2 1/2 A A A跳转到 C C C的概率为 1 / 2 1/2 1/2

即列和为1,第 i i i行第 j j j列表示从节点 j j j跳转到节点 i i i的概率。

  • 按列来看 W W W矩阵:
    每一列的和为 1 1 1,所以按列看表示转移概率
    而转移概率值正是出链的倒数
    即若 W i j ≠ 0 W_{ij}≠0 Wij=0,则 W i j = 1 L ( j ) W_{ij}=\frac{1}{L(j)} Wij=L(j)1
  • 按行来看 W W W矩阵:
    W i j ≠ 0 W_{ij}≠0 Wij=0,则 j j j为指向 i i i的节点

将上一轮的 P R PR PR值定义为 V V V
V = [ P R ( A ) P R ( B ) P R ( C ) P R ( D ) ] V=\begin{bmatrix} PR(A) \\ PR(B) \\ PR(C) \\ PR(D)\end{bmatrix} V= PR(A)PR(B)PR(C)PR(D)

所以新一轮的 P R PR PR值更新公式为:
V i + 1 = W ∗ V i V_{i+1}=W*V_{i} Vi+1=WVi


所以上述的第一轮迭代向量化如下:
V 1 =        A       B       C       D A B C D [ 0 0 1 / 2 1 1 / 2 0 0 0 1 / 2 1 0 0 0 0 1 / 2 0 ] × [ 1 / 4 1 / 4 1 / 4 1 / 4 ] = [ 3 / 8 1 / 8 3 / 8 1 / 8 ] V_1=\begin{matrix} \ \ \ \ \ \ A\ \ \ \ \ B\ \ \ \ \ C\ \ \ \ \ D\\ \begin{matrix} A\\B\\C\\D \end{matrix}\begin{bmatrix} 0 &0&1/2&1 \\ 1/2 & 0&0&0\\1/2 & 1&0&0\\0 & 0&1/2&0\end{bmatrix} \end{matrix}\times \begin{bmatrix} 1/4 \\ 1/4 \\ 1/4 \\ 1/4 \end{bmatrix} = \begin{bmatrix} 3/8 \\ 1/8 \\ 3/8 \\ 1/8 \end{bmatrix} V1=      A     B     C     DABCD 01/21/2000101/2001/21000 × 1/41/41/41/4 = 3/81/83/81/8

与之前计算的一致。

看第一行的计算,是计算 A A A节点的 P R PR PR值:
[ 0 0 1 / 2 1 ] [ 1 / 4 1 / 4 1 / 4 1 / 4 ] \begin{bmatrix} 0&0&1/2&1 \end{bmatrix}\begin{bmatrix} 1/4 \\ 1/4 \\ 1/4 \\ 1/4 \end{bmatrix} [001/21] 1/41/41/41/4
当左边的第 j j j个元素为 0 0 0时,表示第 j j j个元素是指向 A A A的节点,则对 P R ( A ) PR(A) PR(A)无贡献。
当左边的第 j j j个元素 0 0 0时,表示第 j j j个元素是指向 A A A的节点,其值为 1 / L ( j ) 1/L(j) 1/L(j),与右边第 j j j个元素相乘: P R ( j ) / L ( j ) PR(j)/L(j) PR(j)/L(j)
P R ( A ) + = P R ( j ) / L ( j ) PR(A)+=PR(j)/L(j) PR(A)+=PR(j)/L(j)
与之前定义的公式一致。


第二次迭代:
V 1 =        A       B       C       D A B C D [ 0 0 1 / 2 1 1 / 2 0 0 0 1 / 2 1 0 0 0 0 1 / 2 0 ] × [ 3 / 8 1 / 8 3 / 8 1 / 8 ] = [ 5 / 16 3 / 16 5 / 16 3 / 16 ] V_1=\begin{matrix} \ \ \ \ \ \ A\ \ \ \ \ B\ \ \ \ \ C\ \ \ \ \ D\\ \begin{matrix} A\\B\\C\\D \end{matrix}\begin{bmatrix} 0 &0&1/2&1 \\ 1/2 & 0&0&0\\1/2 & 1&0&0\\0 & 0&1/2&0\end{bmatrix} \end{matrix}\times \begin{bmatrix} 3/8 \\ 1/8 \\ 3/8 \\ 1/8 \end{bmatrix} = \begin{bmatrix} 5/16 \\ 3/16 \\ 5/16 \\ 3/16 \end{bmatrix} V1=      A     B     C     DABCD 01/21/2000101/2001/21000 × 3/81/83/81/8 = 5/163/165/163/16

可以看出,向量化简化了迭代的计算。


DeadEnd问题

DeadEnd问题:当某个节点不存在出链,经过 n n n轮迭代,所以的节点的 P R PR PR值都会变成 0 0 0


实例:

现要计算下图的执行 P a g e R a n k PageRank PageRank算法:
在这里插入图片描述

循环次数 循环次数 循环次数\ P R 值 PR值 PR P R ( A ) PR(A) PR(A) P R ( B ) PR(B) PR(B) P R ( C ) PR(C) PR(C)
i = 0 i=0 i=0 , P R PR PR值初始化为 1 N \frac{1}{N} N1 1 3 \frac{1}{3} 31 1 3 \frac{1}{3} 31 1 3 \frac{1}{3} 31
i = 1 i=1 i=1
i = 2 i=2 i=2

转移概率矩阵为:
W =          A    B    C      A B C [ 0 0 0 1 0 1 0 0 0 ] W=\begin{matrix} \ \ \ \ \ \ \ \ A\ \ B\ \ C\ \ \ \ \\ \begin{matrix} A\\B\\C \end{matrix}\begin{bmatrix} 0 &0&0 \\ 1 & 0&1\\0 &0&0\end{bmatrix} \end{matrix} W=        A  B  C    ABC 010000010

新一轮的 P R PR PR值为:

P R 1 = W ∗ P R 0 =          A    B    C      A B C [ 0 0 0 1 0 1 0 0 0 ] × [ 1 3 1 3 1 3 ] = [ 0 2 3 0 ] PR_1=W*PR_0=\begin{matrix} \ \ \ \ \ \ \ \ A\ \ B\ \ C\ \ \ \ \\ \begin{matrix} A\\B\\C \end{matrix}\begin{bmatrix} 0 &0&0 \\ 1 & 0&1\\0 &0&0\end{bmatrix} \end{matrix}\times \begin{bmatrix}\frac{1}{3} \\ \\ \frac{1}{3} \\ \\\frac{1}{3} \end{bmatrix} = \begin{bmatrix}0 \\ \\ \frac{2}{3} \\ \\ 0 \end{bmatrix} PR1=WPR0=        A  B  C    ABC 010000010 × 313131 = 0320

循环次数 循环次数 循环次数\ P R 值 PR值 PR P R ( A ) PR(A) PR(A) P R ( B ) PR(B) PR(B) P R ( C ) PR(C) PR(C)
i = 0 i=0 i=0 , P R PR PR值初始化为 1 N \frac{1}{N} N1 1 3 \frac{1}{3} 31 1 3 \frac{1}{3} 31 1 3 \frac{1}{3} 31
i = 1 i=1 i=1 0 0 0 2 3 \frac{2}{3} 32 0 0 0
i = 2 i=2 i=2

下一轮的 P R PR PR值为:

P R 1 = W ∗ P R 0 =          A    B    C      A B C [ 0 0 0 1 0 1 0 0 0 ] × [ 0 2 3   0 ] = [ 0 0 0 ] PR_1=W*PR_0=\begin{matrix} \ \ \ \ \ \ \ \ A\ \ B\ \ C\ \ \ \ \\ \begin{matrix} A\\B\\C \end{matrix}\begin{bmatrix} 0 &0&0 \\ 1 & 0&1\\0 &0&0\end{bmatrix} \end{matrix}\times \begin{bmatrix}0 \\ \\ \frac{2}{3} \\ \\\ 0 \end{bmatrix} = \begin{bmatrix}0 \\ \\ 0 \\ \\ 0 \end{bmatrix} PR1=WPR0=        A  B  C    ABC 010000010 × 032 0 = 000

循环次数 循环次数 循环次数\ P R 值 PR值 PR P R ( A ) PR(A) PR(A) P R ( B ) PR(B) PR(B) P R ( C ) PR(C) PR(C)
i = 0 i=0 i=0 , P R PR PR值初始化为 1 N \frac{1}{N} N1 1 3 \frac{1}{3} 31 1 3 \frac{1}{3} 31 1 3 \frac{1}{3} 31
i = 1 i=1 i=1 0 0 0 2 3 \frac{2}{3} 32 0 0 0
i = 2 i=2 i=2 0 0 0 0 0 0 0 0 0

可以发现,当我们循环多次后,这个模型中所有的PR值都会归为 0 0 0


解决方法: t e l e p o r t teleport teleport

我们假设一个没有出链的节点向任何其它节点的转移概率是均等的,然后修正 W W W

修正公式:

W = W + a ( e n ) W = W+a(\frac{e}{n}) W=W+a(ne)

  • a a a为一个 n × n n\times n n×n的矩阵, a a a的第 i i i列都对应 W W W的第 i i i列,当 W W W的第 i i i列存在不为0的元素时, a i a_i ai为全0的列向量;反之,当 W W W的第 i i i列元素全为 0 0 0时, a i a_i ai为全1的列向量。
  • e e e是一个全为 1 1 1的列向量
  • n n n W W W的行数,即顶点个数。

实例:修正 W W W
W =          A    B    C      A B C [ 0 0 0 1 0 1 0 0 0 ] W=\begin{matrix} \ \ \ \ \ \ \ \ A\ \ B\ \ C\ \ \ \ \\ \begin{matrix} A\\B\\C \end{matrix}\begin{bmatrix} 0 &0&0 \\ 1 & 0&1\\0 &0&0\end{bmatrix} \end{matrix} W=        A  B  C    ABC 010000010

根据矩阵 W W W,可以得出 a a a
a 0 = [ 0 0 0 ] 、 a 1 = [ 1 1 1 ] 、 a 2 = [ 0 0 0 ] a_0=\begin{bmatrix} 0 \\ 0\\0\end{bmatrix}、a_1=\begin{bmatrix} 1 \\ 1\\1\end{bmatrix}、a_2=\begin{bmatrix} 0 \\ 0\\0\end{bmatrix} a0= 000 a1= 111 a2= 000

a = [ 0 1 0 0 1 0 0 1 0 ] a=\begin{bmatrix} 0&1&0 \\ 0&1&0\\0&1&0\end{bmatrix} a= 000111000

a ( e n ) = [ 0 1 0 0 1 0 0 1 0 ] ∗ [ 1 3 1 3 1 3 ] = [ 0 1 3 0 0 1 3 0 0 1 3 0 ] a(\frac{e}{n})=\begin{bmatrix} 0&1&0 \\ 0&1&0\\0&1&0\end{bmatrix}*\begin{bmatrix} \frac{1}{3} \\ \\ \frac{1}{3}\\ \\ \frac{1}{3}\end{bmatrix}=\begin{bmatrix} 0&\frac{1}{3}&0 \\ 0&\frac{1}{3}&0\\0&\frac{1}{3}&0\end{bmatrix} a(ne)= 000111000 313131 = 000313131000

W t e l e p o r t = W + a ( e n ) = [ 0 0 0 1 0 1 0 0 0 ] + [ 0 1 3 0 0 1 3 0 0 1 3 0 ] = [ 0 1 3 0 1 1 3 1 0 1 3 0 ] W_{teleport}=W+a(\frac{e}{n})=\begin{bmatrix} 0 &0&0 \\ 1 & 0&1\\0 &0&0\end{bmatrix} +\begin{bmatrix} 0&\frac{1}{3}&0 \\ 0&\frac{1}{3}&0\\0&\frac{1}{3}&0\end{bmatrix}=\begin{bmatrix} 0 &\frac{1}{3}&0 \\ 1 & \frac{1}{3}&1\\0 &\frac{1}{3}&0\end{bmatrix} Wteleport=W+a(ne)= 010000010 + 000313131000 = 010313131010

从而解决了某顶点无出边导致PR多次迭代为0的问题。


因此, P R PR PR迭代公式更新为:

P R i + 1 = ( W + a ( e n ) ) ∗ P R i PR_{i+1}=(W+a(\frac{e}{n}))*PR_i PRi+1=(W+a(ne))PRi


Spider Traps问题

节点 A A A与其他节点之间无 o u t − l i n k s out-links outlinks,只能点击 A A A节点继续访问;这就是 S p i d e r   T r a p s Spider\ Traps Spider Traps,这将会导致网站的权重向一个节点偏移(该节点的 P R PR PR越来越大)。如下图:
在这里插入图片描述


实例:

现要计算下图的执行 P a g e R a n k PageRank PageRank算法:
在这里插入图片描述

循环次数 循环次数 循环次数\ P R 值 PR值 PR P R ( A ) PR(A) PR(A) P R ( B ) PR(B) PR(B) P R ( C ) PR(C) PR(C)
i = 0 i=0 i=0 , P R PR PR值初始化为 1 N \frac{1}{N} N1 1 3 \frac{1}{3} 31 1 3 \frac{1}{3} 31 1 3 \frac{1}{3} 31
i = 1 i=1 i=1
i = 2 i=2 i=2
i = 3 i=3 i=3
i = n i=n i=n

P R ( A ) 1 = P R ( A ) 0 L ( A ) + P R ( B ) 0 L ( B ) + P R ( C ) 0 L ( C ) PR(A)_{1}=\frac{PR(A)_0}{L(A)}+\frac{PR(B)_0}{L(B)}+\frac{PR(C)_0}{L(C)} PR(A)1=L(A)PR(A)0+L(B)PR(B)0+L(C)PR(C)0

L ( A ) = 1 L(A)=1 L(A)=1,所以公式可如下:
P R ( A ) 1 = P R ( A ) 0 + P R ( B ) 0 L ( B ) + P R ( C ) 0 L ( C ) PR(A)_{1}=PR(A)_0+\frac{PR(B)_0}{L(B)}+\frac{PR(C)_0}{L(C)} PR(A)1=PR(A)0+L(B)PR(B)0+L(C)PR(C)0

所以 P R ( A ) PR(A) PR(A)只会越来越大,而其余节点:

P R ( B ) 1 = P R ( C ) 0 L ( C ) PR(B)_{1}=\frac{PR(C)_0}{L(C)} PR(B)1=L(C)PR(C)0
P R ( C ) 1 = P R ( B ) 0 L ( B ) PR(C)_{1}=\frac{PR(B)_0}{L(B)} PR(C)1=L(B)PR(B)0

可以观察到, P R ( B ) 、 P R ( C ) PR(B)、PR(C) PR(B)PR(C)都处于变小的趋势。

经过 n n n轮更新后:

循环次数 循环次数 循环次数\ P R 值 PR值 PR P R ( A ) PR(A) PR(A) P R ( B ) PR(B) PR(B) P R ( C ) PR(C) PR(C)
i = 0 i=0 i=0 , P R PR PR值初始化为 1 N \frac{1}{N} N1 1 3 \frac{1}{3} 31 1 3 \frac{1}{3} 31 1 3 \frac{1}{3} 31
i = 1 i=1 i=1 2 3 \frac{2}{3} 32 1 6 \frac{1}{6} 61 1 6 \frac{1}{6} 61
i = 2 i=2 i=2 5 6 \frac{5}{6} 65 1 12 \frac{1}{12} 121 1 12 \frac{1}{12} 121
i = 3 i=3 i=3 11 12 \frac{11}{12} 1211 1 24 \frac{1}{24} 241 1 24 \frac{1}{24} 241
i = n i=n i=n 1 1 1 0 0 0 0 0 0

会发现权重慢慢的向 A A A节点偏移。


解决方法: R a n d o m   T e l e p o r t Random\ Teleport Random Teleport

思想:没有出链的节点会以很小的概率跳转到其他节点。

修正概率转移矩阵 W W W

W = β W + ( 1 − β ) e e T n W=βW+(1-β)\frac{ee^T}{n} W=βW+(1β)neeT

  • n n n W W W的行数
  • β β β表示跟随出链( o u t − l i n k s out-links outlinks)打开网页的概率
  • 1 − β 1-β 1β表示随机跳转到其他非出链指向网页的概率。(如节点 A A A会以概率 1 − β 1-β 1β打开 B B B C C C)
  • e e T ee^T eeT表示 n × n n\times n n×n的全1矩阵

随机游走算法的基本思想:
从一个或一系列顶点开始遍历一张图。在任意一个顶点,遍历者将以概率 β β β游走到这个顶点的邻居顶点,以概率 ( 1 − β ) (1-β) (1β)随机跳跃到图中的任何一个顶点,称 β β β为跳转发生概率,每次游走后得出一个概率分布,该概率分布刻画了图中每一个顶点被访问到的概率。用这个概率分布作为下一次游走的输入并反复迭代这一过程。当满足一定前提条件时,这个概率分布会趋于收敛。收敛后,即可以得到一个平稳的概率分布。


实例:
在这里插入图片描述 W =          A        B         C      A B C [ 1 1 / 2 1 / 2 0 0 1 / 2 0 1 / 2 0 ] W=\begin{matrix} \ \ \ \ \ \ \ \ A\ \ \ \ \ \ B\ \ \ \ \ \ \ C\ \ \ \ \\ \begin{matrix} A\\B\\C \end{matrix}\begin{bmatrix} 1 &1/2&1/2 \\ 0 & 0&1/2\\0 &1/2&0\end{bmatrix} \end{matrix} W=        A      B       C    ABC 1001/201/21/21/20

根据公式:
W = β     A       B       C      [ 1 1 / 2 1 / 2 0 0 1 / 2 0 1 / 2 0 ] + ( 1 − β ) [ 1 / 3 1 / 3 1 / 3 1 / 3 1 / 3 1 / 3 1 / 3 1 / 3 1 / 3 ] W = β\begin{matrix}\ \ \ A\ \ \ \ \ B\ \ \ \ \ C\ \ \ \ \\ \begin{matrix} \end{matrix}\begin{bmatrix} 1 &1/2&1/2 \\ 0 & 0&1/2\\0 &1/2&0\end{bmatrix} \end{matrix}+(1-β)\begin{matrix} \\ \begin{matrix} \end{matrix}\begin{bmatrix} 1/3 &1/3&1/3 \\ 1/3 & 1/3&1/3\\1/3 &1/3&1/3\end{bmatrix} \end{matrix} W=β   A     B     C     1001/201/21/21/20 +(1β) 1/31/31/31/31/31/31/31/31/3

设置 β = 0.85 β=0.85 β=0.85

W = 0.85     A       B       C      [ 1 1 / 2 1 / 2 0 0 1 / 2 0 1 / 2 0 ] + ( 1 − 0.85 ) [ 1 / 3 1 / 3 1 / 3 1 / 3 1 / 3 1 / 3 1 / 3 1 / 3 1 / 3 ] W = 0.85\begin{matrix}\ \ \ A\ \ \ \ \ B\ \ \ \ \ C\ \ \ \ \\ \begin{matrix} \end{matrix}\begin{bmatrix} 1 &1/2&1/2 \\ 0 & 0&1/2\\0 &1/2&0\end{bmatrix} \end{matrix}+(1-0.85)\begin{matrix} \\ \begin{matrix} \end{matrix}\begin{bmatrix} 1/3 &1/3&1/3 \\ 1/3 & 1/3&1/3\\1/3 &1/3&1/3\end{bmatrix} \end{matrix} W=0.85   A     B     C     1001/201/21/21/20 +(10.85) 1/31/31/31/31/31/31/31/31/3
=     A       B       C      [ 0.85 0.425 0.425 0 0 0.425 0 0.425 0 ] + [ 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 ] = [ 0.9 0.475 0.475 0.05 0.05 0.475 0.05 0.475 0.05 ] =\begin{matrix}\ \ \ A\ \ \ \ \ B\ \ \ \ \ C\ \ \ \ \\ \begin{matrix} \end{matrix}\begin{bmatrix} 0.85 &0.425&0.425 \\ 0 & 0&0.425\\0 &0.425&0\end{bmatrix} \end{matrix}+\begin{matrix} \\ \begin{matrix} \end{matrix}\begin{bmatrix} 0.05 &0.05&0.05 \\ 0.05 & 0.05&0.05\\0.05&0.05&0.05\end{bmatrix} \end{matrix}=\begin{bmatrix} 0.9 &0.475&0.475 \\ 0.05 & 0.05&0.475\\0.05&0.475&0.05\end{bmatrix} =   A     B     C     0.85000.42500.4250.4250.4250 + 0.050.050.050.050.050.050.050.050.05 = 0.90.050.050.4750.050.4750.4750.4750.05

将上述修正后的 W W W带入更新,就不会出现权重向 A A A发生偏移的现象了。


所以, P R PR PR值新的迭代公式更新为:
P R i + 1 = [ β W + ( 1 − β ) e e T n ] ∗ P R i PR_{i+1}=[βW+(1-β)\frac{ee^T}{n}]*PR_{i} PRi+1=[βW+(1β)neeT]PRi


综上,最终 P R PR PR的迭代公式为:
P R i + 1 = [ β ( W + a ( e n ) ) + ( 1 − β ) e e T n ] ∗ P R i PR_{i+1}=[β(W+a(\frac{e}{n}))+(1-β)\frac{ee^T}{n}]*PR_{i} PRi+1=[β(W+a(ne))+(1β)neeT]PRi


PageRnak优缺点

优点:

  • 通过网页之间的链接来决定网页的重要性,一定程度消除了人为对排名结果的影响
  • 离线计算 P a g e R a n k PageRank PageRank值,而非查找时计算,提升了查询的效率。

缺点:

  • 存在时间久的网站, P a g e R a n k PageRank PageRank值会越来越大,而新生的网站, P a g e R a n k PageRank PageRank值增长慢。
  • 非查询相关的特性,查询结果会偏离搜索内容。
  • 通过”僵尸“网站或链接,人为刷 P a g e R a n k PageRank PageRank值。
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值