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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

谷歌的网页排序算法(PageRank Algorithm)

發(fā)布時(shí)間:2025/3/19 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 谷歌的网页排序算法(PageRank Algorithm) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本文將介紹谷歌的網(wǎng)頁(yè)排序算法(PageRank Algorithm),以及它如何從250億份網(wǎng)頁(yè)中撈到與你的搜索條件匹配的結(jié)果。它的匹配效果如此之好,以至于“谷歌”(google)今天已經(jīng)成為一個(gè)被廣泛使用的動(dòng)詞了。

如何辨別誰(shuí)重要

如果你曾建立過(guò)一個(gè)網(wǎng)頁(yè),你應(yīng)該會(huì)列入一些你感興趣的鏈接,它們很容易使你點(diǎn)擊到其它含有重要、可靠信息的網(wǎng)頁(yè)。這樣就相當(dāng)于你肯定了你所鏈接頁(yè)面的重要性。谷歌的網(wǎng)頁(yè)排序算法每月在所有網(wǎng)頁(yè)中進(jìn)行一次受歡迎程度的評(píng)估,以確定哪些網(wǎng)頁(yè)最重要。網(wǎng)頁(yè)排序算法的提出者,謝爾蓋?布林(Sergey Brin)和拉里?佩奇(Lawrence Page)的基本想法是:一個(gè)網(wǎng)頁(yè)的重要性是由鏈接到它的其他網(wǎng)頁(yè)的數(shù)量及其重要性來(lái)決定。

我們對(duì)任意一個(gè)網(wǎng)頁(yè)P(yáng),以I(P)來(lái)表述其重要性,并稱之為網(wǎng)頁(yè)的網(wǎng)頁(yè)排序。在很多網(wǎng)站,你可以找到一個(gè)近似的網(wǎng)頁(yè)排序值。(例如,美國(guó)數(shù)學(xué)會(huì)的首頁(yè)目前的網(wǎng)頁(yè)排序值為8,最高分是10。你可以試試找到一個(gè)網(wǎng)頁(yè)排序值為10的網(wǎng)頁(yè)嗎?)這個(gè)網(wǎng)頁(yè)排序值僅是一個(gè)近似值,因?yàn)楣雀杈芙^提供真實(shí)的網(wǎng)頁(yè)排序值,以阻止那些試圖干擾排序的行為。

網(wǎng)頁(yè)排序是這樣確定的。假定網(wǎng)頁(yè)P(yáng)j有l(wèi)j個(gè)鏈接。如果這些鏈接中的一個(gè)鏈接到網(wǎng)頁(yè)P(yáng)i,那么網(wǎng)頁(yè)P(yáng)j將會(huì)將其重要性的1/lj賦給Pi。網(wǎng)頁(yè)P(yáng)i的重要性就是所有指向這個(gè)網(wǎng)頁(yè)的其他網(wǎng)頁(yè)所貢獻(xiàn)的重要性的加和。換言之,如果我們記鏈接到網(wǎng)頁(yè)P(yáng)i的網(wǎng)頁(yè)集合為Bi,那么

這或許讓你想起“先有雞還是先有蛋”的問(wèn)題:為了確定一個(gè)網(wǎng)頁(yè)的重要性,我們首先得知道所有指向它的其他網(wǎng)頁(yè)的重要性。然而,我們可將這個(gè)問(wèn)題改寫為一個(gè)更數(shù)學(xué)化的問(wèn)題。

首先建立一個(gè)矩陣,稱為超鏈矩陣(hyperlink matrix),H=[Hij],其中第i行第j列的元素為


注意到H有一些特殊的性質(zhì)。首先,它所有的元都是非負(fù)的。其次,除非對(duì)應(yīng)這一列的網(wǎng)頁(yè)沒(méi)有任何鏈接,它的每一列的和為1。所有元均非負(fù)且列和為1的矩陣稱為隨機(jī)矩陣,隨機(jī)矩陣將在下述內(nèi)容中起到重要作用。

