Powered by Bravenet Bravenet Blog

Tag Board

This tag board is currently empty.

Please type in the four characters shown in the black box.

Wednesday, November 23rd 2011

5:50 PM

Google PageRank演算法深入研究

許多搞搜尋引擎優化或搜尋引擎行銷的人對於PageRank可以說是又愛又恨,愛的是當進行優化作業後獲得高的PageRank時,可以當作優化作業的量化成果;恨的是到底PageRank是怎麼計算的根本捉摸不定,並且得到高的PageRank又好像對於優化沒有什麼助益。而對於網路技術似懂非懂的人來說,要瞭解PageRank的真正原理與計算方式,更是一件瞎子摸象的任務。



我們先把PageRank必須瞭解的要點說明如下:



1. PageRank只是評比網頁重要性的指標之一,PageRank所代表的是網頁的概括性評比等級。也就是這個網頁在你所設定的內容上,經Google評估後所給的分數。



使用者下了關鍵字後,也許你的網頁有此關鍵字,但根據這個關鍵字或關鍵字組合,Google會再給你的網頁一個搜尋結果頁(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分數」。當網頁的PageRank等級是5,並不是經過PageRank演算法計算後數字是5,而是計算後數字落在是等級5的範圍內,越高等級的PageRank分數區間範圍會越大。



4. 當網頁A連接到網頁B,對於網頁A整體來說是加分還是扣分,取決於三個因素:PageRank分數計算、網頁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可以得到的PageRank分數就是:

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分數,而非PageRank等級。

所以如果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分數,而不是PageRank等級。不然看起來網頁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演算法中,有兩個問題需要解釋:為什麼要有「延滯係數」呢?如果連結互有來往,不是會算到天荒地老嗎?



這兩個問題其實可以算是一個問題,問題的答案就是:「延滯係數」就是為了計算的效率,能夠在天荒地老之前計算出來接近準確的教字,也就是讓數字儘速的收斂(Convergence)到穩定的數字。



這個答案可能看起來也解決不了大家的疑惑,我們就以一個簡單的例子來說明。

由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,經過PageRank演算法計算,所有網頁的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,那我應該還需要多少連結,PageRank才能到達2呢?」

如果你用理論上的PageRank演算法,大概算到天荒地老也算不出來。所幸在2004年有一位Bob Wakfer用照表操課的方式幫你計算,讓你有一個概念。

以上這個Bob Wakfer的表格就更清楚說明了PageRank分數跟PageRank等級,當PageRank等級為1時,其PageRank分數是在6~30的區間範圍;當PageRank等級為2時,其PageRank分數是在30~164的區間範圍,依此類推到PageRank等級10。



例如PageRank等級5表示PageRank分數需累積到大於5033,小於27213。所以同樣是PageRank等級5的網頁,可能具有的PageRank分數就有很大的差異。



這個表格假設d值是0.85,並且平均每頁的連結數目是50個。因此每個PageRank等級為1的網頁連結,平均會貢獻出0.30的PageRank分數;每個PageRank等級為2的網頁連結,平均會貢獻出1.65的PageRank分數;每個PageRank等級為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個外部連結,且這些外部連結PageRank分數都為1,且這些外部連結本身都有100個連結。



也就是說網頁Z僅具備PR2的標準。



但是如果只是如此照表操課的話,世界就太美好了,因此Google為了鍛鍊大家的體格,還另外加上了一條規則:並非每個連結都是計算PageRank的有效連結。



因此如果你的網頁有16803個PageRank等級1的連結,不代表網頁的PageRank等級會到達5,其中如果被Google判定為垃圾連結或不相關連結,其連結貢獻度就是零。因此想要提升PageRank等級,唯一方式就是增加「有效連結」,而非只是求得連結數目。



什麼是「有效連結」?就是不能把重點只放在搜尋引擎優化技巧,而需全面的網站優化,進行我們所說的CLOUDS六大步驟。才能真正把每個頁面的重要度提升,進而在搜尋結果頁面有優秀的表現。
網路行銷
網頁設計
0 Comment(s) / Post Comment

Monday, November 21st 2011

12:00 AM

Welcome to your new Bravenet Blog.

  • Mood: Excited!
You can maintain your blog by logging in to your Bravenet account. Once you are logged in you can customize the layout, colors, and features. In addition, you can add your own links, edit your profile, add your friends, and change many other options to personalize your blog.

Once you begin using your blog, you can view statistics in your members area to see how many people are reading your blog as well as where they come from.

We hope you enjoy your Blog. Be sure to tell all your friends about this great new service from Bravenet!
0 Comment(s) / Post Comment