PageRank算法

1. PageRank算法概述

???????? PageRank,網頁排名,又稱網頁級別Google左側排名佩奇排名。

??????? 是Google創始人拉里·佩奇和謝爾蓋·布林于1997年構建早期的搜索系統原型時提出的鏈接分析算法,自從Google在商業上獲得空前的成功后,該算法也成為其他搜索引擎和學術界十分關注的計算模型。眼下許多重要的鏈接分析算法都是在PageRank算法基礎上衍生出來的。PageRank是Google用于用來標識網頁的等級/重要性的一種方法,是Google用來衡量一個站點的好壞的唯一標準。在揉合了諸如Title標識和Keywords標識等全部其他因素之后,Google通過PageRank來調整結果,使那些更具“等級/重要性”的網頁在搜索結果中另站點排名獲得提升,從而提高搜索結果的相關性和質量。其級別從0到10級,10級為滿分。PR值越高說明該網頁越受歡迎(越重要)。比如:一個PR值為1的站點表明這個站點不太具有流行度,而PR值為7到10則表明這個站點很受歡迎(或者說極其重要)。一般PR值達到4,就算是一個不錯的站點了。Google把自己的站點的PR值定到10,這說明Google這個站點是很受歡迎的,也能夠說這個站點很重要。

?

2. 從入鏈數量到 PageRank

??????? 在PageRank提出之前,已經有研究者提出利用網頁的入鏈數量來進行鏈接分析計算,這樣的入鏈方法如果一個網頁的入鏈越多,則該網頁越重要。早期的非常多搜索引擎也採納了入鏈數量作為鏈接分析方法,對于搜索引擎效果提升也有較明顯的效果。 PageRank除了考慮到入鏈數量的影響,還參考了網頁質量因素,兩者相結合獲得了更好的網頁重要性評價標準。
對于某個互聯網網頁A來說,該網頁PageRank的計算基于下面兩個基本如果:
????? 數量如果:在Web圖模型中,如果一個頁面節點接收到的其它網頁指向的入鏈數量越多,那么這個頁面越重要。
????? 質量如果指向頁面A的入鏈質量不同,質量高的頁面會通過鏈接向其它頁面傳遞很多其它的權重。所以越是質量高的頁面指向頁面A,則頁面A越重要。
?????? 利用以上兩個如果,PageRank算法剛開始賦予每一個網頁同樣的重要性得分,通過迭代遞歸計算來更新每一個頁面節點的PageRank得分,直到得分穩定為止。 PageRank計算得出的結果是網頁的重要性評價,這和用戶輸入的查詢是沒有不論什么關系的,即算法是主題無關的。如果有一個搜索引擎,其相似度計算函數不考慮內容相似因素,全然採用PageRank來進行排序,那么這個搜索引擎的表現是什么樣子的呢?這個搜索引擎對于隨意不同的查詢請求,返回的結果都是同樣的,即返回PageRank值最高的頁面。

?

3. PageRank算法原理

???? ?PageRank的計算充分利用了兩個如果:數量如果質量如果。過程例如以下:
????? 1)在初始階段網頁通過鏈接關系構建起Web圖,每一個頁面設置同樣的PageRank值,通過若干輪的計算,會得到每一個頁面所獲得的終于PageRank值。隨著每一輪的計算進行,網頁當前的PageRank值會不斷得到更新。

????? 2)在一輪中更新頁面PageRank得分的計算方法:在一輪更新頁面PageRank得分的計算中,每一個頁面將其當前的PageRank值平均分配到本頁面包括的出鏈上,這樣每一個鏈接即獲得了對應的權值。而每一個頁面將全部指向本頁面的入鏈所傳入的權值求和,就可以得到新的PageRank得分。當每一個頁面都獲得了更新后的PageRank值,就完畢了一輪PageRank計算。?

?

3.2 基本思想:

?????? 假設網頁T存在一個指向網頁A的連接,則表明T的全部者覺得A比較重要,從而把T的一部分重要性得分賦予A。這個重要性得分值為:PR(T)/L(T)

 ??? 當中PR(T)為T的PageRank值,L(T)為T的出鏈數