我們還需要定義向量I=[I(Pi)],它的元素為所有網(wǎng)頁(yè)的網(wǎng)頁(yè)排序——重要性的排序值。前面定義的網(wǎng)頁(yè)排序可以表述為

換言之,向量I是矩陣H對(duì)應(yīng)特征值1的特征向量。我們也稱之為矩陣H的平穩(wěn)向量(stationary vector)。

讓我們來(lái)看一個(gè)例子。下圖所示為一個(gè)網(wǎng)頁(yè)集合(8個(gè)),箭頭表示鏈接。

其相應(yīng)的矩陣為

這說(shuō)明網(wǎng)頁(yè)8的受歡迎程度最高。下圖是陰影化的圖,其中網(wǎng)頁(yè)排序值越高的網(wǎng)頁(yè)陰影越淺。

?

計(jì)算平穩(wěn)向量

有很多方法可以找到一個(gè)方陣的特征向量。然而,我們面對(duì)的是一個(gè)特殊的挑戰(zhàn),因?yàn)榫仃嘓是一個(gè)這樣的方陣,它的每一列都對(duì)應(yīng)谷歌檢索到的一個(gè)網(wǎng)頁(yè)。也就是說(shuō),H大約有n=250億行和列。不過(guò)其中大多數(shù)的元都是0;事實(shí)上,研究表明每個(gè)網(wǎng)頁(yè)平均約有10個(gè)鏈接,換言之,平均而言,每一列中除了10個(gè)元外全是0。我們將選擇被稱為冪法(power method)的方法來(lái)找到矩陣H的平穩(wěn)向量 I。

冪法如何實(shí)現(xiàn)呢?首先選擇 I 的備選向量I0,進(jìn)而按下式產(chǎn)生向量序列 Ik

這個(gè)方法是建立在如下的一般原理上:

一般原理:序列Ik將收斂到平穩(wěn)向量I。

我們首先用個(gè)例子驗(yàn)證上面的結(jié)論。

一個(gè)自然的問(wèn)題是,這些數(shù)字有什么含義。當(dāng)然,關(guān)于一個(gè)網(wǎng)頁(yè)的重要性,可能沒(méi)有絕對(duì)的度量,而僅有比較兩個(gè)網(wǎng)頁(yè)的重要性的比例度量,如“網(wǎng)頁(yè)A的重要性是網(wǎng)頁(yè)B的兩倍。”基于這一原因,我們可以用一個(gè)固定量去同乘以所有的重要性排序值,這并不會(huì)影響我們能獲得的信息。這樣,我們總是假定所有受歡迎程度值(popularity)的和為1,原因稍后解釋。

三個(gè)重要的問(wèn)題

自然而然產(chǎn)生的三個(gè)問(wèn)題是:

  • 序列Ik總是收斂嗎?(即運(yùn)算多次后,Ik和Ik+1幾乎是一樣的)

  • 收斂后的平穩(wěn)向量是否和初始向量I0的選取沒(méi)有關(guān)系?

  • 重要性排序值是否包含了我們想要的信息?

對(duì)目前的方法而言,上述三個(gè)的答案都是否定的!下面,我們將看看如何改進(jìn)我們的方法,使得改進(jìn)后的算法滿足上述三個(gè)要求。先看個(gè)非常簡(jiǎn)單的例子。考慮如下包含兩個(gè)網(wǎng)頁(yè)的小網(wǎng)絡(luò),其中一個(gè)鏈接到另一個(gè):

下例展示了算法的運(yùn)行過(guò)程:

在這個(gè)例子中,兩個(gè)網(wǎng)頁(yè)的重要性排序值均為0,這樣我們無(wú)法獲知兩個(gè)網(wǎng)頁(yè)之間的相對(duì)重要性信息。問(wèn)題在于網(wǎng)頁(yè)P(yáng)2沒(méi)有任何鏈接。因此,在每個(gè)迭代步驟中,它從網(wǎng)頁(yè)P(yáng)1獲取了一些重要性,但卻沒(méi)有賦給其他任何網(wǎng)頁(yè)。這樣將耗盡網(wǎng)絡(luò)中的所有重要性。沒(méi)有任何鏈接的網(wǎng)頁(yè)稱為懸掛點(diǎn)(dangling nodes),顯然在我們要研究的實(shí)際網(wǎng)絡(luò)中存在很多這樣的點(diǎn)。稍后我們將看到如何處理這樣的點(diǎn),在此之前我們先考慮一種新的理解矩陣H和平穩(wěn)向量I的思路。

H的概率化解釋

想象我們隨機(jī)地在網(wǎng)上跳轉(zhuǎn)網(wǎng)頁(yè);也就是說(shuō),當(dāng)我們?cè)L問(wèn)一個(gè)網(wǎng)頁(yè)時(shí),一秒鐘后我們隨機(jī)地選擇當(dāng)前網(wǎng)頁(yè)的一個(gè)鏈接到達(dá)另一個(gè)網(wǎng)頁(yè)。例如,我們正訪問(wèn)含有l(wèi)j個(gè)鏈接的網(wǎng)頁(yè)P(yáng)j,其中一個(gè)鏈接引導(dǎo)我們?cè)L問(wèn)了網(wǎng)頁(yè)P(yáng)i,那么下一步轉(zhuǎn)到網(wǎng)頁(yè)P(yáng)i的概率就是1/lj。

由于跳轉(zhuǎn)網(wǎng)頁(yè)是隨機(jī)的,我們用Tj表示停留在網(wǎng)頁(yè)P(yáng)j上的時(shí)間。那么我們從網(wǎng)頁(yè)P(yáng)j轉(zhuǎn)到網(wǎng)頁(yè)P(yáng)i的時(shí)間為Tj/lj。如果我們轉(zhuǎn)到了網(wǎng)頁(yè)P(yáng)i,那么我們必然是從一個(gè)指向它的網(wǎng)頁(yè)而來(lái)。這意味著

其中求和是對(duì)所有鏈接到Pi的網(wǎng)頁(yè)P(yáng)j進(jìn)行的。注意到這個(gè)方程與定義網(wǎng)頁(yè)排序值的方程相同,因此I(Pi)=Ti。那么一個(gè)網(wǎng)頁(yè)的網(wǎng)頁(yè)排序值可以解釋為隨機(jī)跳轉(zhuǎn)時(shí)花在這個(gè)網(wǎng)頁(yè)上的時(shí)間。如果你曾經(jīng)上網(wǎng)瀏覽過(guò)某個(gè)你不熟悉的話題的相關(guān)信息時(shí),你會(huì)有這種感覺(jué):按照鏈接跳轉(zhuǎn)網(wǎng)頁(yè),過(guò)一會(huì)你會(huì)發(fā)現(xiàn),相較于其他網(wǎng)頁(yè),你會(huì)更頻繁地回到某一部分網(wǎng)頁(yè)。正如諺語(yǔ)所說(shuō)“條條大路通羅馬,”這部分網(wǎng)頁(yè)顯然是更重要的網(wǎng)頁(yè)。

基于這個(gè)解釋,很自然地可以要求網(wǎng)頁(yè)排序向量I的所有元之和為1。

當(dāng)然,這種表述中還存在一個(gè)問(wèn)題:如果我們隨機(jī)地跳轉(zhuǎn)網(wǎng)頁(yè),在某種程度上,我們肯定會(huì)被困在某個(gè)懸掛點(diǎn)上,這個(gè)網(wǎng)頁(yè)沒(méi)有給出任何鏈接。為了能夠繼續(xù)進(jìn)行,我們需要隨機(jī)地選取下一個(gè)網(wǎng)頁(yè);也就是說(shuō),我們假定懸掛點(diǎn)可以鏈接到其他任何一個(gè)網(wǎng)頁(yè)。這個(gè)效果相當(dāng)于將超鏈矩陣H做如下修正:將其中所有元都為0的列替換為所有元均為1/n的列,前者就對(duì)應(yīng)于網(wǎng)頁(yè)中的懸掛點(diǎn)。這樣修正后懸掛點(diǎn)就不存在了。我們稱修正后的新矩陣為S。

我們之前的例子,現(xiàn)在就變成了

