日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

PageRank算法(二)

發布時間:2024/3/12 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PageRank算法(二) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原文地址:https://blog.csdn.net/monkey_d_meng/article/details/6556295

說明:這是我學習過程中看到對PageRank來龍去脈解釋非常清晰的博客,博主很厲害,大家可以關注一下原創作者!

一、PageRank算法的簡單舉例

Google PageRank算法的思想精華在于:將一個網頁級別/重要性的排序問題轉化成了一個公共參與、以群體民主投票的方式求解的問題,網頁之間的鏈接即被認為是投票行為。同時,各個站點投票的權重不同,重要的網站投票具有較大的分量,而該網站是否重要的標準還需要依照其PageRank值。這看似是一個矛盾的過程:即我們需要用PageRank值來計算PageRank值~

聽起來有點不可思議,既像是遞歸,又像是迭代,似乎陷入了一個漩渦,Google的創始人佩奇和布林證明了這個過程最終收斂值與初始值無關。遺憾的是我一直都沒有找到這個證明,甚至我把佩奇他們當年那篇論文找出來看也沒有發現~

對于PageRank的收斂性,我們是可以找到反例的,這說明PageRank至少在某些情況下是不可能收斂的,或者說是收斂不完備的。在本文的第三部分,我們將PageRank的問題轉化為了馬爾可夫鏈的概率轉移問題,其收斂性的證明也即轉化為了馬氏鏈的平穩分布是否存在的證明。我們先來看一個簡單的例子:

Google PageRank取值范圍是0~10,為了敘述方便,我們使用0~1的區間作為度量,這并不會影響我們對PageRank原理的剖析,并且在初始化的時候,我們假設所有網站的PageRank的值是均勻分布的。這意味著,如果有N個網站,那么每個網站的PageRank初始值都是1/N。現在假設有4個網站A、B、C、D,則它們的初始PageRank都是0.25,它們的鏈接關系如下:

?

?

則初始值PR(A) = PR(B) = PR(C) = PR(D) = 0.25,又因為B、C、D都有指向A的鏈接,因此,它們每人都為A貢獻了0.25的PageRank值,重新計算A的PageRank值為:PR(A) = PR(B) + PR(C) + PR(D) = 0.75,由于B、C和D并沒有外部鏈接指向它們,因此PR(B)、PR(C)、PR(D)在這次計算中將被賦值為0。反復套用PageRank的計算公式,來看一下,這種情況下PageRank的收斂性,在第二次迭代之后,所有的PageRank值就都是0了:

PageRank

PR(A)

PR(B)

PR(C)

PR(D)

初始值

0.25

0.25

0.25

0.25

第一次迭代后

0.75

0

0

0

第二次迭代后

0

0

0

0

我們來分析一下這個例子PageRank收斂的情況,由于沒有網站鏈接到D,那么第一次迭代之后PR(D)=0,這將導致PR(B)=0,繼而導致PR(C)=0和PR(A)=0。

?

?

現在來看第個例子,假設網站B還有C鏈接,網站D上有其他三個網站的鏈接。對于B而言的話,它把自己的總價值分散投給了A和C,各占一半的PageRank,即0.125,C和D的情況同理。即一個網站投票給其它網站PageRank的值,需要除以它所鏈接到的網站總數。此時PageRank的計算公式為:

PR(A) = PR(B) / 2 + PR(C) / 1 + PR(D) / 3

PR(B) = PR(D) / 3

PR(C) = PR(B) / 2 + PR(D) / 3

PR(D) = 0

?

PageRank

PR(A)

PR(B)

PR(C)

PR(D)

初始值

0.25

0.25

0.25

0.25

第一次迭代后

0.4583

0.0833

0.2083

0

第二次迭代后

0.25

0

0.0417

0

第三次迭代后

.0.417

0

0

0

第四次迭代后

0

0

0

0

PageRank值計算過程的一般步驟可以概括如下:

(1)為每個網站設置一個初始的PageRank值。

(2)第一次迭代:每個網站得到一個新的PageRank。

(3)第二次迭代:用這組新的PageRank再按上述公式形成另一組新的PageRank。

……

當然,我們最關心的問題是,如此迭代下去,這些PageRank的值最終會收斂嗎?我們上述的兩個例子都是收斂的,但是不是所有情況都是如此呢?而且,上述例子中,我們發現,一旦某個頁面的外部鏈接數目為0的話,那必然將導致全部網頁最終收斂值為0。

?

二、PageRank算法的“黑洞效應”

為了討論收斂性的問題,我們暫時拋開具體的網站,把問題做一個抽象化的描述,我們可以把網頁之間的關聯關系理解為是若干張有向圖,圖與圖之間是互不連通的,那我們只考慮每一部分的收斂性,并不會影響其他部分的收斂性。我們考慮把邊權值當作網站所傳遞的PageRank值,則對于任意一個頂點而言,其出邊的權值之和必為1。

