1. PageRank算法概述

PageRank,即网页排名,又称网页级别Google左侧排名佩奇排名。

是Google创始人拉里·佩奇和谢尔盖·布林于1997年构建早期的搜索系统原型时提出的链接分析算法,自从Google在商业上获得空前的成功后,该算法也成为其他搜索引擎和学术界十分关注的计算模型。目前很多重要的链接分析算法都是在PageRank算法基础上衍生出来的。PageRank是Google用于用来标识网页的等级/重要性的一种方法,是Google用来衡量一个网站的好坏的唯一标准。在揉合了诸如Title标识和Keywords标识等所有其它因素之后,Google通过PageRank来调整结果,使那些更具“等级/重要性”的网页在搜索结果中另网站排名获得提升,从而提高搜索结果的相关性和质量。其级别从0到10级,10级为满分。PR值越高说明该网页越受欢迎(越重要)。例如:一个PR值为1的网站表明这个网站不太具有流行度,而PR值为7到10则表明这个网站非常受欢迎(或者说极其重要)。一般PR值达到4,就算是一个不错的网站了。Google把自己的网站的PR值定到10,这说明Google这个网站是非常受欢迎的,也可以说这个网站非常重要。

2. 从入链数量到 PageRank

在PageRank提出之前,已经有研究者提出利用网页的入链数量来进行链接分析计算,这种入链方法假设一个网页的入链越多,则该网页越重要。早期的很多搜索引擎也采纳了入链数量作为链接分析方法,对于搜索引擎效果提升也有较明显的效果。 PageRank除了考虑到入链数量的影响,还参考了网页质量因素,两者相结合获得了更好的网页重要性评价标准。
对于某个互联网网页A来说,该网页PageRank的计算基于以下两个基本假设:
 数量假设:在Web图模型中,如果一个页面节点接收到的其他网页指向的入链数量越多,那么这个页面越重要。
 质量假设:指向页面A的入链质量不同,质量高的页面会通过链接向其他页面传递更多的权重。所以越是质量高的页面指向页面A,则页面A越重要。
利用以上两个假设,PageRank算法刚开始赋予每个网页相同的重要性得分,通过迭代递归计算来更新每个页面节点的PageRank得分,直到得分稳定为止。 PageRank计算得出的结果是网页的重要性评价,这和用户输入的查询是没有任何关系的,即算法是主题无关的。假设有一个搜索引擎,其相似度计算函数不考虑内容相似因素,完全采用PageRank来进行排序,那么这个搜索引擎的表现是什么样子的呢?这个搜索引擎对于任意不同的查询请求,返回的结果都是相同的,即返回PageRank值最高的页面。

3. PageRank算法原理

PageRank的计算充分利用了两个假设:数量假设和质量假设。步骤如下:
1)在初始阶段:网页通过链接关系构建起Web图,每个页面设置相同的PageRank值,通过若干轮的计算,会得到每个页面所获得的最终PageRank值。随着每一轮的计算进行,网页当前的PageRank值会不断得到更新。

2)在一轮中更新页面PageRank得分的计算方法:在一轮更新页面PageRank得分的计算中,每个页面将其当前的PageRank值平均分配到本页面包含的出链上,这样每个链接即获得了相应的权值。而每个页面将所有指向本页面的入链所传入的权值求和,即可得到新的PageRank得分。当每个页面都获得了更新后的PageRank值,就完成了一轮PageRank计算。

3.2 基本思想:

如果网页T存在一个指向网页A的连接,则表明T的所有者认为A比较重要,从而把T的一部分重要性得分赋予A。这个重要性得分值为:PR(T)/L(T)

  其中PR(T)为T的PageRank值,L(T)为T的出链数

则A的PageRank值为一系列类似于T的页面重要性得分值的累加。

即一个页面的得票数由所有链向它的页面的重要性来决定,到一个页面的超链接相当于对该页投一票。一个页面的PageRank是由所有链向它的页面(链入页面)的重要性经过递归算法得到的。一个有较多链入的页面会有较高的等级,相反如果一个页面没有任何链入页面,那么它没有等级。

3.3 PageRank简单计算:

假设一个由只有4个页面组成的集合:A,B,C和D。如果所有页面都链向A,那么A的PR(PageRank)值将是B,C及D的和。

继续假设B也有链接到C,并且D也有链接到包括A的3个页面。一个页面不能投票2次。所以B给每个页面半票。以同样的逻辑,D投出的票只有三分之一算到了A的PageRank上。

换句话说,根据链出总数平分一个页面的PR值。

例子:

图1 所示的例子来说明PageRank的具体计算过程。

3.4 修正PageRank计算公式:

由于存在一些出链为0,也就是那些不链接任何其他网页的网, 也称为孤立网页,使得很多网页能被访问到。因此需要对 PageRank公式进行修正,即在简单公式的基础上增加了阻尼系数(damping factor)q, q一般取值q=0.85。