換言之,網(wǎng)頁(yè)P(yáng)2的重要性是網(wǎng)頁(yè)P(yáng)1的兩倍,符合你的直觀認(rèn)知了。

矩陣S有一個(gè)很好的性質(zhì),即其所有元均非負(fù)且每列的和均為1。換言之,S為隨機(jī)矩陣。隨機(jī)矩陣具有一些很有用的性質(zhì)。例如,隨機(jī)矩陣總是存在平穩(wěn)向量。

為了稍后的應(yīng)用,我們要注意到S是由H通過(guò)一個(gè)簡(jiǎn)單的修正得到。定義矩陣A如下:對(duì)應(yīng)于懸掛點(diǎn)的列的每個(gè)元均為1/n,其余各元均為0。則S=H+A。

冪法如何實(shí)現(xiàn)?

一般而言,冪法是尋找矩陣對(duì)應(yīng)于絕對(duì)值最大的特征值的特征向量。就我們而言,我們要尋找矩陣S對(duì)應(yīng)于特征值1的特征向量。首先要說(shuō)到的是最好的情形。在這種情形下,其他特征值的絕對(duì)值都小于1;也就是說(shuō),矩陣S的其它特征值都滿足|λ|<1。

我們假定矩陣S的特征值為λj,且

對(duì)矩陣S,假設(shè)對(duì)應(yīng)于特征值λj的特征向量存在一個(gè)基向量vj。這一假設(shè)在一般情況下并不一定要成立,但如果成立可以幫助我們更容易地理解冪法如何實(shí)現(xiàn)。將初始向量I0寫成如下形式

那么

當(dāng)j≥2時(shí),因?yàn)樗刑卣髦档慕^對(duì)值小于1,因此這是λkj→0。從而Ik→I=c1v1,后者是對(duì)應(yīng)于特征值1的一個(gè)特征向量。需要指出的是,Ik→I的速度由|λ2|確定。當(dāng)|λ2|比較接近于0時(shí),那么λk2→0會(huì)相當(dāng)快。例如,考慮下述矩陣

這個(gè)矩陣的特征值為λ1=1及λ2=0.3。下圖左可以看出用紅色標(biāo)記的向量Ik收斂到用綠色標(biāo)記的平穩(wěn)向量I。

再考慮矩陣

其特征值為λ1=1及λ2=0.7。從上圖右可以看出,本例中向量Ik收斂到平穩(wěn)向量I的速度要慢很多,因?yàn)樗牡诙€(gè)特征值較大。

不順之時(shí)

在上述討論中,我們假定矩陣S需要滿足λ1=1且|λ2|<1。然而,我們可能會(huì)發(fā)現(xiàn),這一點(diǎn)并不總成立。

假定網(wǎng)絡(luò)關(guān)系如下:

在這種情形下,矩陣S為

那么我們可以得到

在這種情況下,向量序列Ik不再收斂。這是為什么?注意到矩陣S的第二個(gè)特征值滿足|λ2|=1,因此前述冪法的前提不再成立。

為了保證|λ2|<1,我們需要矩陣S為本原(primitive)矩陣。這意味著,對(duì)某個(gè)m,Sm的所有元均為正。換言之,若給定兩個(gè)網(wǎng)頁(yè),那么從第一個(gè)網(wǎng)頁(yè)經(jīng)過(guò)m個(gè)鏈接后可以到達(dá)第二個(gè)網(wǎng)頁(yè)。顯然,上述最后的這個(gè)例子并不滿足這個(gè)條件。稍后,我們將看到如何修正矩陣S以獲得一個(gè)本原隨機(jī)矩陣,從而滿足|λ2|<1。

下面說(shuō)明我們的方法行不通的另一個(gè)例子。考慮如下圖所示的網(wǎng)絡(luò)

?

在此例中,矩陣S為

