PageRank算法

news2024/9/27 14:39:44

什么是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矩阵

实例:
在这里插入图片描述 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值。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/139540.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java大学生档案系统高校学生档案系统

简介 Java基于springboot开发的学生档案系统,包含了权限管理,学生档案,学生成绩录入,教师管理等。 演示视频 https://www.bilibili.com/video/BV1XV411b761/?share_sourcecopy_web&vd_sourceed0f04fbb713154db5cc611225d92…

SQL速算N日留存

之前才哥发布了《用SQL进行用户留存率计算》 链接:https://mp.weixin.qq.com/s/QJ8JUO00bVJe_K6sx_ttaw 简化数据后得到如下结构的数据: 由于用户和登录日期被设置为主键所以不需要再进行去重,下面看看如何快速求七日留存。 数据下载地址&…

数据中心基础设施管理(DCIM)工具

什么是DCIM DCIM (Data Center Infrastructure management) 数据中心基础设施管理 是将IT(信息技术)和设备管理结合起来对数据中心关键设备进行集中监控、容量规划等集中管理。通过软件、硬件和传感器等,DCIM提供一个独立的管理平台&#xf…

网购平台如何保障公平交易

抢购,是这三年来重复出现的关键词。 疫情初始,口罩、测温枪是抢购热点;随后,蔬菜从口罩接过“抢购”接力棒;不久后,退烧药、抗原、血氧仪、“特效药”先后成为抢购热点;甚至元旦假期间&#xf…

【微服务】服务拆分及远程调用

文章目录服务拆分服务拆分原则服务拆分示例导入Sql语句导入demo工程实现远程调用案例案例需求分析注册RestTemplate实现远程调用提供者与消费者服务拆分 服务拆分原则 我们拿到一个单体架构,一般按照功能模块进行拆分。 微服务拆分时的几个原则: 不同…

数据结构_红黑树(C语言)

数据结构总目录红黑树 介绍: 红黑树是一种特化的AVL树(平衡二叉树),都是在进行插入和删除操作时通过特定操作保持二叉查找树的平衡,从而获得较高的查找性能。红黑树是一种平衡二叉查找树的变体,它的左右子树…

JavaScript---DOM---节点操作---12.3

为什么学节点操作? 获取元素通常使用两种方式: 1.利用DOM提供的方法获取元素 document.getElementByld()document.getElementsByTagName()document.querySelector等逻辑性不强,繁琐 2.利用节点层级关系获取元素(操作更简单&…

标准模板库STL

一、概述 1.1 STL的概念和作用 STL的概念:全称为 Standard Template Library STL的作用: 首先STL并不是语言的一部分(一开始并没有)它就是一个工具库, 没有这个工具时程序员写程序都要自己做(例如:数据结…

软件生命周期阶段有几个?常见软件生命周期模型有哪些?

软件生命周期阶段及常见的软件生命周期模型,软件生命周期是指一个计算机软件从功能确定、设计,到开发 成功投入使用,并在使用中不断地修改、增补和完善,直到停止该软件的使用的全过程。  生命周期从收到应用软件开始算起&#x…

springboot 多模块项目构建【创建√ + 启动√ 】

一、多模块项目构建 1. 先建立父级目录demo-parent 2. 把父级目录src删除,再建立子级模块 3. 建立子级模块model,dao,service,common.utils等相同步骤 4. 建立启动模块boot, 创建Spring Boot 启动类 package com.example;import org.springframework.boot.SpringAp…

http服务转https服务(Nginx 服务器 SSL 证书安装部署)

安装的服务一直使用的是http,结果有客户要求必需使用https,下面是整理的步骤1、证书下载:(要用域名申请的账号登录)域名所在服务商一般都可以下载免费证书,我们用的域名是腾讯云的,所以在腾讯云上申请了免费…

高通开发系列 - gpio模拟输出PWM或者CLK时钟

By: fulinux E-mail: fulinux@sina.com Blog: https://blog.csdn.net/fulinus 喜欢的盆友欢迎点赞和订阅! 你的喜欢就是我写作的动力! 目录 问题背景平台信息GPIO输出CLKdts添加节点修改内核gcc时钟配置驱动文件编译运行gpio模拟PWM输出CLKdts中的配置GPIO模拟PWM驱动文件编译…

MSF信息收集

Nmap扫描 db_nmap -sV 192.168.1.0/24Auxiliary 扫描模块 ● RHOSTS表示 192.168.1.20-192.168.1.30 、 192.168.1.0/24,192.168.11.0/24(扫描两个网段) file:/root/host.txt (将需要扫描的主机访问文本中)● search arp use auxiliary/scanner/d…

网站收录查询方法,网站收录减少的原因

网站收录就是与互联网用户共享网址,网站收录前提是网站首页提交给搜索引擎,蜘蛛才会光顾,每次抓取网页时都会向索引中添加并更新新的网站,站长只需提供顶层网页即可,不必提交各个单独的网页。抓取工具能够找到其他网页…

华为matebook X 笔记本没开什么程序,有时经常慢卡

环境: 华为matebook X CPU :英特尔4核8线程10代 i5 内存:海力士16G 固态硬盘500G 问题描述: 华为matebook X 没开什么程序,经常慢卡,平时就是打开钉钉,处理处理文档,之前优化过…

模板题---1.5(单调栈,单调队列,kmp,manachar)

这里写目录标题1.单调栈2.单调队列3.kmp算法4.manachar算法这里记录几个基本的数据结构算法1.单调栈 要点&#xff1a; 数据结构是栈栈要维护单调性 这就是单调栈的基本定义 举个例子: &#xff08;栈底&#xff09;1 3 5 7 &#xff08;栈顶&#xff09; <-------这就是…

行为型模式 - 备忘录模式Memento

学习而来&#xff0c;代码是自己敲的。也有些自己的理解在里边&#xff0c;有问题希望大家指出。 模式的定义与特点 在备忘录模式&#xff08;Memento Pattern&#xff09;下&#xff0c;为的是在不破坏封装性的前提下&#xff0c;捕获一个对象的内部状态&#xff0c;并在该对象…

【C++ Primer】阅读笔记(2):const | constexpr | 类型别名 |auto

目录 简介const指针顶层const与底层const常量表达式constexpr类型别名auto参考结语简介 Hello! 非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出~ ଘ(੭ˊᵕˋ)੭ 昵称:海轰 标签:程序猿|C++选手|学生 简介:因C语言结识编程,随后转入计算机专业,获得过…

CTF中的PHP特性函数(下)

前言 上篇文章讲的进阶一些的PHP特性不知道大家吸收的怎么样了&#xff0c;今天作为本PHP特性函数的最后一篇&#xff0c;我也会重点介绍一些有趣的PHP特性以及利用方法&#xff0c;下面开始我们今天的内容分享。 parse_str parse_str()这个函数会把查询字符串解析到变量中。…

二叉树——链式存储

✅<1>主页&#xff1a;我的代码爱吃辣 &#x1f4c3;<2>知识讲解&#xff1a;数据结构——二叉树 &#x1f525;<3>创作者&#xff1a;我的代码爱吃辣 ☂️<4>开发环境&#xff1a;Visual Studio 2022 &#x1f4ac;<5>前言&#xff1a;上期讲了…