PageRank---Google的民主表決式網(wǎng)頁排名技術(shù)

PageRank是[Google]專有的[算法],用于衡量特定網(wǎng)頁相對于索引中的其他網(wǎng)頁而言的重要程度装盯。

不同的網(wǎng)頁直接存在著引用的關(guān)系,就像一張圖一樣:


屏幕快照 2018-04-24 下午11.26.03.png

這個圖也可以轉(zhuǎn)化為矩陣表示堆缘,其中W[1][0]=0.3333表示從網(wǎng)頁A到B的概率趣效,其他它的也是同理:
[[ 0. 0.5 1. 0. ]
[ 0.33333333 0. 0. 0.5 ]
[ 0.33333333 0. 0. 0.5 ]
[ 0.33333333 0.5 0. 0. ]]
直接看代碼,從其他地方拿過來直接改的:

from numpy import *  
import numpy as np  
a = array([[0, 1, 1, 0],  
           [1, 0, 0, 1],  
           [1, 0, 0, 1],  
           [1, 1, 0, 0]], dtype=float)  
  
  
def graphMove(a):  
    b = transpose(a)  #  
  c = zeros((a.shape), dtype=float)  
    for i in range(a.shape[0]):  
        for j in range(a.shape[1]):  
            c[i][j] = a[i][j] / max((b[j].sum()),1)  
    return c  
  
  
def firstPr(c):  
    pr = zeros((c.shape[0], 1), dtype=float)  
    for i in range(c.shape[0]):  
        pr[i] = float(1) / c.shape[0]  
    # print pr,"\n==================================================="  
  return pr  
  
  
def pageRank(p, m, v):  
    vv=v  
    while (sum((p * dot(m, v) + (1 - p) * v-v)**2)>1e-9):  
        print(sum(p * dot(m, v) + (1 - p) * v-v)**2)  
        v = p * dot(m, v) + (1 - p) * v  
        print (v)  
  
    return v  
  
  
if __name__ == "__main__":  
    M = graphMove(a)  
    print(M)  
    pr = firstPr(M)  
    print(pr)  
    p = 0.8  
  print pageRank(p, M, pr)

其中 m 和 v 分別為:
[[ 0. 0.5 1. 0. ]
[ 0.33333333 0. 0. 0.5 ]
[ 0.33333333 0. 0. 0.5 ]
[ 0.33333333 0.5 0. 0. ]]
[[ 0.25]
[ 0.25]
[ 0.25]
[ 0.25]]

運算結(jié)果如下:
3.08148791102e-33
[[ 0.333328]
[ 0.222224]
[ 0.222224]
[ 0.222224]]
看樣子是和書中說得一樣手报,下面我們修改m蚯舱,及m對應的圖如下(終止點問題):

 [[ 0.          0.5         0.          0.        ]
 [ 0.33333333  0.          0.          0.5       ]
 [ 0.33333333  0.          0.          0.5       ]
 [ 0.33333333  0.5         0.          0.        ]]
屏幕快照 2018-04-24 下午11.32.43.png

運算結(jié)果如下:
4.77908611974e-09
[[ 4.64238536e-05]
[ 6.76593827e-05]
[ 6.76593827e-05]
[ 6.76593827e-05]]
雖然收斂了,但是結(jié)果看著并不是我們想要的掩蛤。
修改實現(xiàn)代碼:

 def pageRank(p, m, v):  
    e=v  
    while (sum((p * dot(m, v) + (1 - p) * e-v)**2)>1e-9):  
        print(sum(p * dot(m, v) + (1 - p) * e-v)**2)  
        v = p * dot(m, v) + (1 - p) * e  
        print (v)  
  
    return v

運算結(jié)果如下:
4.58712913112e-09
[[ 0.10136897]
[ 0.12840406]
[ 0.12840406]
[ 0.12840406]]
修改m,以及m對應的圖(陷阱問題):

 [[ 0.          0.5         0.          0.        ]
 [ 0.33333333  0.          0.          0.5       ]
 [ 0.33333333  0.          1.          0.5       ]
 [ 0.33333333  0.5         0.          0.        ]]