??????? 則A的PageRank值為一系列類似于T的頁面重要性得分值的累加。

??????? 即一個頁面的得票數由全部鏈向它的頁面的重要性來決定,到一個頁面的超鏈接相當于對該頁投一票。一個頁面的PageRank是由全部鏈向它的頁面(鏈入頁面)的重要性經過遞歸算法得到的。一個有較多鏈入的頁面會有較高的等級,相反假設一個頁面沒有不論什么鏈入頁面,那么它沒有等級。

3.3 PageRank簡單計算:

?????? 如果一個由僅僅有4個頁面組成的集合:A,B,C和D。如果全部頁面都鏈向A,那么A的PR(PageRank)值將是B,C及D的和。

??????

?????? 繼續如果B也有鏈接到C,而且D也有鏈接到包含A的3個頁面。一個頁面不能投票2次。所以B給每一個頁面半票。以相同的邏輯,D投出的票僅僅有三分之中的一個算到了A的PageRank上。

??????

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

??????

樣例:

??????? 如圖1 所看到的的樣例來說明PageRank的詳細計算過程。??

???????????????????????????

???????

?

3.4? 修正PageRank計算公式:

?????????因為存在一些出鏈為0,也就是那些不鏈接不論什么其它網頁的網, 也稱為孤立網頁,使得非常多網頁能被訪問到。因此須要對 PageRank公式進行修正,即在簡單公式的基礎上添加了阻尼系數(damping factor)q, q一般取值q=0.85。

????? 其意義是,在隨意時刻,用戶到達某頁面后并繼續向后瀏覽的概率。?1- q= 0.15就是用戶停止點擊,隨機跳到新URL的概率)的算法被用到了全部頁面上,估算頁面可能被上網者放入書簽的概率。

????? 最后,全部這些被換算為一個百分比再乘上一個系數q。因為以下的算法,沒有頁面的PageRank會是0。所以,Google通過數學系統給了每一個頁面一個最小值。

?????

???? 這個公式就是.S Brin 和 L. Page 在《The Anatomy of a Large- scale Hypertextual Web Search Engine Computer Networks and ISDN Systems 》定義的公式。

???? 所以一個頁面的PageRank是由其它頁面的PageRank計算得到。Google不斷的反復計算每一個頁面的PageRank。假設給每一個頁面一個隨機PageRank值(非0),那么經過不斷的反復計算,這些頁面的PR值會趨向于正常和穩定。這就是搜索引擎使用它的原因。

?

4. PageRank冪法計算(線性代數應用)

4.1 完整公式:

關于這節內容,能夠查閱:谷歌背后的數學

首先求完整的公式:

Arvind Arasu 在《Junghoo Cho Hector Garcia - Molina, Andreas Paepcke, Sriram Raghavan. Searching the Web》 更加準確的表達為:

?

是被研究的頁面,鏈入頁面的數量,鏈出頁面的數量,而N是全部頁面的數量。

PageRank值是一個特殊矩陣中的特征向量。這個特征向量為:

?

R是例如以下等式的一個解:

假設網頁i有指向網頁j的一個鏈接,則

否則=0。

4.2 使用冪法求PageRank

????? 那我們PageRank 公式能夠轉換為求解的值,

????? 當中矩陣為 A =?q??× P + ( 1 一 q) *? /N 。 P 為概率轉移矩陣,為 n? 維的全 1 行.?則?=

?????

???? 冪法計算步驟例如以下:
????? X? 設隨意一個初始向量,?即設置初始每一個網頁的?PageRank值均。一般為1.

???? R = AX;

???? while? (1 )(

??????????? if?( l?X -?R I? <??) { //假設最后兩次的結果近似或者同樣,返回R

???? ???????????? return R;

????????? ?}??? else?? {

??????????????? X =R;

?????????????? R = AX;

???????? }

??? }

4.3 求解步驟:

一、 P概率轉移矩陣的計算過程:

??????? 先建立一個網頁間的鏈接關系的模型,即我們須要合適的數據結構表示頁面間的連接關系。

