Pagerank 及其数学:需要解释

Posted

技术标签:

【中文标题】Pagerank 及其数学:需要解释【英文标题】:Pagerank and its mathematics: Explanation needed 【发布时间】:2010-11-29 21:55:00 【问题描述】:

我是一名学生,有兴趣开发一个搜索引擎来索引我所在国家/地区的网页。一段时间以来,我一直在研究要使用的算法,并且我认为 HITS 和 PageRank 是目前最好的。我决定使用 PageRank,因为它比 HITS 算法更稳定(或者我已经阅读过)。

我找到了无数与PageRank相关的文章和学术论文,但我的问题是我不理解这些论文中构成算法的大部分数学符号。具体来说,我不明白谷歌矩阵(不可约的随机矩阵)是如何计算的。

我的理解是基于这两篇文章:

http://online.redwoods.cc.ca.us/instruct/darnold/LAPROJ/fall2005/levicob/LinAlgPaperFinal2-Screen.pdf http://ilpubs.stanford.edu:8090/386/1/1999-31.pdf

有人可以用更少的数学符号提供一个基本的解释(例子会很好)吗?

提前致谢。

【问题讨论】:

为什么票数接近,这是一个关于算法的完全有效的问题? 确实如此。我希望我可以投票支持“不要关闭”。 如果您正在开发搜索引擎,并且想要使用 PageRank,您可能需要咨询律师。 PageRank 受专利保护,至少在美国是这样。我不确定这在您所在的国家/地区如何合法运作,但您可能应该咨询确切知道的人(即您当地的律师)。 我认为算法不能申请专利,只能申请专利。 @lagerderek:我只能假设这是因为语法等原因。我认为这是一个好问题,所以我清理了它。 【参考方案1】:

如果你想用更少的数学了解更多关于页面排名的信息,那么this 是一个非常好的基本矩阵运算教程。我推荐给几乎没有数学背景但想深入研究排名算法的每个人。

【讨论】:

【参考方案2】:

Duffymo 发布了我认为最好的参考。我在大四的时候研究了页面排名算法。页面排名正在执行以下操作:

    将当前网页集定义为有限马尔可夫链的状态。

    定义从站点 u 到 v 的转换概率,其中存在从 u 到 v 的传出链接

    1/u_n 其中 u_n 是来自 u 的出站链接数。

    假设上面定义的马尔可夫链是不可约的(这可以在结果轻微退化的情况下强制执行)

    可以证明每个有限的不可约马尔可夫链都有一个平稳分布。将页面排名定义为平稳分布,也就是说,当状态转换的数量趋于无穷时,该向量包含随机粒子最终到达每个给定位置的概率。

Google 使用幂法的细微变化来查找平稳分布(幂法查找主要特征值)。除此之外没有什么。它相当简单优雅,可能是我能想到的最简单的马尔可夫链应用程序之一,但它物有所值!

因此,pagerank 算法所做的所有事情都是将网络拓扑考虑在内,以表明网站是否应该重要。一个站点的传入链接越多,随机粒子在该站点上花费无限时间的可能性就越大。

【讨论】:

【参考方案3】:

PageRank 的正式定义在引用文档的第 4 页中定义,用有趣的“E”符号表示在数学方程式中(它实际上是大写的 Sigma 希腊字母。Sigma 是字母“S”这里代表求和)。

简而言之,这个公式表示要计算页面 X 的 PageRank...

