正文共835个字,8张图,预计阅读时间6分钟。

1、PageRank

1.1.简介

PageRank,又称网页排名、谷歌左侧排名,是一种由搜索引擎根据网页之间相互的超链接计算的技术,而作为网页排名的要素之一,以Google公司创办人拉里·佩奇(Larry Page)之姓来命名。Google用它来体现网页的相关性和重要性,在搜索引擎优化操作中是经常被用来评估网页优化的成效因素之一。

假设一个由4个网页组成的群体:A,B,C和D。如果所有页面都只链接至A,那么A的PR(PageRank)值将是B,C及D的Pagerank总和。

重新假设B链接到A和C,C只链接到A,并且D链接到全部其他的3个页面。一个页面总共只有一票。所以B给A和C每个页面半票。以同样的逻辑,D投出的票只有三分之一算到了A的PageRank上。

1.2.公式

对于一个页面A,那么它的PR值为:

  • PR(A) 是页面A的PR值

  • PR(Ti)是页面Ti的PR值,在这里,页面Ti是指向A的所有页面中的某个页面

  • C(Ti)是页面Ti的出度,也就是Ti指向其他页面的边的个数

  • d 为阻尼系数,其意义是,在任意时刻,用户到达某页面后并继续向后浏览的概率,

该数值是根据上网者使用浏览器书签的平均频率估算而得,通常d=0.85

还有一个版本的公式:

N为页面的总数

1.3.具体实例

三个页面A、B、C

为了便于计算,我们假设每个页面的PR初始值为1,d为0.5。

  • 页面A的PR值计算如下:

  • 页面B的PR值计算如下:

  • 页面C的PR值计算如下:

下面是迭代计算12轮之后,各个页面的PR值:

那么什么时候,迭代结束哪?一般要设置收敛条件:比如上次迭代结果与本次迭代结果小于某个误差,我们结束程序运行;比如还可以设置最大循环次数。

2、代码实现

 1import numpy as np 2from scipy.sparse import csc_matrix 3 4def pageRank(G, s=.85, maxerr=.0001): 5""" 6Computes the pagerank for each of the n states 7Parameters 8---------- 9G: matrix representing state transitions10Gij is a binary value representing a transition from state i to j.11s: probability of following a transition. 1-s probability of teleporting12to another state.13maxerr: if the sum of pageranks between iterations is bellow this we will14    have converged.15"""16n = G.shape[0]17# 将 G into 马尔科夫 A18A = csc_matrix(G, dtype=np.float)19rsums = np.array(A.sum(1))[:, 0]20ri, ci = A.nonzero()21A.data /= rsums[ri]22sink = rsums == 023# 计算PR值,直到满足收敛条件24ro, r = np.zeros(n), np.ones(n)25while np.sum(np.abs(r - ro)) > maxerr:26ro = r.copy()27for i in range(0, n):28    Ai = np.array(A[:, i].todense())[:, 0]29    Di = sink / float(n)30    Ei = np.ones(n) / float(n)31    r[i] = ro.dot(Ai * s + Di * s + Ei * (1 - s))32 # 归一化33 return r / float(sum(r))34 if __name__ == '__main__':35 # 上面的例子36 G = np.array([[0, 0, 1],37          [1, 0, 0],38          [1, 1, 0]])39 print(pageRank(G, s=0.85))40 # 结果:41 [0.51203622 0.19313191 0.29483187]

3、参考资料

