PageRank算法理解

目录

介绍

PageRank是关于网页排序的算法。

基本假设:一个重要的网页会被较多的网页引用;
\(PR(X)\)表示:在随机选择网页时,选中网页\(X\)的概率;即可以理解为网页的重要性;

流程

初始化:一共\(N\)个网页,每个网页的初始值相等\(\frac{1}{N}\)

在一轮迭代中,PR按链接(link)的出边与入边数目更新一次:
\[PR(p_i) = \sum_{p_j \in M(p_i)} \frac{PR (p_j)}{L(p_j)},\]
其中\(L(p_j)\)表示\(p_j\)的出边数,\(M(p_i)\)为所有引用\(p_i\)的网页集合。

同时引入抑制因子\(d\):用户浏览当前页面,
有大概率\(d\)按照规则继续点击出边,这样带来的更新是:
\[d\sum_{p_j \in M(p_i)} \frac{PR (p_j)}{L(p_j)};\]
也有小概率\(1-d\)停止继续点击出边,转为随机点击新的页面,这样带来的更新是\(\frac{1-d}{N}\)(保证和为1)。
有一定小概率点击新的页面,保证了:

  • 用户不会停在黑洞网页(没有出边的网页);
  • 同时也给没有入边的网页生机;

完整的更新公式如下:
\[PR(p_i) = \frac{1-d}{N} + d \sum_{p_j \in M(p_i)} \frac{PR (p_j)}{L(p_j)}\]

矩阵化


\[ \mathbf{R} = \begin{bmatrix} PR(p_1) \\ PR(p_2) \\ \vdots \\ PR(p_N) \end{bmatrix}, \]
代入上式,则有
\[ \mathbf{R} = \begin{bmatrix} {(1-d)/ N} \\ {(1-d) / N} \\ \vdots \\ {(1-d) / N} \end{bmatrix} +d \begin{bmatrix} \ell(p_1,p_1) & \ell(p_1,p_2) & \cdots & \ell(p_1,p_N) \\ \ell(p_2,p_1) & \ddots & & \vdots \\ \vdots & & \ell(p_i,p_j) & \\ \ell(p_N,p_1) & \cdots & & \ell(p_N,p_N) \end{bmatrix} \mathbf{R}, \]
再令
\[ M_{ij}=l(p_i, p_j)=\frac{\#e_{j \to i}}{\#e_{j \to all}}\\ \forall j, M_{.,j} = 1 \]
上式简化为
\[ \begin{eqnarray} &\mathbf{R}& = d \mathcal{M}\mathbf{R}+\frac{1-d}{N} \mathbf{1} \tag{1}\\ &\mathbf{R}& = (d \mathcal{M} +\frac{1-d}{N} \mathbf{I})\mathbf{R} \tag{2} = \widehat{\mathcal{M}} \mathbf{R} \end{eqnarray} \]

求解

迭代法得数值解

由公式(1)和(2)均能得到迭代的解法,设置精度即可停止迭代;
\[|\mathbf{R}(t+1) - \mathbf{R}(t)| < \epsilon\]
由公式(2)可知,\(\mathbf{R}\)是矩阵\(\widehat{\mathcal{M}}\)特征向量

代数法得解析解

由公式(1)可直接解得:
\[\mathbf{R} = (\mathbf{I}-d \mathcal{M})^{-1} \frac{1-d}{N} \mathbf{1}\]

其他

根据马尔科夫链:

  • 由于概率转移矩阵的性质,公式(1)会收敛;
  • \(\frac{1}{PR(X)}\)表示的是从网页\(X\)出发回到\(X\)的期望点击数;

参考

PageRank-wiki

猜你喜欢

转载自www.cnblogs.com/yuanquanxi/p/10241265.html