什么是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
in−links)越多,说明该网页越重要。
质量假设:
当一个质量高的网页指向(
o
u
t
−
l
i
n
k
s
out-links
out−links)一个网页,说明这个被指的网页很重要
入链与出链:
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=0∑nL(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=0∑nL(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=0∑nL(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=0∑nL(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=0∑nL(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 |
排名 排名 排名 | 1 | 2 | 1 | 2 |
向量化
引入转移概率矩阵/马尔可夫矩阵:
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=W∗Vi
所以上述的第一轮迭代向量化如下:
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=W∗PR0= 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=W∗PR0= 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
out−links,只能点击
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 out−links)打开网页的概率
- 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
+(1−0.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值。