PageRank是Google搜索算法中最为基础而核心的一种,通过将网络看做一个整体、网页间链接即投票等思想构建出了最初的排名机制,并使得Google击败当时的Yahoo搜索,成就了今天的地位。PageRank的实现包含了很多数学方法应用,要真正理解还是有难度的,这篇博客中,我只基于自己的理解写出一些比较浅显的概念以及分析。
首先来说一下PR出现的原因吧~自上世纪90年代起,网络开始飞速发展,大量的资源共享于互联网,却没有任何支持搜索的工具,使得很多优秀资源被埋没在庞大的数据中。于是,1993年Yahoo诞生了,它率先发布了全网范围内的搜索工具,具体实现是通过将每一个找到的网站按照所属分类进行划分组织,建立起一个简洁的、目录级别查询的数据库,同时也支持根据存在的“关键字”搜索到网站。紧接着,一些其他的搜索引擎也相继推出了供用户使用的搜索工具,比如:Altavistar,Excite,Lycos等,其中大多数都是根据元标识中的关键词来识别网站的相关性。
这样看来问题似乎得到了解决,最初运行时也确实如此,用户如愿以偿的得到了内容相关的结果,不过经验告诉人们,一个问题的解决往往伴随着另外一个的出现,此时的运营商发现有一些垃圾网站通过在页面中大量的添加关键词,巧妙的得到搜索页面结果上较高的位置,可实际展现在用户面前的内容槽糕透顶。一段时间内,“关键字”的模式受到了极大的冲击,搜索引擎商们开始寻找新的模式维护搜索结果的有效性。
此时,Google的两位创始人Sergey Brin及Larry Page,看到了传统搜索太易被刻意安排的关键词污染这一问题,设计了一种全新的搜索引擎算法—PageRank(其中“Page”一词并不是所解释的网页排名,而是来自于创始人拉里佩奇)。他们将整个互联网看做一个整体,认为网络的本质就是超链接,页面之间的关联比单独内容或者标题的相关性更为重要,PR算法中的页面等级值的计量则类似于比赛中的投票制度,每个到页面的链接都是对该页面的一次投票,被链接的越多,就意味着被其他网站投票越多,该页面的PR值理论上也会相应上升。
接下来我们细化一下PR算法中的设计要点:
1)每一个到页面的链接即是为本页面投一次票。这种思想符合“链接流行度”的概念—衡量有多少人愿意将自己的网站与你的挂钩,一般认为,被多次链接的网页必定是受到欢迎的。而一个页面的PageRank是由所有链向它的页面(“链入页面”)的重要性(通过PR值体现)经过递归算法得到的。一个有较多链入的页面会有较高的等级,相反如果一个页面没有任何链入页面,那么它没有等级。
(如上图,页面1的PR值由链接A、B、C决定,页面1只有一个向外的链接,所以自身的PR又通过链接D全部传入页面2,2的PR值由D与其他链接一起构成,再向自己的对外连接传出2的PR )
2)并不是所有的链入占本页面PR都是相同的。PR设计时认为重要网页的链出更具说服力,一般情况下,这样一个链接对于页面PR值的贡献可能要比十几甚至几十个其他站点的链接更大(较为特殊的情况在之后进行数值分析时给出)。实际中,Google在计算排名值时对一些门户网络目录尤为器重,比如DMOZ,Yahoo,Looksmart,特别是对DMOZ这样一个全球最大的目录社区(DMOZ是一个著名的开放式分类目录(Open Directionary Project),由来自于全球各地的志愿者共同建设和维护),如果你的网站为ODP所收录,就可以显著提升页面等级。
3)PR算法并不完全基于外部链接数量。1中提到了页面的链入数量会影响页面等级,这就导致了在一段时间内,在整个的SEO社区(引用解释:汉译为搜索引擎优化,是较为流行的一种网络营销方式,主要目的是增加特定关键字的曝光率以增加网站的能见度,进而增加销售的机会),争夺、交换甚至销售链接变得异常火爆,以至于Google不得不修改自身的计算规则。这里涉及到的还有一个称作“链接工厂”(Link Farm)的概念——由大量网页交叉链接而构成的一个网络系统。这些网页可能来自多个域甚至不同服务器。一个站点加入后,它可得到来自该系统中所有网页的链接,作为交换,它需要“奉献”自己的对外链接,籍此方法来提升链接得分。Google作出调整后,曾明确提出不要加入链接工厂,否则会被降权或者直接K掉,而那些来自缺乏实质性内容的网站的链接将不会被计入PageRank;同样,哪怕从PageRank较高的页面得到了链接,但是内容不相关,也不会为本站点提供PageRank。
还有一点很重要,如果你得到了一个PR为7的站点的链接,但是它已经有了100多个外部链接,那么你能够分得的PR值也就不多了,PR算法中要求一个站点的PR值要平均的分配给它所拥有的外部链接,相反,如果有一个PR值为3的站点对你的网页进行链接,而且它只拥有你一个链接,那么你所得到的就是全部的PR值。当然,这只是相对概念,Google也可能在实际的操作中分给那些知名网站较大的取值权重。
4)PR是等级制,分为0~10级。这里值得一提的是,PageRank中的级别并不是线性的,而是类似于指数级别。也就是说,等级为7的网页并不只是比等级为6的好一倍,有推测说如果根据给定的阻尼因子d=0.85(下文会有解释),那么实际网页级别的对数可能为显示的级别,且对数的基数可能在6~7之间,所以网页等级间的差别可能要比我们所想的要大的多,但是Google并不提供带有小数位的级别,因此有时无法看出同级别网站的对比。一般情况,PR值能够达到4就算是不错的网站了,7~10表明网站非常受欢迎,而Google将自己的PR值定为10(我在查询时看到人人的PR为7,真的是挺火啊~)。目前Google的PageRank值更新周期大约为2.5~3个月。
5)随机冲浪者模型。这个模型是PR的前提假设,网络中对于这个模型的解释有很多种,我的理解比较简单,就是一个浏览者在随机的浏览网页,他会根据当前页面的对外链接一直进行浏览,一直到某一个页面没有了对外的链接,那么这个浏览者随机选择另外一个网页作为新起点,这里进行随机选择的概率被称作阻尼系数,在PR计算中这个值取0.85,可以说浏览者有85%的可能性随机选择一个新站点继续浏览,也可能就此结束。阻尼系数的提出同时解决了一个问题,如下图的结构:
这是模拟现实网络链接的一部分,仔细观察我们会发现,虽然有外部链接指向这一部分,但是它并没有出口,而我们看到PR值的计算都是通过上一页面将本身的PR值分配给链向页面实现的,所以如果不进行处理会导致这一局部区域内的网页之间相互累计分配,使 PR值出现虚高的情况(假设页面1 接收到的外部链接的PR是1,页面2接收到的两个PR也为1,而起初页面1、2、3、4的PR都是从0开始记录,那么在进行计算时就会发现PR4=2—>PR3=2—>PR1=1(外部)+1(3赋予的)=2—>PR2=2(外部)+2(1的)+1(3的)=5—>以此类推)。因此,Page与Brin设置了阻尼因子来消除这一情况在实际运算中的影响,在接下来的公式中我们会看到,当运算到达上百次后,这种累计因素会被逐渐消除,最终趋于稳定。
6)PR值的计算无矛盾,也完全不存在人工干预。通过定义可以看出来,PR中网页级别的计算需要用链接数量与上一级别网页的PR共同决定,一种PR需要PR来计算的模式就如同先有鸡还是先有蛋的问题,逻辑上好像是矛盾的。两位高明的算法创立者通过数学建模的方式,用二维矩阵模拟网络中的链接,先假设网络中所有网页的排名是相同的,根据这个初始值算出第一次的迭代排名,再根据第一次的迭代排名算出第二次的迭代排名,以此类推。在99年公布PageRank核心思想时Larry Page曾说过这种模型下迭代计算100次就可以得出比较精确的结果,后来又有一份数据表明,当网页数量达到3.2亿,Google的计算次数达到了522次~同时,他们两人从理论上证明了不论初始值如何选取,这种算法都保证了网页排名的估计值能收敛到他们的真实值,且这种算法是完全没有任何人工干预的。
7)实际中的应用。理论上的问题可以通过数学建模的方式解决,但是实际中往往存在着更大的挑战。作为二维矩阵相乘实现的计算,不得不考虑当网页数量急剧增长的时带给计算量的压力。我在查阅资料时看到,假定当前网络存在10亿网页,那么就构成了一个10亿*10亿的矩阵,当两个同型矩阵相乘就是100亿亿的级别,这样的计算量对于存储空间以及计算速度无疑是一个巨大的挑战,资料中表明Larry和Brin利用稀疏矩阵(稀疏矩阵是指含有大量0元素的矩阵,在计算中,0元素占用了空间与时间却未进行有效操作,因此在MATLAB或者Octave中往往根据实例建立稀疏矩阵,让其只对非0元素进行操作)的技巧大大简化了实际的工作量,完成了排名算法。而随着技术的发展,Google引入了并行计算的概念,将计算任务分布于多台服务器,进一步减少了所用的时间。当然,仅仅通过PR值设定页面出现的顺序也是不可靠的,比如用户要搜索某一首歌曲,页面弹出后全部都是一些权威的网站链接(比如Google~),这些页面包含的内容信息确实优质,却不是用户真正需要的,所以PR算法的使用也是和其他方法共同作用决定搜索结果的,它只是Google算法中比较基础而核心的一种。
8)PR的优缺点。查看资料时,我看到很多种网友提出的优化PageRank的思路,但多数都处于理论阶段,并未经过过验证,因此在这里我只将它们大致思想概括出来,不做详细的讲解,大家有兴趣可以自行查阅。
优点可以概括为以下几点:将查询与排序相分离,减少了人为的干扰因素,使查询结果更为客观真实;所有网页的PageRank值均通过离线计算获得,降低了在线查询时的计算量,极大降低了查询时的响应时间;建立了合理的数学模型,让实际的工作量得以简化。
缺点有:
(1) 人们的查询具有主题特征,PageRank忽略了主题相关性,导致结果的相关性和主题性降低,并针对该点提出了一个修正方案,其中心思想是离线计算一个PageRank集合,该集合中的每一个向量与某一主题相关,即计算某个页面关于不同主题的得分,包括主题相关的PageRank向量集合的计算和在线查询时主题的确定两个阶段。
(2) PageRank有很严重的对新网页的歧视,原因很好理解,除非作为某知名站点的子站点,否则一般新网页拥有的链接数量必然不多,尤其是知名网站,有网友觉得可以在计算过程中加入对于时间因素的考虑,比如计算时将网页建立时间与所拥有链接的比值按权重计入PR值。
(3) PageRank算法未考虑域的价值,在学术网页的评价中,这显然是一个缺陷。来自域edu、ac的网页通常比来自com、net的网页更具有学术性,而对于这类网页只有人工增加权重以弥补上述缺陷。
(4) 不同语言的网页的PageRank值不具有可比性,经过试验显示,中文网页的PageRank值远低于英文网页的PageRank,也就是说,同等质量的内容,中文网页的PageRank远低于英文网页。原因是多方面的,比如中文的传播与影响能力要比英文小,同时,部分的中文链接都是到站点主页,并不是资源所在处,使得一些内容很好的页面并没有被权威网站链接(对于这一点,我在测试百度首页的PR值时发现为0,但内部的资源页还是有值),还有一点就是在搜索某关键字时,可以发现中文网页的内容90%以上来自于博客(blog)网站或论坛,一些被评价为好的网页的内容多来自对国外文章的编译,而其他大量的网页内容仅几句话,这在很大程度上影响了PR值。
OK~概念的介绍到此结束,介于篇幅的原因,我将公式的讲解与此分开,会于之后在“浅析PageRank(公式篇)”介绍~
- 大小: 4.3 KB
- 大小: 4.8 KB
分享到:
相关推荐
PageRank基于一个简单的概念:网页的重要性由其链接的数量和质量决定。一个被许多其他重要网页链接的网页,其PageRank值会更高。PageRank的计算公式可以表示为: \[ PR(p) = \frac{1-d}{N} + d \sum_{q \in M(p)} \...
PageRank是Google创始人Larry Page提出的一种网页排名算法,它通过分析网页之间的链接关系来评估网页的重要性。这个算法在搜索引擎优化(SEO)和网络数据分析中扮演着关键角色。在这个Python实现中,我们将深入探讨...
本文将深入探讨PageRank算法的基本概念、加权PageRank的扩展以及Go语言实现的关键步骤。 **PageRank算法基础** 1. **链接权重分配**:PageRank的核心思想是,网页之间的链接可以视为投票,一个网页被其他网页链接...
在这个“南开大学大数据课程大作业一”中,学生被要求实现PageRank算法的一个分块版本,这涉及到大规模数据处理和分布式计算的概念。 PageRank的基本思想是衡量一个网页的重要性,通过分析网页之间的链接结构。每个...
这篇博士论文文档详细阐述了PageRank的理论基础和实现原理,由Google的创始人Larry Page和Sergey Brin提出。Java实现的PageRank查询代码则为我们提供了实际操作这一算法的实例。 PageRank的基本思想是,一个网页的...
此外,PageRank算法还考虑了**PageRank陷阱**和**权威性**两个重要概念。PageRank陷阱指的是具有大量入链但很少或没有出链的网页,它们会消耗PageRank值而无法有效地传递。权威性则表示某些网页因为获得很多高质量的...
1. **PageRank概念**: PageRank最初设计是用来解决早期搜索引擎仅依赖关键词出现次数进行排序的问题。它引入了链接名气的概念,认为一个页面被其他重要页面链接的次数越多,其自身的重要性就越高。 2. **PageRank...
PageRank算法是Google创始人拉里·...总的来说,PageRank算法是网络搜索引擎优化领域的一个重要概念,它利用网络的链接结构来评估网页的重要性。尽管存在一些局限性,但其思想仍被广泛应用于各种信息检索和推荐系统中。
PageRank是Google创始人Larry Page提出的一种网页排名算法,它通过计算网页之间的链接关系来评估网页的重要性,从而为搜索引擎提供一种衡量网页质量的方式。在Python中实现PageRank算法可以帮助我们理解其工作原理,...
无向图PageRank算法是Google创始人拉里·佩奇和谢尔盖·布林提出的一种网页排名技术,它在搜索引擎优化(SEO)和链接分析中起着重要作用。这个算法通过模拟随机浏览网络的行为来评估网页的重要性,使得重要的网页...
7. **PageRank的应用**:除了在搜索结果排序中使用外,PageRank的概念也被应用于学术领域,如论文引用分析,评价研究的重要性。 总的来说,PageRank算法通过链接分析和随机浏览模型,提供了一种评估网页重要性的...
本文旨在深入探讨PageRank算法的起源、概念、计算方法及其在现代搜索引擎中的应用。 ### PageRank算法的起源与发展 PageRank算法由Google的创始人拉里·佩奇(Larry Page)和谢尔盖·布林(Sergey Brin)在斯坦福...
PageRank算法是Google创始人拉里·佩奇和谢尔盖·布林提出的一种评估网页重要性的数学模型,它在搜索引擎优化(SEO)和链接分析中起着关键作用。PageRank算法的基本思想是:一个网页的重要性取决于其他网页链接到它...
Pagerank算法是Google创始人拉里·佩奇和谢尔盖·布林在1990年代末提出的一种网页排名算法,它通过分析网页之间的链接关系来评估网页的重要性,是搜索引擎优化(SEO)中的核心概念。在这个“pagerank算法模拟实现”...
`truncated-pagerank`是一种优化的PageRank算法,它在大规模网络数据处理中非常有用,尤其是在图论和搜索引擎优化领域。PageRank是Google最早使用的网页排名算法之一,用于评估网页在网络中的重要性。这个算法的基本...
总之,《Deeper Inside PageRank》是一篇详尽阐述 PageRank 算法及其相关研究的文章。通过深入探讨 PageRank 的各个方面,该文章不仅提供了对现有理论的理解,而且还指出了未来潜在的研究领域,包括如何处理大规模...
PageRank算法的基本思想是,每个网页的重要性由其链接到的网页的重要性决定,并且加入了“随机跳跃”(damping factor)的概念,以防止循环引用导致的无限循环。在Matlab中,这通常涉及到迭代计算,直到PageRank值...
下面将详细介绍PageRank算法的基本概念、计算流程以及如何使用C++进行实现。 PageRank算法的核心思想是:一个网页的PageRank值不仅取决于自身的质量,还受到链接到它的其他网页的影响。如果一个高PageRank值的网页...
**PageRank算法** PageRank是Google搜索引擎早期使用的核心算法之一,由Google的创始人拉里·佩奇(Larry Page)提出,因此得名“PageRank”。这个算法主要通过分析网页之间的链接关系来评估网页的重要性,为搜索...