初識PageRank算法

初識PageRank算法

一、簡單PageRank計算

首先,我們將Web做如下抽象:1、將每個網頁抽象成一個節點;2、如果一個頁面A有鏈接直接鏈向B,則存在一條從A到B的有向邊(多個相同鏈接不重複計算邊)。因此,整個Web被抽象爲一張有向圖。

現在假設世界上只有四張網頁:A、B、C、D,其抽象結構如下圖,顯然這個圖是強連通的(從任一節點出發都可以到達另外任何一個節點)。

然後需要用一種合適的數據結構表示頁面間的連接關係。PageRank算法是基於這樣一種背景思想:被隨機衝浪者訪問越多的網頁質量更可能高,而隨機衝浪者在瀏覽網頁時主要通過超鏈接進行頁面跳轉,因此我們需要通過分析超鏈接組成的圖結構來推算每個網頁被訪問頻率的高低。更直觀的講,一個網頁的PangRank值越高,隨機衝浪者瀏覽網頁過程中,停留在該頁面的概率越大,該網頁越重要。

簡單起見,我們可以假設當一個隨機衝浪者停留在某頁面時,跳轉到頁面上每個被鏈頁面的概率是相同的。例如,上圖中A頁面鏈向B、C、D,所以一個用戶從A跳轉到B、C、D的概率各爲1/3。設一共有N個網頁,則可以組織這樣一個N維矩陣:其中i行j列的值表示用戶從頁面j轉到頁面i的概率。這樣一個矩陣叫做轉移矩陣(Transition Matrix)。上圖的四個網頁對應的轉移矩陣M如下:

然後,假定隨機衝浪者出於n個頁面的初始概率相等,那麼初始的概率分佈向量就是一個每維均爲1/n的n維列向量V0。這裏我們有4個網頁,故V0-1 = [1/4 , 1/4 , 1/4 , 1/4 ]。

這樣,我們就可以從初始向量V0開始,不斷的左乘轉移矩陣M,用戶在瀏覽網頁時主要通過超鏈接進行i次跳轉後,停留在每個頁面的概率爲:Mi*V。直到最後兩輪迭代產生的結果向量差異很小時停止。實際中,對於Web而言,在錯誤控制在雙精度的情況下,迭代50至75次已經足夠收斂。

下面是前四次跳轉過程中,每次迭代後每個頁面的PageRank值:

可以看見,隨着迭代次數的增加,網頁A的PageRank值越來越大,趨近與它的極限概率3/9。這也說明了隨機衝浪者停留在網頁A上的概率相對於網頁B、C、D來講較大,該網頁也較爲重要。

二、問題1:終止點(DEAD ENDS)

終止點即爲沒有任何出鏈的點,如下圖中的C。

如果我們不加處理,允許終止點存在的話,那麼隨着PageRank迭代次數的增加,各個網頁的PageRank值會趨向於0,從而無法得到任何有關網頁相對重要性的信息。

處理終止點的方法是將終止點及其入鏈從圖中剔除。這樣做之後可能會產生更所的終止點,繼續迭代剔除終止點。但是最終我們會得到一個強連通子圖,其中所有節點都非終止點。下面我們以左圖爲例,進行說明。左圖按上述步驟剔除終止點之後,獲得右圖。

我們得到右圖對應的轉移矩陣,並計算圖中A、B、C的PageRank值。

我們得到A、B、C的PageRank值分別爲2/9、4/9,3/9,接下來按照剛纔刪除相反的順序來計算C和E的PageRank值。由於C最後一個被刪除,因而首先計算C的PageRank值。A有三條出鏈,因此它對C貢獻了其1/3的PageRank值。D有三條出鏈,因此它對C貢獻了其1/2的PageRank值。於是C的PageRank值爲:

而E的入鏈就只有C,C的出鏈只有E,所以E的PageRank值與C相等。

需要注意的是,當前所有節點的PageRank值和已經超過1,因此不能代表隨機衝浪者的概率分佈,但他們仍然能夠反映網頁相對重要程度的合理估計值。

三、問題2:採集器陷阱(SPIDERTRAPS)

採集器陷阱是一系列節點集合,他們雖然沒有一個是終止點,但是卻沒有出鏈指向該集合之外的其他節點。採集器陷阱導致在計算時將所有的PageRank值都分配給採集器陷阱以內的節點。

如下圖所示,C爲單節點構成的採集器陷阱及其轉移矩陣。

隨着迭代的進行,C的PageRank值不斷趨向於1,其他非採集器陷阱內節點的PageRank值趨向於0。

處理採集器陷阱的做法是允許每個隨機衝浪者以一個較小的跳轉概率隨機跳轉到一個隨機網頁,而不一定要沿着當前網頁上的出鏈前進。於是,根據前面的PageRank估計值V和轉移矩陣M估計下一次迭代後的PageRank值V’的迭代公式變爲:

其中,β是一個選定的常數,通常取值在0.8跟0.9之間。而e是一個分量都爲1維數爲n的向量,n是Web圖中所有節點的個數。βMv表示隨機衝浪者以概率β從當前網頁選擇一個出鏈前進的情況。(1−β)e/n是一個所有分量都是(1−β)/n的向量,它代表一個新的隨機衝浪者已(1−β)的概率隨機選擇一個網頁進行訪問。

取β=0.8,上圖的迭代公式變爲:

下面是前幾輪迭代的結果:

作爲一個採集器陷阱,C獲得了超過一半以上的PageRank值,但是這種效果受到了限制,其他每個節點也獲得了一些PageRank值。

————————————————-

參考資料:《大數據:互聯網大規模數據挖掘與分佈式處理》及其對應的原版電子書《Mining of Massive Datasets》

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