成就Google的Page Rank技術

2021-05-23 15:55:57 字數 3453 閱讀 8042

在google的搜尋結果中,pr值越高的網頁排在越前面。

網頁權重的演算法有很多種,為何我唯獨選擇了page rank來討論,不僅因為它是google搜尋引擎採用的搜尋結果排名演算法之核心,且它把整個網際網路當做乙個整體來對待且最終依靠經典的數學模型精準地得到web上網頁的權重。

雖然今天的搜尋引擎的排名系統遠遠要比這個演算法複雜。網域名稱資料,內容質量,使用者資料,建站時間等都可能被考慮進去,但是page rank演算法仍然是核心的技術之一,使得google名聲大噪。關於page rank的介紹性文章,在google黑板報裡的」 談 page rank – google 的民主表決式網頁排名技術」。關於其更詳細的論述,可以參照google 的兩個創始人拉里•佩奇 (larry page )和謝爾蓋•布林 (sergey brin)的**」the pagerank citation ranking: bringing order to the web」。

首先,page rank基於以下的假設:」乙個網頁被引用 (即反向鏈結)的次數越多,則說明越重要; 乙個網頁雖然沒有被多次引用,但是被重要的網頁引用,則它也可能是很重要的;乙個網頁的重要性被平均的傳遞到它所引用的網頁。」所以,為了說明問題的方便,就引出了下面這個簡化了的page rank演算法。簡化版一:r(u) = cr(1)/n(1) + ……+cr(v)/n(v)。(v∈bu)。其中r(v)是網頁v的pr值,n(v)是網頁v的正向鏈結數,b(u)是頁面u的反向鏈結的集合。c是阻尼係數(damping factor),它的值在0到1之間。因此,阻尼係數的使用,減少了其它頁面對當前頁面a的排序貢獻。那麼這個式子如何用數學的方法解答呢?首先可以認為整個網際網路是乙個大的有向圖g=(v,e)。v是所有頁面的集合,e是有向邊的集合,(i,j)表示頁i有指向頁j的超連結。由於有向圖和矩陣在本質上是可以互相轉換的,下面舉例是如何互轉的:

此有向連通圖模擬網頁間的超連結

鏈結源i d 鏈結目標 id

1          2,3 ,4,5, 7

2          1

3          1,2

4          2,3,5

5          1,3,4,6

6          1,5

7          5

如果我們假設aij=1 ,if (從頁面 i 向頁面 j 「有 」 鏈結的情況) ;aij=0, if (從頁面 i 向頁面 j 「沒有」鏈結的情況) 。則根據以上我們可以構造如下矩陣

a = [

0, 1, 1, 1, 1, 0, 1;

1, 0, 0, 0, 0, 0, 0;

1, 1, 0, 0, 0, 0, 0;

0, 1, 1, 0, 1, 0, 0;

1, 0, 1, 1, 0, 1, 0;

1, 0, 0, 0, 1, 0, 0;

0, 0, 0, 0, 1, 0, 0; ]

接下來再來看看公式一中的pr值求法,即

pr(1) = c[1*pr(2) + (1/2)*pr(3) + (1/4)*pr(5) +(1/2)*pr(6)];

pr(2) = c[(1/5)*pr(1) + (1/2)*pr(3) + 0.25*pr(5) + 0.5*pr(5)];

............

pr(7) = c[(1/5)*pr(1) + 0+ 0......];

則,可以得出pt = cmpt,其中m的方陣如下,

m = [

0,    1,   1/2,    0,      1/4,    1/2,    0;

1/5,    0,  1/2,    1/3,    0,      0,      0;

1/5,    0,  0,      1/3,    1/4,    0,      0;

1/5,    0,  0,      0,      1/4,    0,      0;

1/5,    0,  0,      1/3,    0,      1/2,    1;

0,      0,  0,      0,      1/4,    0,      0;

1/5,    0,  0,      0,      0,      0,      0; ]