对于此页面的所有反向链接(=链接到 X 的所有页面) 你需要计算一个值 链接到 X [R'(v)] 的页面的 PageRank 除以 在此页面上找到的链接数。 [女] 您添加的 一些“排名来源”,[E(u)] 由 c 归一化 (我们稍后会谈到这个目的。) 你需要将所有这些值相加 [The Sigma thing] 最后,将它乘以一个常数 [c] (这个常数只是为了保持 PageRank 的范围易于管理)

这个公式的关键思想是链接到给定页面 X 的所有网页都在为其“价值”增加价值。通过链接到某个页面,他们“投票”支持该页面。然而,这个“投票”的分量或多或少取决于两个因素:

链接到 X [R'(v)] 的页面的受欢迎程度 链接到 X 的页面也链接到许多其他页面的事实。 [女]

这两个因素反映了非常直观的想法:

通常最好从该领域公认的专家那里获得推荐信,而不是从不知名的人那里获得推荐信。 无论由谁推荐,通过也向其他人推荐,他们正在降低他们对您的推荐的价值。

如你所见,这个公式利用了有点循环引用,因为要知道X的页面范围,你需要知道链接到X的所有页面的PageRank。那么怎么做您计算出这些 PageRank 值吗?...这就是文档部分中解释的下一个收敛问题的起点。

本质上,从所有页面的一些“随机”(或者最好是“正确猜测”的 PageRank 值开始,并使用上面的公式计算 PageRank,新的计算值会变得“更好”,因为你迭代这个处理几次。这些值收敛,即它们每个都越来越接近实际/理论值。因此,通过迭代足够的次数,我们达到了一个时刻,额外的迭代不会为上次迭代提供的值添加任何实际精度。

现在...从理论上讲,这很好。诀窍是将此算法转换为等效但可以更快完成的算法。有几篇论文描述了如何完成此任务以及类似任务。我没有这样的参考资料,但稍后会添加这些参考资料。请注意,它们会涉及健康剂量的线性代数。

编辑: 正如所承诺的,这里有一些关于计算页面排名的算法的链接。 Efficient Computation of PageRank Haveliwala 1999 /// Exploiting the Block Structure of the Web for Computing PR Kamvar etal 2003 /// A fast two-stage algorithm for computing PageRank Lee et al. 2002

尽管上面提供的链接的许多作者都来自斯坦福大学,但很快就会意识到,寻求类似 PageRank 的高效计算是一个热门研究领域。我意识到这些材料超出了 OP 的范围,但重要的是要暗示基本算法不适用于大型网络这一事实。

以一个非常易于理解的文本结束(但有许多指向深入信息的链接),我想提一下Wikipedia's excellent article

如果您对这类事情很认真,您可以考虑开设数学入门/进修课程,尤其是线性代数,以及一般处理图形的计算机科学课程。顺便说一句,Michael Dorfman 在这篇文章中对 OCW 的 1806 讲座视频提出了很好的建议。

我希望这会有所帮助...

【讨论】:

谢谢你。我会听取你的建议【参考方案4】:

来自 Rose-Hulman 的"The $25,000,000,000 Eigenvector: The Linear Algebra Behind Google". 有点过时了,因为现在 Page Rank 是 $491B 的线性代数问题。我觉得这篇论文写得很好。

"Programming Collective Intelligence" 也对 Page Rank 进行了很好的讨论。

【讨论】:

【参考方案5】:

您可能还想阅读 David Austin 撰写的题为 How Google Finds Your Needle in the Web's Haystack 的关于构建 Pagerank 矩阵背后的数学的介绍性教程;它从一个简单的示例开始,并构建为完整的定义。

【讨论】:

【参考方案6】:

如果您认真考虑为搜索引擎开发算法,我强烈建议您参加线性代数课程。在没有面对面课程的情况下,Gilbert Strang 的 MIT OCW 课程相当不错(视频讲座http://ocw.mit.edu/OcwWeb/Mathematics/18-06Spring-2005/VideoLectures/)。

这样的课程肯定会让你理解你提供的文档中的数学符号——那篇论文中的任何内容都不会在第一年的线性代数课程中涵盖。

我知道这不是您要寻找的答案,但它确实是您的最佳选择。当您没有很好地掌握基本概念时,让某人尝试向您解释各个符号或算法并不是很好地利用任何人的时间。

【讨论】:

【参考方案7】:

这是您需要的论文:http://infolab.stanford.edu/~backrub/google.html(如果您不认识作者的姓名,您可以在此处找到有关他们的更多信息:http://www.google.com/corporate/execs.html)。

文档中使用的符号,在文档中用通俗的英文描述。

感谢你让我用谷歌搜索这个。

【讨论】:

以上是关于Pagerank 及其数学:需要解释的主要内容,如果未能解决你的问题,请参考以下文章

pagerank 数学基础

随机游走模型

《数学之美》读书

PageRank算法实现好友推荐(算法原理)

Spark-->PageRank [Scala]

PageRank算法