其意义是,在任意时刻,用户到达某页面后并继续向后浏览的概率。1- q= 0.15就是用户停止点击,随机跳到新URL的概率)的算法被用到了所有页面上,估算页面可能被上网者放入书签的概率。

最后,即所有这些被换算为一个百分比再乘上一个系数q。由于下面的算法,没有页面的PageRank会是0。所以,Google通过数学系统给了每个页面一个最小值。

这个公式就是.S Brin 和 L. Page 在《The Anatomy of a Large- scale Hypertextual Web Search Engine Computer Networks and ISDN Systems 》定义的公式。

所以一个页面的PageRank是由其他页面的PageRank计算得到。Google不断的重复计算每个页面的PageRank。如果给每个页面一个随机PageRank值(非0),那么经过不断的重复计算,这些页面的PR值会趋向于正常和稳定。这就是搜索引擎使用它的原因。

4. PageRank幂法计算(线性代数应用)

4.1 完整公式:

关于这节内容,可以查阅:谷歌背后的数学

首先求完整的公式:

Arvind Arasu 在《Junghoo Cho Hector Garcia - Molina, Andreas Paepcke, Sriram Raghavan. Searching the Web》 更加准确的表达为:

是被研究的页面,链入页面的数量,链出页面的数量,而N是所有页面的数量。

PageRank值是一个特殊矩阵中的特征向量。这个特征向量为:

R是如下等式的一个解:

如果网页i有指向网页j的一个链接,则

否则=0。

4.2 使用幂法求PageRank

那我们PageRank 公式可以转换为求解的值,

其中矩阵为 A =q× P + ( 1 一 q) * /N 。 P 为概率转移矩阵,为 n 维的全 1 行.则=

幂法计算过程如下:
X 设任意一个初始向量,即设置初始每个网页的PageRank值均。一般为1.

R = AX;

while (1 )(

if( lX -R I <) { //如果最后两次的结果近似或者相同,返回R

return R;

} else {

X =R;

R = AX;

}

}

4.3 求解步骤:

一、 P概率转移矩阵的计算过程:

先建立一个网页间的链接关系的模型,即我们需要合适的数据结构表示页面间的连接关系。

1) 首先我们使用图的形式来表述网页之间关系:

现在假设只有四张网页集合:A、B、C,其抽象结构如下图1:

图1网页间的链接关系

显然这个图是强连通的(从任一节点出发都可以到达另外任何一个节点)。

2)我们用矩阵表示连通图:

用邻接矩阵P表示这个图中顶点关系 ,如果顶(页面)i向顶点(页面)j有链接情况 ,则pij = 1 ,否则pij = 0 。如图2所示。如果网页文件总数为N, 那么这个网页链接矩阵就是一个N x N 的矩 阵 。

3)网页链接概率矩阵

然后将每一行除以该行非零数字之和,即(每行非0数之和就是链接网个数)则得到新矩阵P’,如图3所示。 这个矩阵记录了 每个网页跳转到其他网页的概率,即其中i行j列的值表示用户从页面i 转到页面j的概率。图1 中A页面链向B、C,所以一个用户从A跳转到B、C的概率各为1/2。

4)概率转移矩阵P

采用P’ 的转置矩阵进行计算,也就是上面提到的概率转移矩阵P 。 如图4所示:

图2 网页链接矩阵: 图3 网页链接概率矩阵:

图4 P’ 的转置矩阵

二、 A矩阵计算过程。

1)P概率转移矩阵:

2)/N 为:

3)A矩阵为:q× P + ( 1 一 q) * /N = 0.85 × P+ 0.15* /N

初始每个网页的PageRank值均为1 , 即X~t = ( 1 , 1 , 1 ) 。

三、循环迭代计算PageRank的过程

第一步:

因为X 与R的差别较大。 继续迭代。

第二步:

继续迭代这个过程...

直到最后两次的结果近似或者相同,即R最终收敛,R 约等于X,此时计算停止。最终的R 就是各个页面的 PageRank 值。

用幂法计算PageRank 值总是收敛的,即计算的次数是有限的。

Larry Page和Sergey Brin 两人从理论上证明了不论初始值如何选取,这种算法都保证了网页排名的估计值能收敛到他们的真实值。

由于互联网上网页的数量是巨大的,上面提到的二维矩阵从理论上讲有网页数目平方之多个元素。如果我们假定有十亿个网页,那么这个矩阵 就有一百亿亿个元素。这样大的矩阵相乘,计算量是非常大的。Larry Page和Sergey Brin两人利用稀疏矩阵计算的技巧,大大的简化了计算量。

5. PageRank算法优缺点

优点:

是一个与查询无关的静态算法,所有网页的PageRank值通过离线计算获得;有效减少在线查询时的计算量,极大降低了查询响应时间。

