我是一名学生,有兴趣开发一个索引来自我国家/地区的网页的搜索引擎。我一直在研究使用的算法,我已经确定HITS和PageRank是最好的。我决定使用PageRank,因为它比HITS算法更稳定(或者我读过)。
我找到了无数与PageRank有关的文章和学术论文,但我的问题是我不理解在这些论文中形成算法的大多数数学符号。具体来说,我不明白如何计算Google Matrix(不可缩减的随机矩阵)。
我的理解基于这两篇文章:
有人可以用较少的数学符号提供基本的解释(例子很好)吗?
提前致谢。
答案 0 :(得分:26)
PageRank的正式定义,如引用文件第4页所定义,用数字方程式表示,带有有趣的“E”符号(实际上是大写的Sigma希腊字母.Sigma是字母“S”这里代表 Summation )。
简而言之,这个公式说来计算第X页的PageRank ......
For all the backlinks to this page (=all the pages that link to X) you need to calculate a value that is The PageRank of the page that links to X [R'(v)] divided by the number of links found on this page. [Nv] to which you add some "source of rank", [E(u)] normalized by c (we'll get to the purpose of that later.) And you need to make the sum of all these values [The Sigma thing] and finally, multiply it by a constant [c] (this constant is just to keep the range of PageRank manageable)
这个公式的关键理念是链接到给定页面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
如果你认真对待这类事情,你可以考虑数学的入门/复习课,特别是线性代数,以及一般处理图形的计算机科学课。顺便说一下,迈克尔·多尔夫曼在这篇文章中对OCW的1806年讲座视频提出了很好的建议。
我希望这有点帮助...
答案 1 :(得分:9)
如果您认真考虑为搜索引擎开发算法,我会认真推荐您参加线性代数课程。在没有面对面课程的情况下,Gilbert Strang的麻省理工学院开放式课程非常好(http://ocw.mit.edu/OcwWeb/Mathematics/18-06Spring-2005/VideoLectures/的视频讲座)。
这样的课程肯定会让你理解你提供的文件中的数学符号 - 那篇论文中没有任何内容在第一年的线性代数课程中没有涉及。
我知道这不是您正在寻找的答案,但它确实是您的最佳选择。当你没有很好地掌握基本概念时,有人试图向你解释个别的符号或算法并不能很好地利用任何人的时间。
答案 2 :(得分:5)
这是您需要的论文:http://infolab.stanford.edu/~backrub/google.html(如果您不认识作者的姓名,可以在此处找到有关他们的更多信息:http://www.google.com/corporate/execs.html)。
文档中使用的符号在英文文档中描述。
感谢您让我谷歌。
答案 3 :(得分:3)
您可能还想阅读由David Austin撰写的名为How Google Finds Your Needle in the Web's Haystack的Pagerank矩阵构建背后的数学入门教程;它从一个简单的例子开始,并构建为完整的定义。
答案 4 :(得分:3)
"The $25,000,000,000 Eigenvector: The Linear Algebra Behind Google".有点过时,因为现在Page Rank是$ 491B线性代数问题。我认为这篇论文写得很好。
"Programming Collective Intelligence"也对网页排名进行了很好的讨论。
答案 5 :(得分:3)
Duffymo在我看来发布了最好的推荐。我在高年级本科学习了页面排名算法。网页排名正在执行以下操作:
定义从站点u转换到v的概率,其中有一个从v到v的外向链接
1 / u_ {n}其中u_ {n}是来自你的外出链接数。
假设上面定义的马尔可夫链是不可约的(这可以通过结果略微降低来强制执行)
谷歌使用幂方法略有变化来找到平稳分布(幂方法找到显性特征值)。除此之外,没有任何东西。它相当简单和优雅,可能是我能想到的马尔可夫链的最简单的应用之一,但它是很多钱!
因此,所有pagerank算法都会考虑网络的拓扑结构,作为网站是否重要的指示。网站传入的链接越多,随机粒子在无限时间内在网站上花费时间的概率就越大。
答案 6 :(得分:0)
如果您想了解更少有关数学较少的页面排名,那么this是基本矩阵运算的非常好的教程。我推荐给那些没有数学背景但想深入排名算法的人。