屏幕快照 2018-04-24 下午11.34.08.png

運算結(jié)果如下:
4.77908611974e-09
[[ 4.64238536e-05]
[ 6.76593827e-05]
[ 6.76593827e-05]
[ 6.76593827e-05]]

我的理解陈肛,既然是相對與其他網(wǎng)頁的重要程度揍鸟,那么就可以理解為:
SUM=p其他網(wǎng)頁對該網(wǎng)頁的引用數(shù)+q該網(wǎng)頁對其他網(wǎng)頁的引用數(shù)
對這個SUM進行排序。
實際在矩陣相乘中的作用就是如此,權(quán)重就在一定程度上代表了重要程度阳藻,所以這個計算最終一定是收斂的晰奖。
數(shù)學之美中公式記錄如下:

屏幕快照 2018-04-25 上午12.00.08.png

屏幕快照 2018-04-25 上午12.01.06.png

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市腥泥,隨后出現(xiàn)的幾起案子匾南,更是在濱河造成了極大的恐慌,老刑警劉巖蛔外,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蛆楞,死亡現(xiàn)場離奇詭異,居然都是意外死亡夹厌,警方通過查閱死者的電腦和手機豹爹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來矛纹,“玉大人臂聋,你說我怎么就攤上這事』蚰希” “怎么了孩等?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長采够。 經(jīng)常有香客問我肄方,道長,這世上最難降的妖魔是什么吁恍? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任扒秸,我火速辦了婚禮,結(jié)果婚禮上冀瓦,老公的妹妹穿的比我還像新娘伴奥。我一直安慰自己,他們只是感情好翼闽,可當我...
    茶點故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布拾徙。 她就那樣靜靜地躺著,像睡著了一般感局。 火紅的嫁衣襯著肌膚如雪尼啡。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天询微,我揣著相機與錄音崖瞭,去河邊找鬼。 笑死撑毛,一個胖子當著我的面吹牛书聚,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼雌续,長吁一口氣:“原來是場噩夢啊……” “哼斩个!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起驯杜,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤受啥,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后鸽心,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體滚局,經(jīng)...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年再悼,在試婚紗的時候發(fā)現(xiàn)自己被綠了核畴。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡冲九,死狀恐怖谤草,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情莺奸,我是刑警寧澤丑孩,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站灭贷,受9級特大地震影響温学,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜甚疟,卻給世界環(huán)境...
    茶點故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一仗岖、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧览妖,春花似錦轧拄、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至府树,卻和暖如春俐末,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背奄侠。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工卓箫, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人垄潮。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓丽柿,卻偏偏與公主長得像恢准,于是被迫代替她去往敵國和親魂挂。 傳聞我的和親對象是個殘疾皇子甫题,可洞房花燭夜當晚...
    茶點故事閱讀 45,033評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 國家電網(wǎng)公司企業(yè)標準(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報批稿:20170802 前言: 排版 ...
    庭說閱讀 10,984評論 6 13
  • 第2章 基本語法 2.1 概述 基本句法和變量 語句 JavaScript程序的執(zhí)行單位為行(line),也就是一...
    悟名先生閱讀 4,149評論 0 13
  • 刪掉重新來一次吧涂召,記得改那個腳本修改 /home/ubuntu/eos/scripts/install_depen...
    盧衍泓閱讀 1,144評論 0 1
  • 一坠非、市場分析 O2O的移動外賣已經(jīng)成為大眾點餐的主要方式之一,滿足了用戶足不出戶就能享受美食的需求果正,作為傳統(tǒng)快餐文...
    isjasmine閱讀 16,506評論 0 10
  • 2017年7月8日 親愛的天父爸爸炎码,您帶著復興的器皿回到廈門,回到家中秋泳,復興萬事潦闲!感恩爸爸把我?guī)У脚c您的親密關(guān)系中...
    陳小蘭閱讀 198評論 0 0