pagerank 算法

原文鏈接:https://baijiahao.baidu.com/s?id=1601233403833910471&wfr=spider&for=pc

 

背景

pageRank 是Google CEO 拉里佩奇提出的一種算法,來計算互聯網裏的網站的重要性,以對搜索進行排名。

此處爲啥算法叫pagerank,因爲是以Google公司創辦人拉里·佩奇(Larry Page)之姓來命名。所以爲了出名,大家努力的,發明個算法,以自己名字來命名的。

 

pagerank 基本思想

數量假設:一個頁面越被其他頁面鏈接,說明他越重要(ps:難怪好多技術博客的都互相鏈接)質量假設:越是被高質量頁面鏈接,說明該頁面越重要(ps:最好能被大博主推薦一波,粉絲蹭蹭蹭往上漲)

 

pagerank 模型

pagerank 模型模擬的是一個用戶在互聯網上瀏覽到每個網頁的概率。

下面來一個簡單計算,更好的理解下

pg(A) = pg(C)/1 + pg(B) /2

A網頁的pagerank值由網頁B和網頁C的pagerank貢獻而來,因爲B網頁有兩個外鏈,假設等概率貢獻,則貢獻給A的值爲自身的一半。

再看一個例子

此處C因爲沒有外鏈,所以我們假設他給其他所有網頁都貢獻了pg,於是:

pg(A) = pg(C)/4 + pg(B) /2

在考慮一個情況,即用戶在瀏覽網頁的過程中,直接輸入新網址進行瀏覽,即一個網頁都有可能跳轉到任意其他網頁,於是針對下圖:

pg(A) = (a * pg(B) /2) + (1-a) / 4) 上面公式的含義是:

在任意時刻,用戶到達某頁面後並繼續向後瀏覽的概率爲a,則用戶停止瀏覽的概率爲(1-a),此時用戶停止瀏覽後,可能會直接通過輸入瀏覽器地址進行瀏覽網頁,此時跳轉到任意網址的概率都一樣,於是上面的 a * pg(B) /2 表示從b跳轉過來的概率,(1-a) / 4 表示直接輸入網址跳轉過來的概率。

下面對上面公式進行推廣:

:網頁中網頁的總數;

d:阻尼因子,通常設爲0.85,d即按照超鏈接進行瀏覽的概率;

1-d:用戶手動輸入網址隨機跳轉一個新頁面的概率;

:網頁的PR值;

:網頁的鏈出網頁數目;

寫成矩陣形式:

上面式子中l(pi,pj)表示網頁j指向網頁i,其值爲:

l(pi,pj) = 1 / L(pj)

其中L(pj)表示pj外鏈的數量。

 

計算示例

下面我們來看一個具體的例子,假設有如下圖:

 

根據上面的矩陣,我們可以得到下面的矩陣:

於是整個迭代公式爲:

注意:pagerank如果只考慮從其他網頁轉移過來,會出現下面的兩個問題:

終止點問題:只入不出,則所有節點的概率最後會變爲0陷阱問題:網頁只有指向自己的鏈接,則最後所有的概率都會轉移到這些網站

更具體的解釋可以看PageRank算法簡介及Map-Reduce實現

 

map reduce 實現

mapreduce關鍵在於設計map和reduce,先來看pr值的計算公式:

所以每個pr值都是由其他網頁pr值貢獻得到,因此我們還是以下圖爲例子:

 

 

1. A B C D2. B A D3. C 04. D B

 

現在每一行輸入到map中,map輸出爲:

 

 

(B,1/3*pg(A))(C,1/3*pg(A))(D,1/3*pg(A))

 

此處我們發現缺少的爲每個網頁的當前pg值,另外每個網頁的pg值是單獨存放的,因此我們需要先來一個map-reduce,將pg值映射到每個對應的行,具體流程如下圖:

圖片來自:PageRank算法簡介及Map-Reduce實現

 

總結

本文是對pagerank算法的一個簡單總結,pagerank主要思想就是模擬互聯網用戶瀏覽網頁的行爲,從而計算出停留在每個網頁的概率,關於pg更多的信息可以google的。

你的鼓勵是我繼續寫下去的動力,期待我們共同進步。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章