`

Google矩阵

阅读更多

使用一款搜索引擎,我们希望搜索结果能够拥有最佳的排序,Google为它最核心的排序算法PageRank申请了专利。在PageRank以前,排序大多依靠对搜索关键字和目标页的匹配度来进行的,这种排序方式弊端明显,尤其对于善于堆砌关键字舞弊的页面,很容易就跳到了搜索结果的首页。Larry Page和Sergey Brin开始着手解决这个问题,Google排序的继承来自于互联网上网页之间的链接关系。一张网页被其它网页引用的次数越多,可以简单地认为这样的网页越受欢迎,当然在结果列表中应该越靠前。

前面提到了目标网页被引用网页的“数量”,另一条重要的判定PageRank级别的依据则是“质量”。换言之,质量高的网页所引用的网页,质量往往也比较高,所以质量高的网页投票所占权重理应更高。

在用户访问某一张网页时,假设他有q的概率去点击网页上的链接,并且点击该网页每条链接的概率都是相等的。如果该网页有n条链接的话,那么点击每条链接的概率就是1/n。

在表现网页之间链接关系时,Google使用了矩阵。假设互联网上共有N个页面,那么我们可以写出一个N×N的矩阵,其中的元素pij,如果存在从页i被页j指向的链接(为什么使用“被指向”而非“指向”,前文已经解释了),那么pij就大于0,反之就等于0。同时,每一列元素的取值都除以链接数n(前文提到了),使得各列矢量总和成为1,行矢量则表示了各个状态之间的迁移概率,这个最大特征值为1的矩阵就成为了PageRank矩阵。

现在给出N为4的一个例子(共有A、B、C、D四张网页)帮助说明这个矩阵(这个例子来自于这篇文章):

 Google矩阵

可以看到矩阵L的几个非零元素的取值:

  • p13=1; 表示被A指向的只有C
  • p12=1; 表示被B指向的只有A
  • p13=p43=1/2; 表示被C指向的有A和D
  • p14=p24=p34=1/3; 表示被D指向的有A、B、C

于是,对于A来说,它的PageRank取值就可以表示为:

PR(A) = PR(B)/1 + PR(C)/2 + PR(D)/3

但这是在用户百分之百点击网页链接的情况下发生的,实际上,只有p概率的用户会点击网页链接,剩下(1-p)概率的用户会跳到无关的页面上去,而访问的页面恰好是4这个页面中A的概率只有(1-p)/4(p正是前文提到的“阻尼系数”(damping factor),Google取p等于0.85),所以:

PR(A) = (1-p)/4 + p(PR(B)/1 + PR(C)/2 + PR(D)/3)

推广到一般公式(pi表示第i张网页,L(pj)表示从pi链出网页的数量):

Google矩阵

有了PageRank(pi)的概念以后,PageRank矩阵就可以用一个特征向量来表示:

Google矩阵

由上述两个公式,可以得到(其中l(pi,pj)就是前文提到过的pij):

Google矩阵 

以上未特殊注明的公式截图来自于维基百科。

截止到2010年,Google索引的网页总数已经超过5000亿,也就是说,Google必须解这个阶数的特征向量,这个过程我不得而知,但这是不是真的就是MapReduce之类的由来呢?

文章系本人原创,转载请保持完整性并注明出自《四火的唠叨》

2
2
分享到:
评论

相关推荐

    C++实现各种矩阵运算

    - 编写单元测试确保矩阵运算的正确性,可以使用Google Test等库进行自动化测试。 - 调试时,可以输出中间结果检查计算过程是否正确。 通过以上步骤,我们可以构建一个功能完备、易于使用的C++矩阵运算库。这个库...

    南京邮电大学 矩阵论 PPT

    9. **应用领域**:在IT行业中,矩阵论用于图像处理(如傅里叶变换)、数据压缩(如奇异值分解SVD)、网络分析(如Google的PageRank算法)、推荐系统(协同过滤)、机器学习(如神经网络权重矩阵)等。 10. **编程...

    矩阵类库源代码-用于c程序中实现矩阵操作

    可以使用像Google Test这样的框架进行自动化测试。 综上所述,"矩阵类库源代码"提供了C程序中实现矩阵操作的核心功能,通过良好的设计和实现,可以帮助开发者高效、准确地处理矩阵问题。理解和使用这个类库,将有助...

    基于MapReduce的矩阵相乘算法代码及其使用

    该模型由 Google 首次提出,并被广泛应用于搜索引擎、推荐系统等场景。MapReduce 的核心思想是将一个大任务分解成许多小任务来并行处理,然后合并这些结果得到最终的结果。对于矩阵运算这类计算密集型任务来说,...

    C++实现的矩阵类,用于支持各种矩阵运算

    可以使用诸如Google Test等测试框架。 总的来说,C++实现的矩阵类是一个集数据结构、算法和面向对象编程于一体的复杂项目,它不仅要求良好的编程技巧,还需要对线性代数的基本概念有深入理解。通过这个矩阵类,我们...

    C++实现矩阵相乘

    在调试和测试过程中,使用诸如GDB这样的调试器以及单元测试框架(如Google Test)可以帮助确保代码的正确性。对于大型矩阵,还可以考虑性能基准测试,如使用 Criterion 或 Boost.Test。 总的来说,C++实现矩阵相乘...

    三种方法对web-Google.txt进行pagerank计算,python以稀疏矩阵方法实现单机计算谷歌网页数据计算pageRank值

    三种方法对web-Google.txt进行pagerank计算,1.python以稀疏矩阵方法实现单机计算谷歌网页数据计算pageRank值2.调用networkx库3.调用networkx库,其中pagerank自己实现。

    1-MapReduce矩阵乘法 600.rar

    标题中的“1-MapReduce矩阵乘法 600.rar”指的是一个使用MapReduce编程模型实现的矩阵乘法示例,这个示例可能是处理600x600或者涉及600个元素的矩阵。MapReduce是Google提出的一种分布式计算框架,常用于大数据处理...

    C++经典项目——矩阵

    在实际开发过程中,我们还会使用版本控制工具(如Git)、构建工具(如Makefile)以及测试框架(如Google Test)来管理和自动化整个流程。 通过这个C++矩阵项目,初学者不仅能学习到C++的基本语法,还能掌握面向对象...

    C++矩阵类库

    可以使用单元测试框架如Google Test,确保各种操作在预期情况下得到正确结果。 总结来说,这个C++矩阵类库利用动态内存管理和C++面向对象特性实现了矩阵的基本操作,对于学习C++编程和矩阵运算的开发者具有较高的...

    稀疏矩阵的C++实现--课程设计

    这可以通过单元测试框架(如Google Test)完成,编写各种输入场景,验证算法的正确性和效率。 总的来说,通过这次课程设计,你将掌握稀疏矩阵的基本概念,理解其在处理大量零元素时的优势,以及如何在C++中高效地...

    国科大矩阵分析大作业程序+说明

    矩阵分析大作业程序+说明

    分布式矩阵分解算法在推荐系统中的研究与应用.pdf

    云计算平台如Amazon、Google等提供的服务能够提供必要的计算资源和存储能力。 5. MapReduce编程模型:MapReduce是一种分布式计算模型,广泛应用于大规模数据集的并行运算。本文中的分布式矩阵分解算法正是通过...

    cpp-基准测试矩阵乘法的实现

    在"cpp-benchmark-matrix-multiplication"项目中,我们可以预期找到一个C++实现,它可能包含了上述的一些或所有优化策略,并使用基准测试工具(如Google Benchmark)来衡量不同实现的性能。通过分析代码和基准测试...

    viausl c++矩阵类库开发

    - 使用单元测试框架(如Google Test)对类库进行详尽的测试,确保其正确性和稳定性。 - 编写清晰的API文档,方便其他开发者理解和使用。 在"压缩包子文件的文件名称列表"中,`C++矩阵运算类库与Windows应用软件_...

    黑客帝国数字矩阵PPT下载

    下载后,你需要使用支持PPT格式的软件(如Microsoft PowerPoint或免费的Google Slides)来打开和编辑它。记得在使用前检查兼容性,并根据需要进行个性化定制,使其更符合你的展示需求。 总的来说,【黑客帝国数字...

    9. Markov矩阵和正矩阵.pdf

    在互联网行业中,Markov矩阵和正矩阵的应用非常广泛,比如网页排名算法(如Google的PageRank),用户行为建模,网络流预测,推荐系统等。理解并掌握这些概念有助于构建更精确的模型来理解和预测复杂系统的动态行为。

    用于Elixir的谷歌距离矩阵API库_Elixir_下载.zip

    标题中的“用于Elixir的谷歌距离矩阵API库”指的是一个专门为Elixir编程语言设计的库,该库允许开发者集成和使用谷歌地图的Distance Matrix API。谷歌距离矩阵API是一个服务,可以提供多对多地点之间的距离和旅行...

    Google距离矩阵API的Ruby客户端。_Ruby_下载.zip

    Google距离矩阵API是Google Maps平台的一部分,用于计算多个位置之间的距离和旅行时间。这个API能够提供实时交通情况下的驾车、步行、骑行以及公共交通等多种出行方式的预计耗时和距离。在Ruby编程语言中,开发人员...

    矩阵轮 学习

    9. 矩阵的应用:例如,在网络分析、金融模型和搜索算法中,如Google PageRank算法就是一个利用矩阵的特征向量来排序网页重要性的例子。 10. 使用的软件和工具:在矩阵论学习中,经常会使用MATLAB这类矩阵实验室软件...

Global site tag (gtag.js) - Google Analytics