介绍
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\)的期望点击数;