Google PageRank演算法深入研究 許多搞搜尋引擎優化或搜尋引擎行銷的人對於PageRank可以說是又愛又恨,愛的是
當進行優化作業後獲得高的PageRank時,可以當作優化作業的量化成果;恨的是到
底PageRank是怎麼計算的根本捉摸不定,並且得到高的PageRank又好像對
於優化沒有什麼助益。而對於網路技術似懂非懂的人來說,要瞭解PageRank的真正
原理與計算方式,更是一件瞎子摸象的任務。
我們先把PageRank必須瞭解的要點說明如下:
1. PageRank只是評比網頁重要性的指標之一,PageRank所代表的是網頁的概
括性評比等級。也就是這個網頁在你所設定的內容上,經Google評估後所給的分數。
使用者下了關鍵字後,也許你的網頁有此關鍵字,但根據這個關鍵字或關鍵字組合,Goo
gle會再給你的網頁一個搜尋結果頁(Search Engine Results Page,SERP)分數,這個SERP分數與PageRank分數不一定會成正比。
2. 當網頁A內有連結指向其他網頁B,網頁A的PageRank分數不一定能夠貢獻給網頁B。
網頁B是否能夠得到網頁A的PageRank分數取決於兩個因素,第一個因素是網頁A指
向網頁B的連結是否有rel="NoFollow"屬性,如果有這個屬性,則網頁B得
不到網頁A的PageRank分數。
另外的因素是由Google判斷,網頁A指向網頁B的連結是否為「有效連結」,牽涉到
垃圾連結偵測與網頁內容相關性分析。也就是某個網頁有許多的backlink,但是卻
沒有應得的PageRank,就是因為Google判定某些連結是無效的。連結數的多
寡已經越來越不能保證高的PageRank,也越來越不能保證得到優秀的搜尋結果,只
有優質的連結與優質的內容才能被搜尋引擎採用。
3. PageRank的等級從1到10(PageRank為零就不算有PageRank等
級),「PageRank等級」並不是「PageRank分數」。當網頁的PageR
ank等級是5,並不是經過PageRank演算法計算後數字是5,而是計算後數字落
在是等級5的範圍內,越高等級的PageRank分數區間範圍會越大。
4. 當網頁A連接到網頁B,對於網頁A整體來說是加分還是扣分,取決於三個因素:Page
Rank分數計算、網頁B被搜尋引擎認定為「壞的網頁」或「好的網夏」、網頁B對網頁A是
否被搜尋引擎認定為「具參考價值」並且內容相關。
網頁A連接到網頁B,網頁A的PageRank分數計算可能會增加也可能減少(參考後
面收斂的說明),完全看整體連結分怖,但是當網頁A的PageRank分數計算因連到
網頁B而減少時,也可能網頁B對網頁A被搜尋引擎認定為「具參考價值」並且內容相關。
這個時候就不能只考慮PageRank分數。
Larry Page在1996年間發明了PageRank的演算法,爾後又與Sergey Brin在Stanford發表了「The Anatomy of a Large-Scale Hypertextual Web Search Engine」,這個Web Search Engine就是現在使用的Google。而PageRank詳細內容到1998年才
發表,並且到2001年才取得專利。
PageRank另外讓人痛恨的是,外界所看到的演算法是理論上的,因為理論上有許多
假設,而這些假設在現實世界是行不通的,例如理論上的PageRank演算法沒有考慮
垃圾連結(Spam Link),並且理論上假設連結表示內容是相關的,但是在實務上卻充斥太多垃圾連結,
就算不是垃圾連結也不一定內容相關。
如果你想以PageRank演算法要來估算你的網頁,會發現是一件不可能的任務,因為
大多數人都看不懂PageRank演算法的表示法,頂多知道「外部連結進來可以讓網頁
累積PageRank」,「網頁的總連結數目太多會分散PageRank的貢獻度」。
為了解決這個問題,我們以理論上與實務上兩方面來探討PageRank演算法,讓讀者
可以一次把PageRank的迷團打開。
1. 理論上的PageRank演算法
PageRank公式如下:
以上d指damping factor,其值在0~1,一般設為0.85。damping factor(翻譯成「延滯係數」或「阻尼常數」),該數值越小會讓計算更簡單,詳細
說明參考(二)PageRank演算法的收斂。
PR(Vi)為Vi這個頁面的PR分數
In(Vi)為進進Vi這個頁面的連結數目
Out(Vi)為Vi這個頁面連出去的連結數目
以上的PageRank公式只是眾多表示法的其中之一,但是這個公式是普遍被接受並且
較易理解的公式。不過大概很多人看到以上的公式就不想看了,所以我們再用比較簡單的表
示法來說明。
如果網頁P有n個網頁連進來,這些網頁以L1、L2到Ln表示。網頁P可以得到的Pa
geRank分數就是:
PR(P)=(1-d)+
d
假設現在有個連結狀況如上圖3-29如果有網頁B、C連結到網頁A,並且網頁B連到網
頁C,PR(A)代表網頁A的PageRank分數。
PR(A)=(1-d)+d
PR(C)=(1-d)+d
因為網頁B、C連結到網頁A,PR(A)就會由網頁B、C貢獻過來,而網頁B連結到網
頁A與網頁C,所以網頁A、C各分得PR(B)的一半貢獻。而網頁A還有連結來自網頁C,
而網頁C只有一個連結,所以得到PR(C)的全部貢獻。將連結網頁的貢獻度總合再乘以d,
加上(1-d)就是目的網頁的PageRank分數。
這裡的PR(A)、PR(B)、PR(C)都是指PageRank分數,而非Page
Rank等級。
所以如果d=0.85,PR(B)=4
PR(C)=(1-0.85)+0.85
PR(A)=(1-0.85)+0.85
但是以上的PR(A)、PR(B)、PR(C)都只是PageRank分數,而不是P
ageRank等級。不然看起來網頁B的PR4,就可以讓網頁C變成PR1、網頁A變
成PR3,如果這麼簡單的話,就沒有PR0的網頁了。當然以上只是以假設PR(B)=4來
解釋,並且尚未進行迭代收斂的計算。
假設我有一個網頁Z具有5000個外部連結,且這些外部連結PageRank分數都為1,
且這些外部連結本身都有100個連結。
PR(Z)=(1-d)+d
以上的式子是說網頁Z由這些外部連結得到PageRank分數42.65,這個值當然
不是PageRank等級,它只是PageRank分數,PageRank分數如何對
照到PageRank等級在後面會詳細說明。
2. PageRank演算法的收斂
在上述的PageRank演算法中,有兩個問題需要解釋:為什麼要有「延滯係數」呢?
如果連結互有來往,不是會算到天荒地老嗎?
這兩個問題其實可以算是一個問題,問題的答案就是:「延滯係數」就是為了計算的效率,
能夠在天荒地老之前計算出來接近準確的教字,也就是讓數字儘速的收斂(Converg
ence)到穩定的數字。
這個答案可能看起來也解決不了大家的疑惑,我們就以一個簡單的例子來說明。
由PageRank的公式可以得到如下計算:
PR(A)=(1-d)+dPR(C)
PR(B)=(1-d)+d
PR(C)=(1-d)+d
如果初始設定d=0.85,且PR(A)、PR(B)、PR(C)初始都為1。
PR(A)=0.15+0.85=1
PR(B)=0.15+0.425=0.575
PR(C)=0.15+0.91375=1.06375
但是因為網頁互有來往,所以不能這樣就算了,我們以填表的方式來說明整個計算。
你會發現上面的計算到某個階段,PR(A)、PR(B)、PR(C)會慢慢趨近某個數
值,到最後就不再變化,這個就是計算結果已經收斂,我們用圖表的方式看就更清楚了。
其中d值的任務就是決定計算結果收斂的速度,d值越小其收斂越快。但PageRank又
要考慮網頁的貢獻度(0.85表示貢獻出85%的數值),所以又不能太小,最後經實驗
結果,認為0.85是最合理的數值。
前面的假設PR(A)、PR(B)、PR(C)的初始設為1,如果不是1會如何呢?
我們若使用d=0.85,假設PR(A)、PR(B)、PR(C)的初始設為0,其計
算結果如下:
你是否發現結果是一樣的呢?所以不管PR(A)、PR(B)、PR(C)的初始值如何
,只要d值相同,則最後計算結果就會一樣。
當然實際上整個網頁連結複雜度不是只有網頁A、B、C,所以還是有許多研究提出方法來
讓PageRank計算更快收斂,並且更加精準。
前面提到網頁A連接到網頁B,網頁A的PageRank分數計算可能會增加也可能減少
,我們用一個例子來說明。如果連結狀況依序是網頁B、網頁N1、網頁N2、網頁N3、
網頁A,經過PageRank演算法計算:
PR(A)=0.5562947
PR(B)=0.15
PR(N1)=0.2775
PR(N2)=0.385875
PR(N3)=0.4779938
我們現在來看網頁A如果有連回網頁B或其他網頁的狀況。如果網頁A連回網頁B,經過P
ageRank演算法計算,所有網頁的PageRank全部成為1。
如果網頁A連回網頁N1,經過PageRank演算法計算:
PR(A)=1.1638116
PR(B)=0.15
PR(N1)=1.2667399
PR(N2)=1.2267289
PR(N3)=1.1927196
如果網頁A連回網頁N2,經過PageRank演算法計算:
PR(A)=1.4416448
PR(B)=0.15
PR(N1)=0.2775
PR(N2)=1.6112731
PR(N3)=1.5195821
如果網頁A連回網頁N3,經過PageRank演算法計算:
PR(A)=2.0046655
PR(B)=0.15
PR(N1)=0.2775
PR(N2)=0.385875
PR(N3)=2.1819595
所以如果網頁連結到「貢獻群網頁」,對其PageRank有加分作用;但如果網頁連結
到「非貢獻群網頁」,對其PageRank就有減分作用。所謂「貢獻群網頁」就是指這
群網頁其中有連結到某網頁A上,這群網頁對於網頁A就是「貢獻群網頁」,反之則是「非
貢獻群網頁」。但是,前面也提到不能只考慮PageRank加減分作用,還要考慮連結
網頁的「好壞」跟「參考相關性」。
真實的網頁連結複雜度,不是上述的結構可以說明,你很難去預測全部「貢獻群網頁」與「
非貢獻群網頁」,頂多只能局部預測,所以反而把重點放在連結網頁的「好壞」跟「參考相
關性」,是比較正面的作法。
3. 實務上的PageRank演算法
如果你問說:「我現在的PageRank等級是1,那我應該還需要多少連結,Page
Rank才能到達2呢?」
如果你用理論上的PageRank演算法,大概算到天荒地老也算不出來。所幸在200
4年有一位Bob Wakfer用照表操課的方式幫你計算,讓你有一個概念。
以上這個Bob Wakfer的表格就更清楚說明了PageRank分數跟PageRank等級,當P
ageRank等級為1時,其PageRank分數是在6~30的區間範圍;當Pag
eRank等級為2時,其PageRank分數是在30~164的區間範圍,依此類推
到PageRank等級10。
例如PageRank等級5表示PageRank分數需累積到大於5033,小於27
213。所以同樣是PageRank等級5的網頁,可能具有的PageRank分數就
有很大的差異。
這個表格假設d值是0.85,並且平均每頁的連結數目是50個。因此每個PageRa
nk等級為1的網頁連結,平均會貢獻出0.30的PageRank分數;每個Page
Rank等級為2的網頁連結,平均會貢獻出1.65的PageRank分數;每個Pa
geRank等級為3的網頁連結,平均會貢獻出9.06的PageRank分數;依此
類推到PageRank等級10。
所以要讓網頁的PageRank等級成為5,就需要16803個PageRank等級1的
連結;或需要3055個PageRank等級2的連結。
如果需要調整d值與平均每頁的連結數目,你可以下載Bob Wakfer的試算表來自己設定。
所以「我現在的PageRank等級是1,那我應該還需要多少連結,PageRank才
能到達2呢?」,以上面的表格來看,你的網頁可能需要PageRank分數為1~25分
左右,也就是需要4~9個PageRank等級1的連結。
在前面的例子中,假設我有一個網頁Z具有5000個外部連結,且這些外部連結Page
Rank分數都為1,且這些外部連結本身都有100個連結。
也就是說網頁Z僅具備PR2的標準。
但是如果只是如此照表操課的話,世界就太美好了,因此Google為了鍛鍊大家的體格
,還另外加上了一條規則:並非每個連結都是計算PageRank的有效連結。
因此如果你的網頁有16803個PageRank等級1的連結,不代表網頁的Page
Rank等級會到達5,其中如果被Google判定為垃圾連結或不相關連結,其連結貢
獻度就是零。因此想要提升PageRank等級,唯一方式就是增加「有效連結」,而非
只是求得連結數目。
什麼是「有效連結」?就是不能把重點只放在搜尋引擎優化技巧,而需全面的網站優化,進
行我們所說的CLOUDS六大步驟。才能真正把每個頁面的重要度提升,進而在搜尋結果
頁面有優秀的表現。
SEO 網路行銷 Current Mood:
nauseatedCurrent Music: Indy