缺点:

1)人们的查询具有主题特征,PageRank忽略了主题相关性,导致结果的相关性和主题性降低

2)旧的页面等级会比新页面高。因为即使是非常好的新页面也不会有很多上游链接,除非它是某个站点的子站点。

参考文献:

维基百科http://en.wikipedia.org/wiki/Page_rank

PageRank算法的分析及实现

《这就是搜索引擎:核心技术详解》

PageRank算法相关推荐

  1. hadoop上的pageRank算法

    简单的pageRank实现参考:http://wlh0706-163-com.iteye.com/blog/1397694 较为复杂的PR值计算以及在hadoop上的实现:http://deathsp ...

  2. [转]PageRank算法

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

  3. 张洋:浅析PageRank算法

    本文引自http://blog.jobbole.com/23286/ 很早就对Google的PageRank算法很感兴趣,但一直没有深究,只有个轮廓性的概念.前几天趁团队outing的机会,在动车上看 ...

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

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

  5. 数据挖掘十大经典算法之——PageRank 算法

    数据挖掘十大经典算法系列,点击链接直接跳转: 数据挖掘简介及十大经典算法(大纲索引) 1. 数据挖掘十大经典算法之--C4.5 算法 2. 数据挖掘十大经典算法之--K-Means 算法 3. 数据挖 ...

  6. PageRank算法并行实现

    算法为王系列文章,涵盖了计算机算法,数据挖掘(机器学习)算法,统计算法,金融算法等的多种跨学科算法组合.在大数据时代的背景下,算法已经成为了金字塔顶的明星.一个好的算法可以创造一个伟大帝国,就像Goo ...

  7. pagerank算法实现matlab,Matlab 入门及PageRank算法求解.ppt

    Matlab 入门及PageRank算法求解 矩阵运算 + 矩阵加 - 矩阵减 * 矩阵乘 / 矩阵左除 \ 矩阵右除 ^ 矩阵幂 维数相同才能加减:方 阵才能求幂. 注意左乘,右乘. a\b?求a* ...

  8. 复现经典:《统计学习方法》第21章 PageRank算法

    第21章 PageRank算法 本文是李航老师的<统计学习方法>一书的代码复现.作者:黄海广 备注:代码都可以在github中下载.我将陆续将代码发布在公众号"机器学习初学者&q ...

  9. 【白话机器学习】算法理论+实战之PageRank算法

    1. 写在前面 如果想从事数据挖掘或者机器学习的工作,掌握常用的机器学习算法是非常有必要的,常见的机器学习算法: 监督学习算法:逻辑回归,线性回归,决策树,朴素贝叶斯,K近邻,支持向量机,集成算法Ad ...

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

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

最新文章

  1. 监控利器之 Prometheus
  2. ITK:直方图创建和Bin访问
  3. java集合set的使用_浅析Java中的set集合类型及其接口的用法
  4. H5的Websocket基本使用
  5. 04 java 基础:数据类型
  6. PHP之MVC项目实战
  7. 计算机视觉目标检测算法总结1——简介
  8. python selenium实现百度搜索
  9. 豆瓣评分 9.7,等了好久的《操作系统导论》Operating Systems 终于来了
  10. expec不管异常 try_java – 如何使用ExpectedException规则在一个测试中测试多个异常?...
  11. python中figure函数_Python figure参数及subplot子图绘制代码
  12. Weakly Supervised Instance Segmentation using Class Peak Response论文复现以及遇到的问题
  13. FCW前车碰撞预警的两个重要指标——THW、TTC
  14. 自建网站对接微信公众号
  15. PC端浏览器兼容性问题解决方案
  16. Python学习资料收集
  17. 距离你解决小样本/少数据难题,只差这篇文章
  18. 微信转账怎么退回?别傻傻等待24小时自动退还了!
  19. abaqus python二次开发攻略.pdf 百度云_ABAQUS Python二次开发攻略 CAE分析大系
  20. 2022-2028年中国科幻行业竞争现状及投资策略研究报告

热门文章

  1. 十大经典Java手机游戏 Top Ten Best Java Mobile Games
  2. 地下管线探测仪的原理与性能——TFN T-6000地下管线探测仪
  3. 【第十一章】提炼子类/超类/接口/类
  4. [论文阅读] (12)英文论文引言introduction如何撰写及精句摘抄——以入侵检测系统(IDS)为例
  5. 3D脚本 maxscript入门教程
  6. 四应变片悬臂梁 计算要点
  7. ||、、!的使用与区别
  8. 5ecsgo启动失败2错误代码2_华纳确定正式启动明日边缘2电影项目
  9. 受贸易战影响,H1B签证开始大量RFE了?
  10. 关于这些年做的 图片上传下载做的处理总结(including根据图片url上传文件)