PageRank算法和谷歌搜索讲解

吴裕雄

PageRank算法实际上就是Google使用它来计算每个网页价值的算法。 Google每次的搜索结果都有成百上千万甚至上亿个相关的查询网页链接。如果将所有的查询结果不加区分,就立即显示给客户看的话,那么用户很有可能看到的就是一些没有多大用的东西,那么Google也就肯定会遭到淘汰的。

那么如何向用户显示对他们有用的网页链接呢?Google想出了一个办法——就是给那成百上千万个网页计算出一个值。这个值呢就叫做PageRank(页面价值得分)。通过计算这个值呢,可以区分出每个网页价值有多高。下面来认识一下谷歌网页快速响应的问题。

它是如何做到的呢?它其实是通过:倒排索引 这个技术来实现的。它通过全文进行索引,但它对全文进行索引的keyworld,不是文章的全体,而是把文章进行一个分词。举个例子,输入:我是一名学生。进行搜索,它首先将 我 作为一个词,或者把 我是 作为一个词,又或者把 一名 作为一个词,把 学 生 作为一个或两个词,具体怎么分就看谷歌具体的算法了,但谷歌作为一个商业公司,它当然不会把源代码公布了。将所有的词放到一张表中,每个词都对应着一个倒排列表。倒排列表是从查询到的一堆不加区分的网页链接中得来,它是键值对形式的,如 单词 我 这一行 倒排列表中有(3,5),就表示:我 这个词出现在标识号为3的网页,它(我)的具体位置在偏移量为5这个位置。当然它是很长很多的:(3,5)(7,3)....通过索引来查询这些词,是很快的,因为分词的总量不是很多。搜索到词后,在查找那个词的倒排列表,就可以很快找到相关的网页了。顺便说一下:Google它是没有使用任何的数据库的,它的存储是基于系统的文件分布式存储。那Google怎么才能够把高价值的网页显示出给用户呢?Google它是通过PageRank(页面价值得分)来实现的。

Google通过爬虫技术来抓取网页,它所能够知道的信息只能是它获取到的,像某一个站点的点击数这些信息,它是无法知道的,因此不能使用这些看似有用的信息来做判断。那Google它怎么利用它抓取到的信息属性来判断页面的价值的呢?它是通过:网页链接数来进行做运算,通过计算得出的。在抓取到的页面中,如果有一个页面被其它许多的页面指向的话,那么这个页面很有可能就是一个很有价值的页面。反过来,如果一个页面几乎没有一个页面指向它,那么这个页面很有可能就不是一个很重要的页面。所以我们就可以通过一个页面的链接数,来判断它的价值数。但我们不能忽视一个这样的问题:如果某一个页面被某一个国家政府或者机关访问了的话,那么即使它的链接数很少,但它被某个国家或机关关注过的话,那么它也很有可能是一个重要的网页。所以这里有个链接的权值该如何分配的问题。下面来看一下:Google它是怎么来建立一个数学模型来进行计算PageRank的。

假如有四个网页,编号为 1 2 3 4,它们的链接是这样子的:1-->2,1-->4,2-->3,2-->4,3-->4,4-->3,4-->2;那么可以通过一个4*4的矩阵来将这些指向关系表示出了,这个矩阵就是原始矩阵。用S来表示:

怎么得到的,就不做具体说明了。实在看不懂,再问我吧。令谷歌矩阵G=S*a+(1-a)*U*1/n

a取值范围(0,1),它的值主要通过大量的数据运算和经验得出的,由谷歌工程师得出,作用是来调整PageRank这个值的,n是网页数,例子的话,n=4.U是一个全部元素都是1的矩阵。接下来要找到谷歌矩阵G的特征向量q,使得q=G*q,这个特征向量q,它的第一个元素就是网页1的PageRank,它的第二个元素就是网页2的PageRank,以此类推....

那怎么求个q值呢?可以通过迭代的方式求得,先求得q1,再求q2...一直求下去,肯定是可以取得最终的q值的,这个在数学上已经被证明了的。也可以求到一个qn,把这个qn当成是q的一个近似解。PageRank从数学角度来说,就是这么简单,但如果要用计算机来具体算的时候,是根本没有办法算的,因为谷歌一次查询就有成百上千亿个网页,那它的原始矩阵S就是一个成百上千亿乘以成百上千亿,这样的矩阵就算是超级计算机也是处理不了的,而且每天谷歌查询数都是过亿的,那么这些就更多了。谷歌它是通过分布式来计算的,也就是Map-Reduce 和 DFS ,Hadoop也是基于谷歌这种分布式处理数据而被创造出来的。

