网页排序的任务中,最核心的难点在于判别网页质量。

将互联网上的网页模拟为一个节点,而这个网页的“出链”看做是指向其他节点的一条“有向边”,而“入链”则是其他节点指向这个节点的有向边。这样整个网络就变成了一张有向图。事情到此就显得容易解决了,因为我们用图论中最普通的有向图模型,完成了对此类问题的建模。具体的说,网页质量的评估是遵循以下两个假设的:

数量假设:一个节点(网页)的入度(被链接数)越大,页面质量越高
质量假设:一个节点(网页)的入度的来源(哪些网页在链接它)质量越高,页面质量越高

为了将这一分析数学化,拉里佩奇和谢尔盖布林将随机过程的“随机游走模型”

pn+1 = Hpn

pn = Hnp0

其中 p0 为网页的初始的pagerank向量 (在佩奇和布林的原始论文中, 这一几率分布被假定为是均匀分布),H则是描述马尔可夫过程中的转移概率分布的所谓转移矩阵

问题及解决

如前所述, 佩奇和布林是用理论上为无穷长——时间的漫游后访问各网页的几率分布, 即 limn→∞pn, 来确定网页排序的。 这个定义要想管用, 显然要解决三个问题:

极限 limn→∞pn 是否存在?

如果极限存在, 它是否与 p0 的选取无关?

如果极限存在, 并且与 p0 的选取无关, 它作为网页排序的依据是否真的合理?

普通马尔可夫过程中的转移矩阵通常是随机矩阵 (stochastic matrix), 即每一列的矩阵元之和都为 1 的矩阵,而我们的矩阵 H 却可能有一些列是零向量, 从而矩阵元之和为 0, 它们对应于那些没有对外链接的网页, 即所谓的 “悬挂网页” (dangling page)。 因为任何一个 “悬挂网页” 都能象黑洞一样, 把其它网页的几率 “吸收” 到自己身上 (因为虚拟用户一旦进入那样的网页, 就会由于没有对外链接而永远停留在那里), 这显然是不合理的。 这种不合理效应是如此显著, 以至于在一个连通性良好的互联网上, 哪怕只有一个 “悬挂网页”, 也足以使整个互联网的网页排序失效, 可谓是 “一粒老鼠屎坏了一锅粥”。

为了解决这些问题, 佩奇和布林对虚拟用户的行为进行了修正。 首先, 他们意识到无论真实用户还是虚拟用户, 当他们访问到 “悬挂网页” 时, 都不应该也不会 “在一棵树上吊死”, 而是会自行访问其它网页。 对于真实用户来说, 自行访问的网页显然与各人的兴趣有关, 但对于在平均意义上代表真实用户的虚拟用户来说, 佩奇和布林假定它将会在整个互联网上随机选取一个网页进行访问。 用数学语言来说, 这相当于是把 H 的列向量中所有的零向量都换成 e/N (其中 e 是所有分量都为 1 的列向量, N 为互联网上的网页总数)。 如果我们引进一个描述 “悬挂网页” 的指标向量 (indicator vector) a, 它的第 i 个分量的取值视 Wi 是否为 “悬挂网页” 而定——如果是 “悬挂网页”, 取值为 1, 否则为 0——并用 S 表示修正后的矩阵, 则:

S = H + eaT/N

显然, 这样定义的 S 矩阵的每一列的矩阵元之和都是 1, 从而是一个不折不扣的随机矩阵。 这一修正因此而被称为随机性修正 (stochasticity adjustment)。 这一修正相当于剔除了 “悬挂网页”, 从而可以给上述第三个问题带来肯定回答 (当然, 这一回答没有绝对标准, 可以不断改进)。 不过, 这一修正解决不了前两个问题。 为了解决那两个问题, 佩奇和布林引进了第二个修正。 他们假定, 虚拟用户虽然是虚拟的, 但多少也有一些 “性格”, 不会完全受当前网页所限, 死板地只访问其所提供的链接。 具体地说, 他们假定虚拟用户在每一步都有一个小于 1 的几率 α 访问当前网页所提供的链接, 同时却也有一个几率 1-α 不受那些链接所限, 随机访问互联网上的任何一个网站。 用数学语言来说 (请读者自行证明), 这相当于是把上述 S 矩阵变成了一个新的矩阵 G:

G = αS + (1-α)eeT/N

这个矩阵不仅是一个随机矩阵, 而且由于第二项的加盟, 它有了一个新的特点, 即所有矩阵元都为正 (请读者想一想, 这一特点的 “物理意义” 是什么?), 这样的矩阵是所谓的素矩阵 (primitive matrix)。 这一修正因此而被称为素性修正 (primitivity adjustment)。

经过这两类修正, 网页排序的计算方法就变成了:

pn = Gnp0

这个算法能给上述问题提供肯定答案吗? 是的, 它能。 因为随机过程理论中有一个所谓的马尔可夫链基本定理 (fundamental theorem of Markov chains), 它表明在一个马尔可夫过程中, 如果转移矩阵是素矩阵, 那么上述前两个问题的答案就是肯定的。 而随机性修正已经解决了上述第三个问题, 因此所有问题就都解决了。 如果我们用 p 表示 pn 的极限, 则 p 给出的就是整个互联网的网页排序——它的每一个分量就是相应网页的访问几率, 几率越大, 排序就越靠前。

