PageRank---Google的民主表决式网页排名技术

PageRank是[Google]专有的[算法],用于衡量特定网页相对于索引中的其他网页而言的重要程度。

不同的网页直接存在着引用的关系,就像一张图一样:


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

这个图也可以转化为矩阵表示,其中W[1][0]=0.3333表示从网页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]]

运算结果如下:
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

运算结果如下:
4.77908611974e-09
[[ 4.64238536e-05]
[ 6.76593827e-05]
[ 6.76593827e-05]
[ 6.76593827e-05]]
虽然收敛了,但是结果看着并不是我们想要的。
修改实现代码:

 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

运算结果如下:
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

运算结果如下:
4.77908611974e-09
[[ 4.64238536e-05]
[ 6.76593827e-05]
[ 6.76593827e-05]
[ 6.76593827e-05]]

我的理解,既然是相对与其他网页的重要程度,那么就可以理解为:
SUM=p其他网页对该网页的引用数+q该网页对其他网页的引用数
对这个SUM进行排序。
实际在矩阵相乘中的作用就是如此,权重就在一定程度上代表了重要程度,所以这个计算最终一定是收敛的。
数学之美中公式记录如下:

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,117评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,328评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,839评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,007评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,384评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,629评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,880评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,593评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,313评论 1 243
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,575评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,066评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,392评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,052评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,082评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,844评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,662评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,575评论 2 270

推荐阅读更多精彩内容

  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 10,507评论 6 13
  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 4,059评论 0 13
  • 删掉重新来一次吧,记得改那个脚本修改 /home/ubuntu/eos/scripts/install_depen...
    卢衍泓阅读 1,044评论 0 1
  • 一、市场分析 O2O的移动外卖已经成为大众点餐的主要方式之一,满足了用户足不出户就能享受美食的需求,作为传统快餐文...
    isjasmine阅读 15,920评论 0 10
  • 2017年7月8日 亲爱的天父爸爸,您带着复兴的器皿回到厦门,回到家中,复兴万事!感恩爸爸把我带到与您的亲密关系中...
    陈小兰阅读 172评论 0 0