????? 1) 首先我們使用圖的形式來表述網頁之間關系:

?????? 如今如果僅僅有四張網頁集合:A、B、C,其抽象結構例如以下圖1:

???????

??????????????????????? ????????????1?網頁間的鏈接關系

????? 顯然這個圖是強連通的(從任一節點出發都能夠到達另外不論什么一個節點)。

????? 2)我們用矩陣表示連通圖:

?? ??? 用鄰接矩陣?P表示這個圖中頂點關系 ,假設頂(頁面)i向頂點(頁面)j有鏈接情況 ,則pij?? =?? 1 ,否則pij?? =?? 0 。如圖2所看到的。假設網頁文件總數為N?, 那么這個網頁鏈接矩陣就是一個N x N? 的矩 陣 。?

????? 3)網頁鏈接概率矩陣

???????然后將每一行除以該行非零數字之和,即(每行非0數之和就是鏈接網個數)則得到新矩陣P’,如圖3所看到的。 這個矩陣記錄了 每一個網頁跳轉到其它網頁的概率,即當中i行j列的值表示用戶從頁面i 轉到頁面j的概率。圖1 中A頁面鏈向B、C,所以一個用戶從A跳轉到B、C的概率各為1/2。

??????4)概率轉移矩陣P

?????? 採用P’ 的轉置矩?陣進行計算,?也就是上面提到的概率轉移矩陣P 。? 如圖4所看到的:

?????

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

???????????????????????? 圖4? P’ 的轉置矩?陣

?

二、 A矩陣計算過程。


??????1)P概率轉移矩陣??:

??????

??????2)/N 為:

????

????? 3)A矩陣為:q??× P + ( 1 一 q) *? /N = 0.85? × P?+ 0.15??* /N

????

????? 初始每一個網頁的?PageRank值均為1 , 即X~t = ( 1 , 1 , 1 ) 。?

三、?循環迭代計算PageRank的過程

?????? 第一步:

???????

????????? 由于X 與R的區別較大。 繼續迭代。

????????? 第二步:

??????????

?????? 繼續迭代這個過程...

??????直到最后兩次的結果近似或者同樣,即R終于收斂,R 約等于X,此時計算停止。終于的R 就是各個頁面的 PageRank 值。

用冪法計算PageRank 值總是收斂的,即計算的次數是有限的。

?

??????Larry Page和Sergey Brin 兩人從理論上證明了不論初始值怎樣選取,這樣的算法都保證了網頁排名的預計值能收斂到他們的真實值。

????? 因為互聯網上網頁的數量是巨大的,上面提到的二維矩陣從理論上講有網頁數目平方之多個元素。假設我們假定有十億個網頁,那么這個矩陣 就有一百億億個元素。這樣大的矩陣相乘,計算量是很大的。Larry Page和Sergey Brin兩人利用稀疏矩陣計算的技巧,大大的簡化了計算量。

?

5. PageRank算法優缺點

長處

????????是一個與查詢無關的靜態算法,全部網頁的PageRank值通過離線計算獲得;有效降低在線查詢時的計算量,極大降低了查詢響應時間。

缺點:

?????? 1)人們的查詢具有主題特征,PageRank忽略了主題相關性,導致結果的相關性和主題性減少

??????? 2)舊的頁面等級會比新頁面高。由于即使是非常好的新頁面也不會有非常多上游鏈接,除非它是某個網站的子網站。

?

?

?參考文獻:

維基百科http://en.wikipedia.org/wiki/Page_rank

PageRank算法的分析及實現

《這就是搜索引擎:核心技術具體解釋》

?

?

轉載于:https://www.cnblogs.com/gcczhongduan/p/4050781.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/259788.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/259788.shtml
英文地址,請注明出處:http://en.pswp.cn/news/259788.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

linux中_在 Linux 桌面中開始使用 Lumina | Linux 中國