链接

https://blog.csdn.net/guoziqing506/article/details/70702449

https://www.changhai.org/articles/technology/misc/google_math.php

pagerank 数学基础的更多相关文章

  1. 【原创】机器学习之PageRank算法应用与C#实现(1)算法介绍

    考虑到知识的复杂性,连续性,将本算法及应用分为3篇文章,请关注,将在本月逐步发表. 1.机器学习之PageRank算法应用与C#实现(1)算法介绍 2.机器学习之PageRank算法应用与C#实现(2 ...

  2. 【十大经典数据挖掘算法】PageRank

    [十大经典数据挖掘算法]系列 C4.5 K-Means SVM Apriori EM PageRank AdaBoost kNN Naïve Bayes CART 我特地把PageRank作为[十大经 ...

  3. PageRank的java实现

    一个网络(有向带权图)中节点u的PageRank的计算公式: PR(u)表示节点u的PageRank值,d为衰减因子(damping factor)或阻尼系数,一般取d=0.85,N为网络中的节点总数 ...

  4. 【原创】机器学习之PageRank算法应用与C#实现(2)球队排名应用与C#代码

    在上一篇文章:机器学习之PageRank算法应用与C#实现(1)算法介绍 中,对PageRank算法的原理和过程进行了详细的介绍,并通过一个很简单的例子对过程进行了讲解.从上一篇文章可以很快的了解Pa ...

  5. pagerank

    http://jung.sourceforge.net/ https://github.com/louridas/pagerank/blob/aeb9b17ada1f925bb525961574f6d ...

  6. PageRank理论与实践及用户评分应用PeopleRank算法

    PageRank,网页排名,又称网页级别.Google左侧排名或佩奇排名,是一种由根据网页之间相互的超链接计算的技术,而作为网页排名的要素之一. Google用它来体现网页的相关性和重要性,在搜索引擎 ...

  7. 张洋:浅析PageRank算法

    本文引自http://blog.jobbole.com/23286/ 很早就对Google的PageRank算法很感兴趣,但一直没有深究,只有个轮廓性的概念.前几天趁团队outing的机会,在动车上看 ...

  8. 第十章 PageRank——Google的民主表决式网页排名技术

    搜索引擎的结果取决于两组信息:网页的质量信息,这个查询与每个网页的相关性信息.这里,我们介绍前一个. 1.PageRank算法原理 算法的原理很简单,在互联网上,如果一个网页被很多其他网页所链接,说明 ...

  9. PageRank算法简介及Map-Reduce实现

    PageRank对网页排名的算法,曾是Google发家致富的法宝.以前虽然有实验过,但理解还是不透彻,这几天又看了一下,这里总结一下PageRank算法的基本原理. 一.什么是pagerank Pag ...

随机推荐

  1. Source Insight 4.0安装使用教程

    一.说明 Source Insight是什么:Source Insight是一款代码编缉.浏览.分析工具. Source Insight与文本编缉器有什么区别:Notepad++等文本编缉器也可以编缉 ...

  2. Cannot Connect to Database Server

    好久没登数据库了,今天登陆时忽然要输入密码,然后一登结果就报了下图的错. 之前也发生过这种情况,但是重启服务就好了,这次重启后依然不行. 后来密码用root居然就登进去了,可是真不记得有改过密码 不知 ...

  3. PCA算法数学原理及实现

    数学原理参考:https://blog.csdn.net/aiaiai010101/article/details/72744713 实现过程参考:https://www.cnblogs.com/ec ...

  4. myBatis简学

    mybatis使用: ①拷贝相关mybits ②编写对象关系映射,一般都是实体类名+Mapper.xml的格式 ③编写mybits配置文件: a)配置环境 b)配置映射文件地址 ④编写对象操作方法: ...

  5. Exception: 'dlib.mmod_rectangle' object has no attribute 'right' - 例外:'dlib.mmod_rectangle'对象没有属性'right'

    I'm using dlib for face detection and getting this error Exception: 'dlib.mmod_rectangle' object has ...

  6. 蒙层嵌套pdf以及连接后台

    一.在本地浏览pdf(直接将element-dialog 和 iframe相结合)需要将要浏览的pdf放入static文件夹下面 <el-button type="text" ...

  7. bluemix创建docker容器

    简介: bluemix是基于kubernetes来服务的免费云空间.绑定信用卡后可以创建一个月的集群,一个月后会被删除. 下面示例介绍如何使用kubernetes dashboard来创建一个容器,并 ...

  8. OSI,TCP/IP,五层协议的体系结构,以及各层协议

    OSI分层 (7层):物理层.数据链路层.网络层.传输层.会话层.表示层.应用层. TCP/IP分层(4层):网络接口层. 网际层.运输层. 应用层. 五层协议 (5层):物理层.数据链路层.网络层. ...

  9. DBUtils——handler

    ArrayHandler: 把结果集中的第一行数据转成对象数组. ArrayListHandler: 把结果集中的每一行数据都转成一个对象数组,再存放到List中. BeanHandler: 将结果集 ...

  10. swiper使用中一些点的总结

    最近做了PC端改版,要求移动端有更好的体验,一些产品滚屏的展示,就用了swiper插件,以方便用户在移动端访问可以滑动翻屏展示. 本次项目中使用的是swiper2.0版本. 首先要引入swiper的j ...