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)\)
同時引入抑制因子\(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\)的期望點選數;