網頁排名演算法
❶ 對pagerank演算法的整理
1、首先先大致介紹下pagerank,pagerank是Google排名演算法法則的一部分,是用來標記網頁的等級的一種方法,也是用來衡量一個網頁好壞的唯一標准。pagerank他採用PR值來劃分網頁的受歡迎度,PR值越高,則表名受歡迎度越高,PR最高為10,最低為0,一般PR達到4,則表名網站已經不錯了。PR為4的網站比PR為3的網站不是單純的好一點來形容,他是一種里氏震級的形式來形容的,就好比地震的等級,是指數刻度增長的,因此可以想像PR為10的網站是一種什麼程度。因為這個演算法是Google提出的,因此Google將自己的網站PR值設置為10,所以想要自己的網站PR達到10,是非常難的,如果你的網站可以達到Google的水平。
2、介紹完了pagerank是一個什麼東西後,我們就來介紹一下pagerank如何計算的。
2.1、用個例子來說明下PageRank演算法
在網頁A中有B、C、D三個鏈接,在網頁B中有A、C兩個個鏈接,在網頁C中有D鏈接,網頁D中有A、B兩個鏈接。(可以看出這個圖是強鏈接的,任何一個節點都可以到達另一個節點)。
我們假設每一個鏈接訪問的概率是相同的,為了計算方便我們將每一個網頁的PageRank設置為1。
先給出計算公式
PR(pj) 表示網頁 pj 的 PageRank 得分,L(pj) 表示網頁 pj 的出鏈接數量,1/L(pj) 就表示從網頁 pj 跳轉到 pi 的概率。
所以我們來計算第一次迭代後的PR值:
PR(A)=PR(B)/2+PR(D)/2
PR(B)=PR(A)/3+PR(D)/2
PR(C)=PR(A)/3+PR(B)/2
PR(D)=PR(A)/3+PR(C)/1
PR(A)+PR(B)+PR(C)+PR(D)=1
PR(A)=0.265, PR(B)=0.235, PR(C)=0.206, PR(D)=0.294
通過上面的公式在不斷的進行迭代,可以得到一個收斂值,大概是在(0.265,0.235,2.206,0.294)附近。
2.2看完公式之後,我們來考慮倆種特殊的情況
2.2.1終止問題
上面過程要滿足收斂性,需要具備一個條件:圖是強連通的,即從任意網頁可以到達其他任意網頁。
互聯網中存在網頁不滿足強連通的特性,因為有一些網頁不指向任何網頁,按照上面公式迭代計算下去,導致前面累計得到的轉移概率被清零,最終得到的概率分布向量所有元素幾乎都為0。
假設把上面圖中C到D的鏈接丟掉,C變成了一個終止點,得到下面這個圖:
轉移矩陣M為:
不斷迭代,最終得到所有元素都為0。
2.2.2 、陷阱問題
陷阱問題:是指有些網頁不存在指向其他網頁的鏈接,但存在指向自己的鏈接。比如下面這個圖:
這種情況下,PageRank演算法不斷迭代會導致概率分布值全部轉移到c網頁上,這使得其他網頁的概率分布值為0,從而整個網頁排名就失去了意義。如果按照上面圖則對應的轉移矩陣M為:
不斷迭代,最終得倒如下結果:
為了解決終止點問題和陷阱問題 ,下面需要對演算法進行改進。假設選取下一個跳轉頁面時,既不選 當前頁面 ,也不選 當前網頁上的其他鏈接 ,而是以一定概率跳轉到其他不相關網頁,那麼上面兩個問題就能得到很好的解決,這就是 完整 PageRank 演算法思想 。
N表示的時網頁鏈接的個數,α表示不進行隨機跳轉的概率。
利用上面公式繼續迭代下去,直到收斂,得到最終rank值。
PageRank 的計算是采樣迭代法實現的:一開始所有網頁結點的初始 PageRank 值都可以設置為某個相同的數,例如 1,然後我們通過上面這個公式,得到每個結點新的 PageRank 值。每當一張網頁的 PageRank 發生了改變,它也會影響它的出鏈接所指向的網頁,因此我們可以再次使用這個公式,循環地修正每個網頁結點的值。由於這是一個馬爾科夫過程,所以我們能從理論上證明,所有網頁的 PageRank 最終會達到一個穩定的數值。整個證明過程很復雜,這里我們只需要知道這個迭代計算的過程就行了。
3、基於本文主題叫做數學建模之美,也是一篇讀後感,所以我們還是寫一下感受吧。
這個演算法的優美之處,就在於巧妙地將網頁內容的好壞,根據鏈接數的形式,用PR值進行了排名,它不僅激發網頁越做越好,也促進了各個網頁之間的聯系。
同時在結構方面,他將一個復雜的問題,進行了簡單的類比,用圖結構的形式代替鏈接的形式,用戶訪問的順序,也就是節點的走向。所以數學之美就在於他是非常的簡單,用簡單的原理,向我們展示了一個復雜的問題。
❷ 什麼是搜索引擎的排名演算法
搜索引擎排名演算法是搜索引擎用來決定網頁排名的公式,該演算法在計算的時候會綜合考慮多種因素,包括關鍵字頻率、頁面標題、外部鏈接,甚至包括網站域名的年齡。有些因素的權重相對較大,這意味著在決定排名的時候它們是重要的因素,而有些因素權重較小。每種搜索引擎都有自己的演算法來決定顯示哪些內容以及按照什麼樣的順序顯示。每種搜索引擎還會不斷地改變它們的演算法,而且事先不會告訴你。所以,事實就是——你永遠不會知道搜索引擎是如何工作的。
❸ 百度網站排名演算法
點擊率丶有效流瀏時長丶專業度丶知明度等綜合研判,其實做為營利性私企,和網路的合作深度更能影響排名!
❹ 了解google用來對網頁進行排序的pagerank演算法,明確哪些因素會影響網頁的pager
一、網頁排名和谷歌演算法的誕生
在谷歌誕生之前那段時間,流行的網頁排名演算法都很類似,它們都使用了一個非常簡單的思想:越是重要的網頁,訪問量就會越大,許多大公司就通過統計網頁的訪問量來進行網頁排名。但是這種排名演算法有兩個很顯著的問題:
1、因為只能夠抽樣統計,所以統計數據不一定準確,而且訪問量的波動會比較大,想要得到准確的統計需要大量的時間和人力,還只能維持很短的有效時間。
2、訪問量並不一定能體現網頁的「重要程度」,可能一些比較早接觸互聯網的網民還記得,那時有很多人推出了專門「刷訪問量」的服務。
那有沒有更好的方法,不統計訪問量就能夠為網頁的重要度排序呢?
就是在這種情況下,1996年初,谷歌公司的創始人,當時還是美國斯坦福大學研究生的佩奇和布林開始了對網頁排序問題的研究。
在1999年,一篇以佩奇為第一作者的論文發表了,論文中介紹了一種叫做PageRank的演算法(具體演算法可查看馬海祥博客《pr值是什麼》的相關介紹),這種演算法的主要思想是:越「重要」的網頁,頁面上的鏈接質量也越高,同時越容易被其它「重要」的網頁鏈接。
於是,演算法完全利用網頁之間互相鏈接的關系來計算網頁的重要程度,將網頁排序徹底變成一個數學問題,終於擺脫了訪問量統計的框框。
二、模擬PageRank演算法的運行過程
在詳細講述這個演算法之前,不妨讓我們用一個游戲,先來簡單模擬一下PageRank演算法的運行過程,以便讀者更好地理解。
三兄弟分30顆豌豆,起初每人10顆,他們每次都要把手裡的豌豆全部平均分給自己喜歡的人,下圖表示了三兄弟各自擁有的初始豌豆數量,以及相互喜歡的關系(箭頭方向表示喜歡,例如老二喜歡老大,老大喜歡老二和老三)。
第一次分配後,我們會得到結果如下:
就這樣,讓游戲一直進行下去,直到他們手中的豌豆數不再變化為止。
那麼這個游戲到底是否可以結束呢,如果可以,最終的結果又是什麼樣的?
在此我們用電腦模擬了這個過程,得出的結果是:老大和老二的盤子里各有12顆豌豆,而老三的盤子里有6顆豌豆,這時候無論游戲怎麼進行下去,盤子里的豌豆數量都不會再變化。
看到這里,讀者可能會問:這個游戲和網頁排序有什麼關系?
實際上,PageRank會給每個網頁一個數值,這個數值越高,就說明這個網頁越「重要」。
而剛剛的游戲中,如果把豌豆的數量看作這個數值(可以不是整數),把孩子們看作網頁,那麼游戲的過程就是PageRank的演算法,而游戲結束時豌豆的分配,就是網頁的PageRank值。
三、PageRank演算法的數學模型
不同於之前的訪問量統計,PageRank求解了這樣一個問題:一個人在網路上瀏覽網頁,每看過一個網頁之後就會隨機點擊網頁上的鏈接訪問新的網頁。
如果當前這個人瀏覽的網頁x已經確定,那麼網頁x上每個鏈接被點擊的概率也是確定的,可以用向量Nx表示。
在這種條件下,這個人點擊了無限多次鏈接後,恰好停留在每個網頁上的概率分別是多少?
在這個模型中,我們用向量Ri來表示點擊了i次鏈接之後可能停留在每個網頁上的概率(則為一開始就打開了每個網頁的概率,後面我們將證明的取值對最終結果沒有影響)。很顯然R i的L1範式為1 ,這也是PageRank演算法本身的要求。
仍以上面的游戲為例,整個瀏覽過程的一開始,我們有:
其中,A表示每一次點擊鏈接概率的矩陣,A的第i列第j行的含義是如果當前訪問的網頁是網頁i,那麼下一次點擊鏈接跳轉到網頁j的概率為 。
這樣設計矩陣A的好處是,通過矩陣A和向量相乘,即可得出點擊一次鏈接後每個網頁可能的停留概率向量。例如,令,可以得到點擊一次鏈接後停留在每個網頁的概率:
之後一直迭代下去,有:
對於上面的例子,迭代結果如下圖:
由上圖我們可以看到,每個網頁停留的概率在振盪之後趨於穩定。
在這種穩定狀態下,我們可以知道,無論如何迭代,都有,這樣我們就獲得了一個方程:
而整個迭代的過程,就是在尋求方程R = AR的解,而無論是多少,迭代無限多次之後,一定會取得令R = AR成立的R值,整個求解R的過程,就如同一個人在一張地圖上的不同位置之間隨機地行走一樣,所以被稱為「隨機行走模型」。
隨機行走模型有一個顯著的特點,那就是每一次迭代的結果只與前一次有關,與更早的結果完全無關,這種過程又被稱為馬爾可夫過程(Markov Process)或馬爾可夫鏈(Markov Chain)。
馬爾可夫過程的數學定義是:如果對於一個隨機變數序列, 其中X n表示時間n的狀態及轉移概率P,有:
即只受的影響,則此過程成為馬爾可夫過程。其中稱作「一步轉移概率」,而兩步、三步轉移概率則可以通過一步轉移概率的積分求得。
當狀態空間有限時,轉移概率可以用用一個矩陣A來表示,稱作轉移矩陣(transition matrix),此時轉移概率的積分即為矩陣的冪,k步轉移概率可以用表示,這也是隨機行走模型中的情況,而對於一個正的(每個元素都為正的)轉移矩陣A ,可以證明一定有:
這就完整解釋了為什麼的取值對最終結果沒有影響。
四、修正「懸掛網頁」帶來的不良影響
但是這里有一個問題:即便的取值對最終結果沒有影響,用R作為網頁排序的依據是否真的合理?
在馬海祥看來,這個其實並不合理,因為當一個網頁只有鏈入鏈接沒有鏈出鏈接的時候,這個網頁就會像一個「黑洞」一樣,將同一個連通子圖中其它網頁流向它的PageRank慢慢「吞掉」(因為演算法中虛擬的用戶一旦進入那樣的網頁,就會由於沒有對外鏈接而永遠停留在那裡),這種網頁我們稱之為「懸掛網頁」(Dangling Link)。
這種「黑洞」效應是如此顯著,以至於在一個連通性良好的互聯網上,哪怕只有一個「懸掛網頁」,也足以使整個互聯網的網頁排序失效,可謂是「一粒老鼠屎壞了一鍋粥」。
為了解決這個問題,佩奇和布林進行了修正,他們意識到,當用戶訪問到「懸掛網頁」時,都不可能也不應該就停留在了這個頁面,而是會自行訪問其它網頁。
雖然對每個用戶來說,自行訪問的網頁與各人的興趣有關,但馬海祥覺得從平均意義上來講,佩奇和布林假定用戶將會在整個互聯網上隨機選取一個網頁進行訪問。
所以他們給PageRank演算法加入了一個新的向量E,它的作用是,按照其中所描述的比例來向全部網頁分配懸掛網頁每一次「吞掉」的PageRank。
這樣,相當於為懸掛網頁添加了鏈向網路上全部網頁的鏈接,避免了懸掛鏈接的出現。
以上就是谷歌背後最重要的PageRank演算法奧秘,與以往那種憑借關鍵詞出現次數所作的排序不同,這種由所有網頁的相互鏈接所確定的排序是不那麼容易做假的,因為做假者再是把自己的網頁吹得天花亂墜,如果沒有真正吸引人的內容,別人不鏈接它,一切就還是枉然。
而且「佩奇排序」還有一個重要特點,那就是它只與互聯網的結構有關,而與用戶具體搜索的東西無關,這意味著排序計算可以單獨進行,而無需在用戶鍵入搜索指令後才臨時進行,谷歌搜索的速度之所以快捷,在很大程度上得益於此。
馬海祥博客點評:
最後,我要強調的一點是,雖然PageRank是Google搜索結果排序的重要依據,並以此發家,不過它並不是全部依據,實際上,Google發展到現在,已同時用了數百種不同的演算法來確定最終顯示給用戶的搜索結果順序。