本文是 24 天 Linux 桌面特別系列的一部分。Lumina 桌面是讓你使用快速、合理的基于 Fluxbox 桌面的捷徑&#xff0c;它具有你無法缺少的所有功能。-- Seth Kenlon多年來&#xff0c;有一個名為 PC-BSD 的基于 FreeBSD 的桌面操作系統(OS)。它旨在作為一個常規使用的系統&#…

彈體飛行姿態仿真軟件程序代寫

題目彈體飛行姿態仿真軟件畢業設計的任務和要求&#xff08;1&#xff09;掌握查閱參考文獻的方法 &#xff08;2&#xff09;對彈體飛行運行學模型有所研究 &#xff08;3&#xff09;在給定初始俯仰角、加速度、彈體質量等參數的前提下&#xff0c;完成彈體飛行軌跡的繪制及不…

Asp.net中實現同一用戶名同時登陸,注銷先前用戶(轉)

Web 項目中經常遇到的問題就是同一用戶名多次登陸的問題&#xff0c;相應的解決辦法也很多&#xff0c;總結起來不外乎這幾種解決辦法&#xff1a;將登陸后的用戶名放到數據庫表中&#xff1b;登陸后的用 戶名放到Session中&#xff1b;登陸后的用戶名放到Application中&#x…

hdu 2612 Find a way (廣搜)

Problem DescriptionPass a year learning in Hangzhou, yifenfei arrival hometown Ningbo at finally. Leave Ningbo one year, yifenfei have many people to meet. Especially a good friend Merceki.Yifenfei’s home is at the countryside, but Merceki’s home is in t…

使用Notepad++開發C#,一個復雜點的csscript腳本

使用Notepad開發C#&#xff0c;一個復雜點的csscript腳本&#xff1a; 12345678910111213141516171819//css_dir ....lib;//css_ref Geb.Image.dll;//css_ref Geb.Image.ShapeAnalysis.dll;//css_ref Geb.Utils.dll;//css_ref Geb.Utils.WinForm.dll;//css_co /unsafe; using S…

正則表達式里轉義字符_五分鐘搞定正則表達式,如果沒搞定,再加兩分鐘

五分鐘搞定正則表達式&#xff0c;如果沒搞定&#xff0c;再加兩分鐘【這是 ZY 第 18 篇原創文章】 文章概覽一、正則表達式介紹正則表達式&#xff0c;又稱規則表達式。&#xff08;英語&#xff1a;Regular Expression&#xff0c;在代碼中常簡寫為regex、regexp或RE&#xf…

百度富文本編輯器,改變圖片上傳存儲路徑

我用的是最新版&#xff01; 找到以下2個關鍵文件&#xff1a; YourPath.../Ueditor/php/config.json YourPath.../Ueditor/php/Uploader.class.php config.json找到如下代碼&#xff1a; "imagePathFormat": "...(這里不用管)",//找到imagePathFormat所在…

如何手動給Docker容器設置靜態IP

2019獨角獸企業重金招聘Python工程師標準>>> 要點&#xff1a; 1.首先需要在宿主機上虛擬出來一個真實可用橋接網卡比如br0 2.docker啟動的時候默認使用br0進行橋接網絡 3.創建docker容器的時候使用--netnone模式 4.手動為每個創建的容器生成靜態ip。但是ip每次在重…

獲取滾動條寬度代碼(記錄)

1.創建一個嵌套節點&#xff0c;讓外層節點產生滾動條。 2.用offsetWidth - clientWidth 即可獲得滾動條寬度。 為了避免頁面抖動&#xff0c;可以設置外層元素position:absolute和visibility:hidden 代碼如下&#xff1a; 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHT…

的函數原型_JS基礎函數、對象和原型、原型鏈的關系

JS的原型、原型鏈一直是比較難理解的內容&#xff0c;不少初學者甚至有一定經驗的老鳥都不一定能完全說清楚&#xff0c;更多的"很可能"是一知半解&#xff0c;而這部分內容又是JS的核心內容&#xff0c;想要技術進階的話肯定不能對這個概念一知半解&#xff0c;碰到…

python字符串基本操作