它主要是将一个个网页分配到一个个节点(服务器或PC)(可以有成百上万个)来进行本地的数据分析和处理,每个节点独立进行计算,最后只是返回一个结果。(具体请参考hadoop Map-Reduce 和HDFS),就这样就可以计算出那个特征向量q了。

PageRank算法和谷歌搜索讲解的更多相关文章

  1. 谷歌PageRank算法

    1. 从Google网页排序到PageRank算法 (1)谷歌网页怎么排序? 先对搜索关键词进行分词,如“技术社区”分词为“技术”和“社区”: 根据建立的倒排索引返回同时包含分词后结果的网页: 将返回 ...

  2. 谷歌pagerank算法简介

    在这篇博客中我们讨论一下谷歌pagerank算法.这是参考的原博客连接:http://blog.jobbole.com/71431/ PageRank的Page可是认为是网页,表示网页排名,也可以认为 ...

  3. [转]PageRank算法

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

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

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

  5. Machine Learning:PageRank算法

    1. PageRank算法概述 PageRank,即网页排名,又称网页级别.Google左側排名或佩奇排名.         在谷歌主导互联网搜索之前, 多数搜索引擎採用的排序方法, 是以被搜索词语在 ...

  6. 97、PageRank算法学习

    最近由于.......你懂得,需要一些搜索方面的知识,于是乎我重新复习了一下上半年读的那本书<数学之美>Dr吴军老师写的. 感觉读完这种书还是写一下比较好,因为将来说不定就会忘记了. 接下 ...

  7. 基于Neo4j的个性化Pagerank算法文章推荐系统实践

    新版的Neo4j图形算法库(algo)中增加了个性化Pagerank的支持,我一直想找个有意思的应用来验证一下此算法效果.最近我看Peter Lofgren的一篇论文<高效个性化Pagerank ...

  8. 【原创】机器学习之PageRank算法应用与C#实现(2)球队排名应用与C#代码

    在上一篇文章:机器学习之PageRank算法应用与C#实现(1)算法介绍 中,对PageRank算法的原理和过程进行了详细的介绍,并通过一个很简单的例子对过程进行了讲解.从上一篇文章可以很快的了解Pa ...

  9. 【原创】机器学习之PageRank算法应用与C#实现(1)算法介绍

    考虑到知识的复杂性,连续性,将本算法及应用分为3篇文章,请关注,将在本月逐步发表. 1.机器学习之PageRank算法应用与C#实现(1)算法介绍 2.机器学习之PageRank算法应用与C#实现(2 ...

随机推荐

  1. 18 LVM逻辑卷管理

    根据上一节的内容,我们知道md这个内核模块可以用来做软RAID的管理.同时RAID实现了两个功能:1.提高了磁盘的读写能力:2.对于数据进行了冗余备份: 但是,如果是管理员手动误删的数据,则一样无法找 ...

  2. REST framwork之认证,权限与频率

    认证组件 局部视图认证 在app01.service.auth.py: class Authentication(BaseAuthentication): def authenticate(self, ...

  3. django之前-----web应用与框架

    一web应用 web应用程序是一种可以通过Web访问的应用程序,程序的最大好处是用户很容易访问应用程序,用户只需要有浏览器即可,不需要再安装其他软件.应用程序有两种模式C/S.B/S. 下面来看一个简 ...

  4. xmlhttp.readyState的值及解释:

    xmlhttp.readyState的值及解释: 0:请求未初始化(还没有调用 open()). 1:请求已经建立,但是还没有发送(还没有调用 send()). 2:请求已发送,正在处理中(通常现在可 ...

  5. SAP work process Memory allocate

    Memory allocation sequence to dialog work processes in SAP What is the memory allocation sequence to ...

  6. 7.纯 CSS 创作一个 3D 文字跑马灯特效

    原文地址:https://segmentfault.com/a/1190000014663038 感想:简单的从右到左动画 HTML代码: <div class="box"& ...

  7. HTTP Status 400 - description The request sent by the client was syntactically incorrect.

    HTTP Status 400 - type Status report message description The request sent by the client was syntacti ...

  8. CentOS 7 救援模式启用网卡及重新获取IP地址

    重新自动获取IP地址命令: dhclient 启用网卡命令 ifconfig ens33 up https://blog.csdn.net/hongmin118/article/details/782 ...

  9. jQuery 移除事件与模拟事件

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...

  10. API / DOM

    浏览器特性 当控制台报错时,IE9会停止执行JS.当打开控制台时会执行后续JS ------------------------------------------------------------ ...