一個很顯然的結論是,如果連通圖中有一個頂點的入度為0,則經過有限次迭代之后,該連通圖內的所有頂點的PageRank均為0,形象的說,這個頂點就像一個黑洞一樣,把整體的PageRank值慢慢地“吸收”了。由于它不對外貢獻任何PR值,所以整體的PR總和是在不斷地減少,直到最終收斂到0。我把它稱之為:PageRank的“黑洞效應”。至于說Google是如何防止這種情況的發生,畢竟一個網站沒有外鏈是完全有可能的,我也尚未找到確切的答案。不過網上道是有人給出了一種解決辦法:即如果一個網站沒有外鏈,那么就假定該連通圖內其余所有的網點都是它的外鏈,這樣我們就避免了整體PageRank值被吸收的現象。

當一個連通圖內部每一個頂點入度均大于0時,不難看出,PR值在內部流通過程中,整體的PR值是守恒的。如果是存在一個頂點的入度為0呢?通過一次迭代,它的PR值就會變成0,而把它的那部分PR值貢獻給了圖中剩余的部分。所以,最終入度為0的頂點的PR值都將是0,而整體的PR仍然守恒。那么整體的PR值守恒就一定能夠保證每個頂點的PR值最終會收斂嗎?下面看一個簡單的例子:

按照之前的迭代步驟,會得到一個迭代的結果表。這將是一個無限循環,且不會收斂的過程。

PageRank

PR(A)

PR(B)

PR(C)

PR(D)

初始值

0.25

0.25

0.25

0.25

第一次迭代后

0

0.375

0.25

0.375

第二次迭代后

0

0.375

0.375

0.25

第三次迭代后

0

0.25

0.375

0.375

第四次迭代后

0

0.375

0.25

0.375

第五次迭代后

0

其實,同樣的問題我們還可以換一個角度來考慮,因為本質上有向圖和矩陣是可以相互轉化的,令A[i][j]表示從頂點i到達頂點j的概率,那么目力的矩陣表示就是:

0?????0.5??0?????0.5

0?????0?????1?????0

0?????0?????0?????1

0?????1?????0?????0

而我們所給定的初始向量是:(0.25???0.25???????0.25???????0.25),做第一次迭代,就相當于用初始向量乘以上面的矩陣。第二次迭代就相當于第一次迭代的結果再乘以上面的矩陣……實際上,在隨機過程理論中,上述矩陣被稱為“轉移概率矩陣”。這種離散狀態按照離散時間的隨機轉移過程稱為馬氏鏈(馬爾可夫鏈,Markov Chain)。設轉移概率矩陣為P,若存在正整數N,使得P^N>0(每個元素大于0),這種鏈被稱作正則鏈,它存在唯一的極限狀態概率,并且與初始狀態無關。

在這里,我們僅僅是非常簡單地討論了一下PageRank的原理,這與Google PageRank的實際算法實現相當甚遠。域名數據、內容質量、用戶數據、建站時間等都有可能被考慮進去,從而形成一個完善的算法。

當然,最讓人驚嘆的是,Google的PageRank能夠應對互聯網所產生的如此海量的網頁信息和實時的變化,并能夠在有限的時間內計算出所有網站的PageRank!這里面到底蘊涵著什么樣的奧秘,我也會繼續地追尋下去!

?

三、PageRank算法的馬爾科夫過程分析

從第二節的陳述中我們知道,事實上,PageRank值在轉移過程中變化規律是完全可以用馬爾科夫的狀態轉移來進行表征的,兩者本質屬于同一個問題。則當PageRank值收斂時,即為馬爾可科夫鏈達到平衡分布。推薦大家去讀《隨機過程》的教材,這里不在詳細地討論馬氏鏈的內容,只給出相應的結論。

為了形象說明馬氏鏈,這里舉一個例子。假設一{A, B, C}為馬氏鏈,其轉移概率矩陣如下所示:

0.7?????????0.1?????????0.2

0.1?????????0.8?????????0.1

0.05???????0.05???????0.9

因為該馬氏鏈是不可約的非周期的有限狀態,平穩分布存在,則我們要求其平衡分布為:

X = 0.7X + 0.1Y + 0.05Z

Y = 0.1X + 0.8Y + 0.05Z

Z = 0.2X + 0.1Y + 0.9Z

X + Y + Z = 1

解得上述方程組的平穩分布為:X = 0.1765,Y = 0.2353,Z = 0.5882。

既然,說我們把PageRank收斂性問題轉化為了求馬爾可夫鏈的平穩分布的問題,那么我們就可以從馬氏鏈的角度來分析問題。因此,對于PageRank的收斂性問題的證明也就迎刃而解了,只需要證明馬氏鏈在什么情況下才會出現平穩分布即可。我們可以知道馬氏鏈有三個推論:

推論1.?有限狀態的不可約非周期馬爾可夫鏈必存在平穩分布。

推論2.?若不可約馬爾可夫鏈的所有狀態是非常返或零常返的,則不存在平穩分布。

推論3.?若{Xi}是不可約的非周期馬氏鏈的平穩分布,則lim(n→∞)Pj(n) = Xi。

