1. 程式人生 > >【機器學習】【PageRank演算法-1】PageRank演算法原理介紹

【機器學習】【PageRank演算法-1】PageRank演算法原理介紹

與他演算法一樣,雖然PageRank演算法滿天有,但是自己寫出來能夠記憶深刻和靈活使用,還是要寫一下PageRank演算法。

1.PageRank演算法簡介

1.1開門見山

PageRank演算法以前就是Google的屠龍刀,倚天劍,降龍十八掌。Google顯示符合使用者搜尋的網頁的依次顯示呢?在以前Google及用過PageRank演算法,對每個目標網頁進行附上權值,權值大的就靠前顯示,權值小的就靠後顯示。對,PageRank演算法就是給每個網頁附加權值的~。PageRank演算法借鑑學術界論文重要性的評估方法:誰被引用的次數多,誰就越重要。注:PageRank演算法不單單是按照“被索引數”來給網頁付權值的,用PR值表示每個網頁被PageRank演算法附加的權值。

1.2PageRank演算法的核心細想

PageRank演算法的核心思想就躍然紙上:

(1)如果一個網頁被很多其他網頁連結到的話說明這個網頁比較重要,也就是PageRank值會相對較高
(2)如果一個PageRank值很高的網頁連結到一個其他的網頁,那麼被連結到的網頁的PageRank值會相應地因此而提高

這就是為什麼在後面講解的例子中計算PR(A)時,如果B對A有出鏈,PR(B)就會給PR(A)增加貢獻~~

2.演算法原理

2.1基本概念

先了解幾個基本概念,一遍後面內容理解

(1)出鏈

如果在網頁A中附加了網頁B的超連結B-Link,使用者瀏覽網頁A時可以點選B-Link然後進入網頁B。上面這種A附有B-Link這種情況表示A出鏈B。可知,網頁A也可以出鏈C,如果A中也附件了網頁C的超連結C-Link。

(2)入鏈

上面通過點選網頁A中B-Link進入B,表示由A入鏈B。如果使用者自己在瀏覽器輸入欄輸入網頁B的URL,然後進入B,表示使用者通過輸入URL入鏈B

(3)無出鏈

如果網頁A中沒有附加其他網頁的超連結,則表示A無出鏈

(4)只對自己出鏈

如果網頁A中沒有附件其他網頁的超連結,而只有他自己的超連結A-Link,則表示A只對自己出鏈

(5)PR值

一個網頁的PR值,概率上理解就是此網頁被訪問的概率,PR值越高其排名越高。

下面給出計算PR值可能遇到的幾種不同情況

2.2 幾種網頁出入鏈關係

2.2.1 case1:網頁都有出入鏈


此種情況下的網頁A的PR值計算公式為:


2.2.2 case2:存在沒有出鏈的網頁


網頁C是沒有出鏈。因為C沒有出鏈,所以對A,B,D網頁沒有PR值的貢獻。PageRank演算法的策略:從數學上考慮,為了滿足Markov鏈,設定C對A,B,C,D都有出鏈(也對他自己也出鏈~)。你也可以理解為:沒有出鏈的網頁,我們強制讓他對所有的網頁都有出鏈,即讓他對所有網頁都有PR值貢獻。

此種情況PR(A)的計算公式:


2.2.3 case3:存在只對自己出鏈的網頁


C是隻對自己出鏈的網頁。

此時訪問C時,不會傻乎乎的停留在C頁面,一直點選C-Link迴圈進入C,即C網頁只對自己的網頁PR值有貢獻。正常的做法是,進入C後,存在這種情況:在地址輸入欄輸入A/B/C/D的URL地址,然後跳轉到A/B/C/D進行瀏覽,這就是PageRank演算法解決這種情況的策略:設定存在一定概率為α,使用者在位址列輸入A/B/C/D地址,然後從C跳轉到A/B/C/D進行瀏覽。

此時PR(A)的計算公式為:

,一般取值α=0.85

2.3演算法公式

一般情況下,一個網頁的PR值計算公式為:


注:Mpi是有出鏈到pi的所有網頁集合,L(pj)是有網頁pj的出鏈總數,N是網頁總數,α一般取值為0.85

所有網頁PR值同時計算需要迭代計算:一直迭代計算,停止直到下面2情況之一發生:每個網頁的PR值前後誤差dleta_pr小於自定義誤差閾值,或者迭代次數超過了自定義的迭代次數閾值

3.PR值計算方法

3.0幾個基本公式

使用case3(存在只對自己出鏈的網頁)中的網頁出入鏈關係圖

矩陣S:

S[i][j]表示網頁j對網頁i的出鏈,可知S[i]表示所有網頁對網頁i的出鏈值,S[:,j]是網頁j對所有網頁的出鏈值。

矩陣A:


其中e是所有分量為1的列向量,即e=(1,…1…,1)T,N是網頁總數,一般取值α=0.85

3.1冪迭代法


先對P0賦隨機初值,然後通過上面公式進行迭代計算,直到滿足條件停止迭代計算:一直迭代計算,停止直到下面2情況之一發生:每個網頁的PR值前後誤差dleta_pr小於自定義誤差閾值,或者迭代次數超過了自定義的迭代次數閾值

3.2特徵值法

Markov Chain收斂時,存在:


3.3代數法

Markov Chain收斂時,存在:


可以通過上面公式計算出來PR值矩陣。

參考文獻