PageRank 算法詳解

轉載自:https://blog.csdn.net/m0_37786726/article/details/79864012

參考文獻:https://blog.csdn.net/androidlushangderen/article/details/43311943

鏈接分析

在鏈接分析中有2個經典的算法,1個是PageRank算法,還有1個是HITS算法,說白了,都是做鏈接分析的。具體是怎麼做呢,繼續往下看。

PageRank算法

要說到PageRank算法的作用,得先從搜索引擎開始講起,PageRank算法的由來正式與此相關。

搜索引擎

最早時期的搜索引擎的結構,無外乎2個核心步驟,step1:建立龐大的資料庫,step2:建立索引庫,用於指向具體的資料。然後就是用戶的查找操作了,那怎麼查呢,一個很讓人會聯想到的方法就是通過關鍵字匹配的方法,例如我想輸入張三這個關鍵詞,那我就會在資源中查包含有張三這個詞語的文章,按照關鍵詞匹配方法,只要一篇文章中張三出現的次數越多,就越是要查詢的目標。(但是更公正的方法應是次數/文章總次數,一個比值的形式顯然更公平)。仔細這麼想也沒錯。好繼續往下。

Term Spam攻擊

既然我已經知道了搜索的核心原理,如果我想要讓我的網頁能夠出現在搜索的結果更靠前的位置,只要在頁面中加入更多對應的關鍵詞不就OK了,比如在html的div中寫入10000個張三,讓後使其隱藏此標籤,使得前端頁面不受影響,那我的目的豈不是達到了,這就是Term Spam攻擊。

PageRank算法原理

既然關鍵詞匹配算法容易遭到攻擊,那有什麼好的辦法呢,這是候就出現了著名的PageRank算法,作爲新的網頁排名/重要性算法,最早是由Google的創始人所寫的算法,PageRank算法徹底摒棄了什麼關鍵詞不關鍵詞的,每個網頁都有自己的PageRank值,意味一個網頁的重要程度,PR值越高,最後呈現的位置更靠前。那怎麼衡量每個網頁的重要程度呢,答案是別的頁面對他的鏈接。一句話,越多的網頁在其內容上存在指向你的鏈接,說明你的網頁越有名。具體PR值的計算全是通過別的網頁的PR值做計算的,簡單計算過程如下:

 假設一個由只有4個頁面組成的集合:A,B,C和D。如果所有頁面都鏈向A,那麼A的PR(PageRank)值將是B,C及D的和。

       

       繼續假設B也有鏈接到C,並且D也有鏈接到包括A的3個頁面。一個頁面不能投票2次。所以B給每個頁面半票。以同樣的邏輯,D投出的票只有三分之一算到了A的PageRank上。

       

      換句話說,根據鏈出總數平分一個頁面的PR值。

       

 所示的例子來說明PageRank的具體計算過程。  

                     

以上是網頁內部有鏈接的時候,因爲還可能在1個網頁中沒有任何鏈接的情況,而這個時候,跳到任何網頁的概率都是可能的。因此最後的計算公式就變成了這個樣子:

      

q稱爲阻尼係數。

PageRank的計算過程

PageRank的計算過程實際並不複雜,他的計算數學表達式如下:


就是1-q變成了1-q/n了,算法的過程其實是利用了冪法的原理,等最後計算達到收斂了,也就結束了。

按照上面的計算公式假設矩陣A = q  × P + ( 1 一 q) *  /N,e爲全爲1的單位向量,P是一個鏈接概率矩陣,將鏈接的關係通過概率矩陣表現,A[i][j]表示網頁i存在到網頁j的鏈接,轉化如下:

      
         圖2  網頁鏈接矩陣:                                      圖3  網頁鏈接概率矩陣:  
 
 

                         圖4  P’ 的轉置矩 陣

這裏爲什麼要把矩陣做轉置操作呢,原本a[i][j]代表i到j鏈接,現在就變爲了j到i的鏈接的概率了,好,關鍵記住這點就夠了。最後A就計算出來了,你可以把他理解爲網頁鏈接概率矩陣,最後只需要乘上對應的網頁PR值就可以了。

此時初始化向量R[1, 1, 1];代表最初的網頁的PR值,與此A概率矩陣相乘,第一個PR值公式1:R[0]'=A[0][0]*R[0] + A[0][1]*R[1] + A[0][2]*R[2]   ,又因爲A[i][j]此時的意思正是j到i網頁的鏈接概率,這樣的表達式恰恰就是上文我們所說的核心原理。然後將計算新得的R向量值域概率矩陣迭代計算直到收斂。

對於公式1 的解釋:A[0][] 代表的是各個網頁鏈接到網頁A的概率,而R[]向量中表示的是個網頁對應的初始PR值,最後A的PR 值爲:

PR(A)= R'[i]

大家如果對以上有啥不理解的,可以私信我。

PageRank小結

PageRank的計算過程巧妙的被轉移到了矩陣的計算中了,使得過程非常的精簡。

Link Spam攻擊

魔高一尺道高一丈,我也已經知道了PageRank算法的原理無非就是靠鏈接數升排名嘛,那我想讓我自己的網頁排名靠前,只要搞出很多網頁,把鏈接指向我,不就行了,學術上這叫Link Spam攻擊。但是這裏有個問題,PR值是相對的,自己的網頁PR值的高低還是要取決於指向者的PR值,這些指向者 的PR值如果不高,目標頁也不會高到哪去,所以這時候,如果你想自己造成一堆的殭屍網頁,統統指向我的目標網頁,PR也不見的會高,所以我們看到的更常見的手段是在門戶網站上放鏈接,各大論壇或者類似於新浪,網頁新聞中心的評論中方鏈接,另類的實現鏈接指向了。目前針對這種作弊手法的直接的比較好的解決辦法是沒有,但是更多采用的是TrustRank,意味信任排名檢測,首先挑出一堆信任網頁做參照,然後計算你的網頁的PR值,如果你網頁本身很一般,但是PR值特別高,那麼很有可能你的網頁就是有問題的。


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