上面的三個推論看不懂不要緊,找本《隨機過程》的書就明白了,這里不再詳細討論了。既然問題得以轉化,那么我們還計算一個實例,看看PageRank是如何工作的。假設這里有相互鏈接關系的7個HTML網頁,并且HTML網頁之間的鏈接關系閉合于這1~7個網頁中,也即是說,除了這些網頁之外,沒有任何鏈接的出入。

那么我們可以很容易地將這個鏈接關系使用數學的方式表示出來。首先,分析鏈接的關系,列舉出各個鏈接源的ID及其所鏈接的目標ID。

鏈接源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

使用鄰接矩陣的形式表述網頁之間的鏈接關系,A[i][j]=1表示從i到j有鏈接,否則表示無鏈接,A為7*7的矩陣。

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;

?]

我們現假設,每個網頁初始的PageRank均為1,則會形成一個初始的PageRank轉移矩陣。

A = [

0,????1/5,????????1/5,????????1/5,????????1/5,????????0,????1/5;

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

1/2,?1/2,????????0,???????????0,???????????0,???????????0,????0;

0,????1/3,????????1/3,????????0,???????????1/3,????????0,????0;

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

1/2,?0,???????????0,???????????0,???????????1/2,????????0,????0;

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

]

這樣的話,我們就可以按照求馬氏鏈平穩分布的方式,求得PageRank收斂結果,方程組為:

X1 = X2 + X3 / 2 + X5 / 4 + X6 / 2

X2 = X1 / 5 + X3 / 2 + X4 / 3

X3 = X1 / 5 + X4 / 3 + X5 / 4

X4 = X1 / 5 + X5 / 4

X5 = X1 / 5 + X4 / 3 + X6 / 2 + X7

X6 = X5 / 4

X7 = X1 / 5

X1 + X2 + X3 + X4 + X5 + X6 + x7 = 1

解這個方程,最終我們得到每個網頁的PageRank收斂值分別為:

X1 = 0.303514,X2 = 0.38286,X3 = 0.32396,X4 = 0.24297,X5 = 0.41231,X6 = 0.10308,X7 = 0.13989。

將PageRank的評價按順序排列,小數點3位四舍五入,可以得到下表:

名次?PageRank???文件ID???發出鏈接ID??被鏈接ID

??1?????0.304?????1???????2,3,4,5,7???2,3,5,6

??2?????0.179?????5???????1,3,4,6?????1,4,6,7

??3?????0.166?????2???????1???????????1,3,4

??4?????0.141?????3???????1,2?????????1,4,5

??5?????0.105?????4???????2,3,5???????1,5

??6?????0.061?????7???????5???????????1

??7?????0.045?????6???????1,5??????????5

讓我們詳細地看一下。ID=1?的文件的?PageRank?是0.304,占據全體的三分之一,成為了第1位。特別需要說明的是,起到相當大效果的是從排在第3位的?ID=2?頁面中得到了所有的?PageRank(0.166)數。ID=2頁面有從3個地方過來的反向鏈接,而只有面向?ID=1頁面的一個鏈接,因此(面向ID=1頁面的)鏈接就得到了所有的?PageRank?數。不過,就因為?ID=1頁面是正向鏈接和反向鏈接最多的頁面,也可以理解它是最受歡迎的頁面吧。

?

?

依據上圖的PageRank值,我們實際地試著計算一下PageRank的收支,只要將自各頁的流入量單純相加即可。譬如?ID=1?的流入量為:

ID=1的流入量=(ID=2發出的Rank)+(ID=3發出的Rank) + (ID=5發出的Rank) + (ID=6發出的Rank) = 0.166 + 0.141 / 2 + 0.179 / 4 + 0.045 / 2 = 0.30375

在誤差范圍內PageRank的收支相符合。其他頁面ID的情況也一樣。以上的?PageRank?推移圖正表示了這個收支。沿著各自的鏈接發出的PageRank等于此頁面原有的PageRank除以發出鏈接數的值,而且和各自的頁面的PageRank收支相平衡。

不過,這樣絕妙均衡的本身,對理解線形代數的人來說當然不會是讓人驚訝的事情。因為這正是“特性值和固有矢量的性質”,總之這樣被選的數值的組就是固有矢量。以上就是?PageRank?的基本原理。?Google?做的就是大規模地處理這樣的非常特性值問題。

PS:LZ系保研,由于沒有參加考研,像《線性代數》、《隨機過程》好多年沒摸過了,很多知識都有所遺忘,所以寫的不深入。本文的一些內容是參考了別人的博客,自己又加入了些新元素,算是做一次探討。當然,接下來LZ會開始復習一下相關的數學知識,后續會重寫本文,以便于讓本文顯得更為Strong~

?

參考的相關博客地址:

http://www.charlesgao.com/?p=157

http://www.kreny.com/pagerank_cn.htm

總結

以上是生活随笔為你收集整理的PageRank算法(二)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。