今天Matrix Analysis课上老师布置了关于google公司搜索技术的阅读材料,也就是著名的PageRank算法,读过之后觉得很有意思,在这里尽量用通俗的语言分享给大家,希望对大家有所裨益。
这篇文章基本是从“The 25, 000, 000, 000 eigenvector: The linear algebra behind Google”[1] 翻译过来,有兴趣的或者我没有讲清楚的地方可以参考原文。
1. 简介
当Google在上世纪九十年代末期上线的时候,表现出来的优异的特质,相比于其他的搜索引擎,他总是能够将最相关最需要的网页放在搜索列表的前列,而这搜索魔法的背后,就是其PageRank算法在起作用。
通常一个搜索引擎需要做以下三件事:
1. 将网络上所有网页爬下来,这也就是通常所说的网络爬虫
2. 对所有爬下来的网页进行索引,以便更有效率的搜寻
3. 对数据库中的每个网页进行重要程度的评价,最重要的网页会在搜索结果中排列在前面
下面主要介绍第三部,虽然有其他算法进行网页重要性排序,但本文仅仅介绍PageRank算法。
2. How to rank pages
i. Basic idea
我们用重要程度得分(importance score)来表示一个网页的重要程度,自然地这个得分应该是一个非负数。如何打分的中心思想是,其他网页指向该网页的链接的数量,数量越多,我们就有理由相信这个网页越重要,重要性得分相应的就应该越高。形象的讲,网页的重要程度是依靠其他网页对其进行投票,而这选票就是其他网页指向该网页的链接的数量。
假设我们有n的网页,用k对