PageRank算法和谷歌搜索讲解
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算法和谷歌搜索讲解的更多相关文章
- 谷歌PageRank算法
1. 从Google网页排序到PageRank算法 (1)谷歌网页怎么排序? 先对搜索关键词进行分词,如“技术社区”分词为“技术”和“社区”: 根据建立的倒排索引返回同时包含分词后结果的网页: 将返回 ...
- 谷歌pagerank算法简介
在这篇博客中我们讨论一下谷歌pagerank算法.这是参考的原博客连接:http://blog.jobbole.com/71431/ PageRank的Page可是认为是网页,表示网页排名,也可以认为 ...
- [转]PageRank算法
原文引自: 原文引自: http://blog.csdn.net/hguisu/article/details/7996185 感谢 1. PageRank算法概述 PageRank,即网页排名,又称 ...
- PageRank算法--从原理到实现
本文将介绍PageRank算法的相关内容,具体如下: 1.算法来源 2.算法原理 3.算法证明 4.PR值计算方法 4.1 幂迭代法 4.2 特征值法 4.3 代数法 5.算法实现 5.1 基于迭代法 ...
- Machine Learning:PageRank算法
1. PageRank算法概述 PageRank,即网页排名,又称网页级别.Google左側排名或佩奇排名. 在谷歌主导互联网搜索之前, 多数搜索引擎採用的排序方法, 是以被搜索词语在 ...
- 97、PageRank算法学习
最近由于.......你懂得,需要一些搜索方面的知识,于是乎我重新复习了一下上半年读的那本书<数学之美>Dr吴军老师写的. 感觉读完这种书还是写一下比较好,因为将来说不定就会忘记了. 接下 ...
- 基于Neo4j的个性化Pagerank算法文章推荐系统实践
新版的Neo4j图形算法库(algo)中增加了个性化Pagerank的支持,我一直想找个有意思的应用来验证一下此算法效果.最近我看Peter Lofgren的一篇论文<高效个性化Pagerank ...
- 【原创】机器学习之PageRank算法应用与C#实现(2)球队排名应用与C#代码
在上一篇文章:机器学习之PageRank算法应用与C#实现(1)算法介绍 中,对PageRank算法的原理和过程进行了详细的介绍,并通过一个很简单的例子对过程进行了讲解.从上一篇文章可以很快的了解Pa ...
- 【原创】机器学习之PageRank算法应用与C#实现(1)算法介绍
考虑到知识的复杂性,连续性,将本算法及应用分为3篇文章,请关注,将在本月逐步发表. 1.机器学习之PageRank算法应用与C#实现(1)算法介绍 2.机器学习之PageRank算法应用与C#实现(2 ...
随机推荐
- log4js 2.X版本配置详解
const log4js = require('log4js'); log4js.configure({ appenders: { cheese: { type: 'file', filename: ...
- orika core工具对实体(Bean)进行深度拷贝
1. 在pom.xml中添加orika core依赖: <!-- https://mvnrepository.com/artifact/ma.glasnost.orika/orika-core ...
- day19常用模块2
常用模块21 shelve模块 也是一种序列化方式 使用方法 1.open sl = shelve.open("shelvetest.txt") ...
- HTMLTestRunner不生成报告
使用HTMLTestRunner想生成测试报告,尝试了很多次了,就是无法生成,在百度搜索发现是快捷键问题 工具:Pycharm Ctrl+Shift+F10运行不会生成脚本 Alt+Shift+F10 ...
- Nginx的安装(CentOS 7环境)
安装所需环境 Nginx 是 C语言 开发,建议在 Linux 上运行,当然,也可以安装 Windows 版本,本篇则使用 CentOS 7 作为安装环境. 一. gcc 安装安装 nginx 需要先 ...
- 'git status'不显示untracked files
git status -uno git status --untracked-files=no
- Oracle生成关闭外键的SQL语句
select 'alter table ' || t.table_name || ' disable constraint ' || t.constraint_name || ';' from DBA ...
- Centos7 搭建Gitlab服务器并配置项目全过程
https://blog.csdn.net/Abysscarry/article/details/79402695 gitlab与jenkins整合搭建 https://blog.csdn. ...
- 利用strstr和sscanf解析GPS信息
比如说我们要做一个GPS导航的项目,需要读取GPS模块以ASCII码的形式发送过来的数据,然后对这些数据进行处理,提取我们需要的信息.这就涉及到很多操作字符串的问题.下面就以此为例,利用strstr函 ...
- react-native-picker 实现省市区 时间日期组件
github示例以及详细参数:https://github.com/beefe/react-native-picker 先 安装 link npm install react-native-picke ...