注意到前四個(gè)網(wǎng)頁(yè)的網(wǎng)頁(yè)排序值均為0。這使我們感覺(jué)不太對(duì):每個(gè)頁(yè)面都有其它網(wǎng)頁(yè)鏈接到它,顯然總有人喜歡這些網(wǎng)頁(yè)!一般來(lái)說(shuō),我們希望所有網(wǎng)頁(yè)的重要性排序值均為正。這個(gè)例子的問(wèn)題在于,它包含了一個(gè)小網(wǎng)絡(luò),即下圖中藍(lán)色方框部分。

在這個(gè)方框中,有鏈接進(jìn)入到藍(lán)色方框,但沒(méi)有鏈接轉(zhuǎn)到外部。正如前述中關(guān)于懸掛點(diǎn)的例子一樣,這些網(wǎng)頁(yè)構(gòu)成了一個(gè)“重要性水槽”,其他四個(gè)網(wǎng)頁(yè)的重要性都被“排”到這個(gè)“水槽”中。這種情形發(fā)生在矩陣S為可約(reducible)時(shí);也即,S可以寫成如下的塊形式

實(shí)際上,我們可以證明:如果矩陣S不可約,則一定存在一個(gè)所有元均為正的平穩(wěn)向量。

對(duì)一個(gè)網(wǎng)絡(luò),如果任意給定兩個(gè)網(wǎng)頁(yè),一定存在一條由鏈接構(gòu)成的路使得我們可以從第一個(gè)網(wǎng)頁(yè)轉(zhuǎn)到第二個(gè)網(wǎng)頁(yè),那么稱這個(gè)網(wǎng)絡(luò)是強(qiáng)連通的(strongly connected)。顯然,上面最后的這個(gè)例子不是強(qiáng)連通的。而強(qiáng)連通的網(wǎng)絡(luò)對(duì)應(yīng)的矩陣S是不可約的。

簡(jiǎn)言之,矩陣S是隨機(jī)矩陣,即意味著它有一個(gè)平穩(wěn)向量。然而,我們同時(shí)還需要S滿足(a)本原,從而|λ2|<1;(b)不可約,從而平穩(wěn)向量的所有元均為正。

最后一個(gè)修正

為得到一個(gè)本原且不可約的矩陣,我們將修正隨機(jī)跳轉(zhuǎn)網(wǎng)頁(yè)的方式。就目前來(lái)看,我們的隨機(jī)跳轉(zhuǎn)模式由矩陣S確定:或者是從當(dāng)前網(wǎng)頁(yè)上的鏈接中選擇一個(gè),或者是對(duì)沒(méi)有任何鏈接的網(wǎng)頁(yè),隨機(jī)地選取其他網(wǎng)頁(yè)中的任意一個(gè)。為了做出修正,首先選擇一個(gè)介于0到1之間的參數(shù)α。然后假定隨機(jī)跳轉(zhuǎn)的方式略作變動(dòng)。具體是,遵循矩陣S的方式跳轉(zhuǎn)的概率為α,而隨機(jī)地選擇下一個(gè)頁(yè)面的概率是1?α。

若記所有元均為1的n×n矩陣為J,那么我們就可以得到谷歌矩陣(Google matrix):

注意到G為隨機(jī)矩陣,因?yàn)樗请S機(jī)矩陣的組合。進(jìn)而,矩陣G的所有元均為正,因此G為本原且不可約。從而,G存在唯一的平穩(wěn)向量I,后者可以通過(guò)冪法獲得。

參數(shù)α的作用是一個(gè)重要因素。若α=1,則G=S。這意味著我們面對(duì)的是原始的網(wǎng)絡(luò)超鏈結(jié)構(gòu)。然而,若α=0,則G=1/nJ。也即我們面對(duì)的是一個(gè)任意兩個(gè)網(wǎng)頁(yè)之間都有連接的網(wǎng)絡(luò),它已經(jīng)喪失了原始的網(wǎng)絡(luò)超鏈結(jié)構(gòu)。顯然,我們將會(huì)把α的值取得接近于1,從而保證網(wǎng)絡(luò)的超鏈結(jié)構(gòu)在計(jì)算中的權(quán)重更大。