直接上圖&#xff1a; ispace()是否為空格 isupper()與islower是否為大寫或小寫 isdigit是否為數字 isalpha是否為字母 isalnum()是否為字母與數字混合體 startswith()與endswith()判斷是否以什么開始&#xff0c;以什么結尾轉載于:https://www.cnblogs.com/bestSmile/p/405550…

遷移學習自我學習

最近在看Ng的深度學習教程&#xff0c;看到self-taught learning的時候&#xff0c;對一些概念感到很陌生。作為還清技術債的一個環節&#xff0c;用半個下午的時間簡單搜了下幾個名詞&#xff0c;以后如果會用到的話再深入去看。 監督學習在前一篇博客中討論過了&#xff0c;這…

堰流實驗報告思考題_堰流流量系數測定實驗

二、實驗操作部分1&#xff0e;實驗操作過程(可用圖表示)2&#xff0e;實驗數據、表格及數據處理3&#xff0e;結論1.實驗步驟(1)放水之前&#xff0c;用活動測針測出堰前槽底高程▽低和堰頂高程▽堰頂&#xff0c;堰高P▽堰頂-▽底。(2)關閉首部的泄水閥&#xff0c;打開進水閥…

WCF全雙工以及用戶名密碼驗證

WCF是支持TCP雙向連接的&#xff0c;支持Server和Client之間互發協議&#xff0c;通過 訂閱-發布 的全雙工形式實現&#xff0c;全雙工的用戶名密碼驗證需要X509證書加密&#xff0c;單工模式的用戶名密碼驗證時&#xff0c;X509證書是可選的。 在全雙工模式下&#xff0c;會有…

MTV: Django眼中的MVC

URLconfMTV&#xff1a;Django眼中的MVC MVC是眾所周知的模式&#xff0c;即&#xff1a;將應用程序分解成三個組成部分:model(模型),view(視圖),和 controller(控制 器)。其中&#xff1a;M 管理應用程序的狀態&#xff08;通常存儲到數據庫中&#xff09;&#xff0c;并約束改…

createbitmap導致的內存泄漏如何處理_C++ 如何避免內存泄漏,一篇就夠

前言近年來&#xff0c;討論 C 的人越來越少了&#xff0c;一方面是由于像 Python&#xff0c;Go 等優秀的語言的流行&#xff0c;另一方面&#xff0c;大家也越來越明白一個道理&#xff0c;并不是所有的場景都必須使用 C 進行開發。Python 可以應付大部分對性能要求不高的場景…

Visio繪制功能分解圖

為什么要繪制功能分解圖&#xff1f; 對于編程人員來說&#xff0c;具體分配任務的時候&#xff0c;必須知道自己要做什么&#xff0c;必須了解系統的大體框架。功能分解圖可以幫助我們理清程序的框架&#xff0c;便于大局觀的掌握。 用Visio2010創建功能分解圖 1、選擇模版 2、…

Heka:Go編寫,來自Mozilla,高效、靈活的插件式數據挖掘工具(轉)

轉自&#xff1a;http://www.csdn.net/article/2013-05-02/2815116-introduce-from-mozilla-heka-go摘要&#xff1a;一直崇尚開源的Mozilla近日釋放了Heka測試版——插件架構&#xff0c;Go編寫。在支持使用Go擴展功能的同時&#xff0c;還通過允許“Sandboxed Filters”提供了…

cocos2d學習筆記2——學習資源

1. 視頻 找了好幾個視頻&#xff0c;有一些講得好的文件資源沒有&#xff0c;后來終于找到一個講得不錯還有文件資源的&#xff0c;還有高清下載地址&#xff0c;雖然是2.2版本的&#xff0c;但是確實能學到不少東西&#xff0c;對用cocos2d做游戲有了基本的印象&#xff0c;對…

深究標準IO的緩存

前言 在最近看了APUE的標準IO部分之后感覺對標準IO的緩存太模糊&#xff0c;沒有搞明白&#xff0c;APUE中關于緩存的部分一筆帶過&#xff0c;沒有深究緩存的實現原理&#xff0c;這樣一本被吹上天的書為什么不講透徹呢&#xff1f;今天早上爬起來趕緊找了幾篇文章看看&#x…