在探讨信息检索的世界中,Google无疑是最大的搜索引擎,而其背后的算法——Google PageRank算法,则是驱动搜索结果的核心。设想在一个没有搜索引擎的世界里创建Google搜索,会编写哪些基本规则?如果回答是使用词频(Term Frequency)或TF-IDF框架,那么请考虑以下情况:
用户输入查询“哈佛商学院”。他期望的第一个链接是“http://www.harvard.edu/”。但是,算法可能会尝试找出包含“哈佛”这个词最多的页面,因为“商业”和“学院”可能是常见词。现在,哈佛自己的网站上可能没有多次重复“哈佛”这个关键词。然而,像商学院顾问网站或商学院文章可能会多次使用这个关键词。这导致这些网站排名高于实际的商学院网站。多亏了GooglePageRank算法,它不仅考虑关键词的频率,还考虑链接到一个网站的质量与数量。
但是,像Google这样的搜索引擎今天是否面临这个挑战呢?显然不是!这是因为它们借助了PageRank算法。在本文中,将讨论PageRank的概念。在下一篇文章中,将通过利用这个算法来找到R中最重要的包。
想象一个只有4个网页的网络,这些网页相互链接。下面的每个框代表一个网页。用黑色斜体字写的是页面之间的链接。例如,在“Tavish”网页上,它有3个出站链接:指向其他三个网页。现在,让为这个生态系统画一个更简单的有向图。
公式的第一步是构建一个方向矩阵。这个矩阵将每个单元格作为流出的比例。例如,Tavish(TS)有3个出站链接,这使得每个比例为1/3。
现在想象一下,如果有一个机器人将跟随所有出站链接,这个机器人将在每个页面上花费的总时间是多少。这可以数学上分解为以下方程:
A * X = X
现在,想象一个场景,只有2个网页:A和B。A有一个链接到B,但B没有外部链接。在这种情况下,如果尝试解决矩阵,将得到一个零矩阵。这看起来不合理,因为B看起来比A更重要。但是,算法仍然给予两者相同的重视。为了解决这个问题,引入了一个新的概念——传送。在这些页面上包括一个常数概率alpha。这是为了补偿用户在没有链接的情况下从一个网页传送到另一个网页的实例。因此,方程被修改为以下方程:
(1-alpha) * A * X + alpha * b = X
这里,b是一个常数单位列矩阵。Alpha是传送的比例。Alpha最常见的值是0.15(但可能因不同情况而异)。
以下是PageRank算法的一些其他用途: