本文目标:用python实现pagerank算法
一、pagerank简介
PageRank算法的基本想法是在有向图上定义一个随机游走模型,即一阶马尔可夫链,描述随机游走者沿着有向图随机访问各个结点的行为。在一定条件下,极限情况访问每个结点的概率收敛到平稳分布,这时各个结点的平稳概率值就是其PageRank值,表示结点的重要度。PageRank 是递归定义的,PageRank 的计算可以通过迭代算法进行。
如图所示:
入链数:指向该节点的链接数
出链数:由该节点指出的链接数
以上图为例:A的入链数为2,出链数为3,所以将由A指向其他节点的边权重设置为1/3,表示A访问B、C、D节点的概率均为1/3
二、pagerank算法
相关概念
- PR(a)表示当前节点a的PR值
- PR(Ti)表示其他各个节点(能够指向a)的PR值
- L(Ti)表示其他各个节点(能够指向a)的出链数
- i代表当前时刻或迭代次数
具体步骤:
- 将四个节点的初始PR都设置为1/4
- 根据每一个节点(a)的入链节点(Ti)的PR值及出链数和自身(a)的PR值
- 不断进行迭代,直到PR值不再发生变化
三、使用步骤
1.使用numpy
代码如下(示例):
import numpy as np
a = np.a