然而,還有另外一個(gè)問(wèn)題。請(qǐng)記住,冪法的收斂速度是由第二個(gè)特征值的幅值|λ2|決定的。而對(duì)谷歌矩陣,已經(jīng)證明了第二個(gè)特征值的幅值為|λ2|=α。這意味著當(dāng)α接近于1時(shí),冪法的收斂速度將會(huì)很慢。作為這個(gè)矛盾的折中方案,網(wǎng)頁(yè)排序算法的提出者謝爾蓋?布林和拉里?佩奇選擇α=0.85。

計(jì)算排序向量 I

到目前為止,我們所討論的看起來(lái)是一個(gè)很棒的理論,然而要知道,我們需要將這個(gè)方法應(yīng)用到一個(gè)維數(shù)n約為250億的n×n矩陣!事實(shí)上,冪法特別適用于這種情形。

回想隨機(jī)矩陣S可以寫成下述形式

從而谷歌矩陣有如下形式

其中J是元素全為1的矩陣,從而

現(xiàn)在注意到,矩陣H的絕大部分元都是0;平均而言,一列中只有10個(gè)元是非零數(shù)。從而,求HIk的每個(gè)元時(shí),只需要知道10個(gè)項(xiàng)即可。而且,和矩陣J一樣,矩陣A的行元素都是相同的。從而,求AIk與JIk相當(dāng)于添加懸掛點(diǎn)或者所有網(wǎng)頁(yè)的當(dāng)前重要性排序值。而這只需要一次即可完成。

當(dāng)α取值接近于0.85,布林和佩奇指出,需要50到100次迭代來(lái)獲得對(duì)向量I的一個(gè)足夠好的近似。計(jì)算到這個(gè)最優(yōu)值需要幾天才能完成。

當(dāng)然,網(wǎng)絡(luò)是不斷變化的。首先,網(wǎng)頁(yè)的內(nèi)容,尤其是新聞內(nèi)容,變動(dòng)頻繁。其次,網(wǎng)絡(luò)的隱含超鏈結(jié)構(gòu)在網(wǎng)頁(yè)或鏈接被加入或被刪除時(shí)也要相應(yīng)變動(dòng)。有傳聞?wù)f,谷歌大約1個(gè)月就要重新計(jì)算一次網(wǎng)頁(yè)排序向量I。由于在此期間可以看到網(wǎng)頁(yè)排序值會(huì)有一個(gè)明顯的波動(dòng),一些人便將其稱為谷歌舞會(huì)(Google Dance)。(在2002年,谷歌舉辦了一次谷歌舞會(huì)!)

總結(jié)

布林和佩奇在1998年創(chuàng)建了谷歌,正值網(wǎng)絡(luò)的增長(zhǎng)步伐已經(jīng)超過(guò)當(dāng)時(shí)搜索引擎的能力范圍。在那個(gè)時(shí)代,大多數(shù)的搜索引擎都是由那些沒(méi)興趣發(fā)布其產(chǎn)品運(yùn)作細(xì)節(jié)的企業(yè)研發(fā)的。在發(fā)展谷歌的過(guò)程中,布林和佩奇希望“推動(dòng)學(xué)術(shù)領(lǐng)域更多的發(fā)展和認(rèn)識(shí)。”換言之,他們首先希望,將搜索引擎引入一個(gè)更開放的、更學(xué)術(shù)化的環(huán)境,來(lái)改進(jìn)搜索引擎的設(shè)計(jì)。其次,他們感到其搜索引擎產(chǎn)生的統(tǒng)計(jì)數(shù)據(jù)能夠?yàn)閷W(xué)術(shù)研究提供很多的有趣信息。看來(lái),聯(lián)邦政府最近試圖獲得谷歌的一些統(tǒng)計(jì)數(shù)據(jù),也是同樣的想法。

還有一些其他使用網(wǎng)絡(luò)的超鏈結(jié)構(gòu)來(lái)進(jìn)行網(wǎng)頁(yè)排序的算法。值得一提的例子是HITS算法,由喬恩·克萊因伯格(Jon Kleinberg)提出,它是Teoma搜索引擎的基礎(chǔ)。

總結(jié)

以上是生活随笔為你收集整理的谷歌的网页排序算法(PageRank Algorithm)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。