所以,pt為m的特徵根為c的特徵向量。只需求出最大特徵根的特徵向量,就是網頁集對應的最終pagerank值,這可以用迭代方法計算。如何迭代呢?如果我們給定初始向量pt1』做第一次迭代,就相當於用初始向量乘以上面的矩陣。第二次迭代就相當於用第一迭代的結果再乘以上面的矩陣……實際上,在隨機過程的理論中,上述矩陣被稱為「轉移概率矩陣」。這種離散狀態按照離散時間的隨機轉移過程稱為馬爾可夫鏈(markov chain)。設轉移概率矩陣為p,若存在正整數n,使得pn>0(每乙個元素大於0),這種鏈被稱作正則鏈,它存在唯一的極限狀態概率,並且與初始狀態無關。這篇」google搜尋與inter網中的數學」文章裡,描述了馬氏鏈與page rank的關係。

最後可以看到,從最開始的矩陣a到矩陣m可以很容易轉化得到(將a倒置後將各個數值除以各自的非零要素)。

現在考慮有乙個頁面(比如是頁面7),它不含有任何的超連結,即它的前向鏈結或者說出度為0,很顯然,方陣m的最後一行為全零,這樣,特徵向量pt也為全零。我們也可以從圖論的角度來闡述這個問題。我們可以這樣定義乙個有向圖:圖g的頂點集合為v=,邊的集合為e=。我們把有向圖g的每個頂點都給定乙個權值p(vi),即為它的pr值。有向邊ab的權值定義為a為b貢獻的pagerank,也即**a鏈結到**b的概率。這樣,對於乙個頂點,若它的出度大於0,則從它出去的權值和為1(這一點可以從上述的方陣m中的列可以看出,滿足了全概率)。顯然,如果圖中有乙個頂點x的出度是0,那麼經過有限次迭代後所有頂點的pr值都將變為0。這是因為由於x不對外貢獻任何pr,所以整體的pr總和在不斷減少,最終減為0。這個被拉里•佩奇和謝爾蓋•布林稱為rank sink。為了克服這個問題,就有了下面這個公式:rank演算法簡化版二:r(u) = (1-c)+ cr(1)/n(1) + ……+cr(v)/n(v)。(v∈bu)。  ……公式二

(1-c)實際上為了服從概率分布。這樣可以推導出p = (1-c)e + cmp,即

p = [(1-c)eet/n + cm]p (etp=n)。關於用矩陣方法來推導的更詳細的文章,可以參考這篇"the $25,000,000,000 eigenvector: the linear algebra behind google".

現在可以想象一下整個web中有250億不止的網頁,收斂速度是至關重要的。所以為什麼作者拉里•佩奇 (larry page )和謝爾蓋•布林 (sergey brin)要取c為0.85,在這篇文章」how google finds your needle in the web's haystack」的最後部分討論到。

後記,2023年9月,pagerank被授予美國專利,專利被正式頒發給史丹福大學,佩奇作為發明人列於檔案中。最後要說的一點,分析pr演算法,用到了離散數學,線性代數,概率論,數值計算甚至隨機過程,所以看來數學確實很好很強大需要認真學習啊。

pagerank以及個性化的pagerank演算法

pagerank最開始是google提出來用來衡量網頁重要度排行的演算法。她的思想是基於網頁之間互相的鏈結作為加權投票。假如網頁a指向b,那麼網頁b的重要程度受網頁a的影響,a越重要,則b就越重要。假如網頁c也指向b,但是c跟a對比,c指向其他網頁的數量 出度 較少,那麼c對b的貢獻程度要大於a對b...

我的個人成就

第一欄 第二欄第三欄 第四欄日語學習以至於通過等級考試 基礎語法以及單詞的熟記和理解問題 到目前為止尚未考取到日語證書,因為還要等到12 月,不過關於日語語法和單詞正在努力學習中 結果還未生成,但我可以努力讓結果成為現實 先寫在前面,關於這個個人成就我還沒有達成,但是我又覺得說,在學習的過程中每一次...

Google 員工眼裡的 Google 公司

cinoboo說 我在那裡呆了5年,你可以在任何地方看到google好的一面,所以我來對比其它軟體公司表一表google的另外一面。乙個比較普遍的問題是你很容易被各種津貼所慣壞,一些辦公室已經發展出了他們獨特的權利文化,這些人會抱怨免費布朗尼軟糖的質量,周圍都是這些被寵壞的孩子會讓你感到很囧。工程師...