1. PageRank 算法问题与改进
PageRank 算法在实际迭代过程中会遇到两个问题:
- 死节点(dead ends)
产生此问题的原因是有些节点没有向外的连接,如下图的 b b b,那么就会导致最终重要性得分会变成0.
出现此问题后不满足列和为1的假设,最终求解会出现问题。
- 局部陷阱(spider traps)
这种问题是由于所有的往外的连接都在一个小的组内,最终这个“陷阱”会吸收掉所有的重要性,如下图的 b b b所示。
这个问题在数学本身的求解上并不是问题,但出现局部陷阱后得到的并不是我们所期望的重要性得分。
解决上面两个问题的方法比较简单,在出现问题的节点上加入传送(teleports)机制:
- 以 β \beta β的概率按照已知的连接情况进行游走;
- 以 1 − β 1-\beta 1−β的概率随机跳到任意一个节点上.
若添加的是均匀传送且在出问题的节点上 β = 0 \beta=0 β=0,则转移矩阵可变为:
而在实际的操作中,我们可以在每一次转移时都进行随机传送的操作,则节点 j j j重要性得分计算方程变为:
r j = ∑ i → j β r i d i + ( 1 − β ) 1 N r_{j}=\sum_{i \rightarrow j} \beta \frac{r_{i}}{d_{i}}+(1-\beta) \frac{1}{N} r