1、Pagerank Algorithm Explained(https://www.slideshare.net/jdhaar/pagerank-algorithm-explaned)

2、【大创_社区划分】——PageRank算法的解析与Python实现(https://blog.csdn.net/gamer_gyt/article/details/47443877)

3、浅入浅出:PageRank算法(https://www.letiantian.me/2014-06-10-pagerank/)

4、PageRank(https://en.wikipedia.org/wiki/PageRank)

原文链接:https://www.jianshu.com/p/6af90342c3ba

查阅更为简洁方便的分类文章以及最新的课程、产品信息,请移步至全新呈现的“LeadAI学院官网”:

www.leadai.org

请关注人工智能LeadAI公众号,查看更多专业文章

大家都在看

LSTM模型在问答系统中的应用

基于TensorFlow的神经网络解决用户流失概览问题

最全常见算法工程师面试题目整理(一)

最全常见算法工程师面试题目整理(二)

TensorFlow从1到2 | 第三章 深度学习革命的开端:卷积神经网络

装饰器 | Python高级编程

今天不如来复习下Python基础

PageRank算法原理与实现相关推荐

  1. 数据挖掘十大算法(六):PageRank算法原理与Python实现

    参考 .PageRank算法--从原理到实现 零. PageRank算法简介 PageRank算法,即网页排名算法,由Google创始人Larry Page在斯坦福上学的时候提出来的.该算法用于对网页 ...

  2. PageRank算法原理与Python实现

    本文转载自https://blog.csdn.net/ten_sory/article/details/80927738 PageRank算法原理与Python实现 PageRank算法,即网页排名算 ...

  3. PageRank算法原理及代码

    本文内容出自帅器学习的课程内容,讲得原理清晰,概念深入,链接: PANKRANK算法视频 另有一篇知乎文章,PAGERANK讲得系统透彻,链接在此:关键词提取和摘要算法TextRank详解与实战 PA ...

  4. [转]PageRank算法

    原文引自: 原文引自: http://blog.csdn.net/hguisu/article/details/7996185 感谢 1. PageRank算法概述 PageRank,即网页排名,又称 ...

  5. SEO算法:如何通过PageRank算法判断SEO排序结果

    想必在做SEO的时候有同学发现相同的网站有两个页面但是排名的名次不同,既然是同一个网站那么应该权重都一样怎么会一个排名前面一个后面呢?在搜索引擎当中每个网页都有对应的页面得分在决定这两个页面排名顺序是 ...

  6. PageRank算法与特征向量和特征值(eigenvector和eigenvalue)

    1. PageRank算法概述 PageRank,即网页排名,又称网页级别.Google左侧排名或佩奇排名. 是Google创始人拉里·佩奇和谢尔盖·布林于1997年构建早期的搜索系统原型时提出的链接 ...

  7. PageRank算法

    1. PageRank算法概述 PageRank,即网页排名,又称网页级别.Google左侧排名或佩奇排名. 是Google创始人拉里·佩奇和谢尔盖·布林于1997年构建早期的搜索系统原型时提出的链接 ...

  8. Spark GraphX 中的PageRank算法、pregel函数、航班飞行网图分析

    PageRank算法 PageRank算法原理剖析及Spark实现 - 简书 (jianshu.com) import org.apache.spark.SparkContext import org ...

  9. PageRank算法--从原理到实现

    本文将介绍PageRank算法的相关内容,具体如下: 1.算法来源 2.算法原理 3.算法证明 4.PR值计算方法 4.1 幂迭代法 4.2 特征值法 4.3 代数法 5.算法实现 5.1 基于迭代法 ...

最新文章

  1. java if switch 效率_Java中 switch-case 如何优化?
  2. [Ms SQL] 基本創建、修改與刪除
  3. nginx+tomcat的负载均衡
  4. 回文字符串啊~---太搞了 少年 DXH
  5. 京东自动评论脚本_京东时光机python脚本 自动完成任务
  6. 分布式数据库中间件使用经验分享
  7. 暖通专业标准规范大全_完美!暖通空调专业工程量计算知识大全
  8. How to debug WCF in local
  9. 很棒的远程执行工具psexec的用法
  10. Linux 之父家断电六天:内核更新延期;华为 EMUI 11 用户突破1亿;美国得州最大电力公司申请破产 | 极客头条...
  11. Apache 2.4.28的安装
  12. 局域网服务器文件夹加密软件,企业局域网共享文件夹加密软件、局域网共享文件访问控制软件的使用...
  13. 第一课----色彩构成与色彩模式
  14. python自动排版公众号_微信公众号文章自动化一键排版
  15. 10月24日,咱们自己的节日来了!
  16. 佐治亚理工计算机科学,Gatech的CS「佐治亚理工学院计算机科学系」
  17. 黑盒测试和白盒测试的基本原理/区别是什么?
  18. 事务的并发读问题(简图)
  19. Android Unable to execute dex: method ID not in [0, 0xffff]: 65536 问题解决方法
  20. [下载]《SAP R/3 IDES 4.71 中文版》

热门文章

  1. python程序设计简明教程知识点总结_Python程序设计简明教程 在线阅读
  2. linux7.0安装过程详解,图解红旗Linux7.0安装过程.doc
  3. 查看linux是否lvm分区,linux LVM分区查看dm设备
  4. php创建mysql分区,MySql创建分区表
  5. Catalyst 5.8: the Perl MVC Framework
  6. vue + vue-router + vue-resource 基于vue-cli脚手架 ---笔记
  7. Introduction MBG
  8. android里R.layout.的问题
  9. 华为C8825D刷机失败解决方法
  10. Jexus vs IIS8 非绝对客观对比测试