Google - Pagerank

时间:2021-09-03 11:39:49

词条权值的局限。

上一篇blog以信息和概率的角度探讨了词条对于文档的权值。

见blog:http://blog.csdn.net/ice110956/article/details/17243071

在通过词条检索文档的模型中,我们假设每个文档出现的频率是近似相等的,或者与其词数成正比。其实也就是默认了其具有相同的重要性。

而在web搜索中,每个web页面的重要性是不相等的。比如wiki上关于某个信息的描述肯定比一个小学生blog更准确,即使小学生的blog中关键词出现了更多次。在比如某品牌旗舰店的信息肯定比淘宝一星卖家的信息更可信。

这就牵涉到一个关于页面重要性度量。

还有一点就是,基于词条频率的方法很容易被作弊。比如世界杯这个关键词很火,我就在自己的页面上用透明的字体隐藏一万个“世界杯”。

而且,不同于一般的文档,web页面有其特殊的结构和内容。其包含图片,文字,超链接等。而超链接对于衡量一个web页面有着很大的作用。pagerank也就是针对超链接的度量方式。

下图表现了简单的页面间的超链接关系。

Google - Pagerank

基于超链接的pagerank:

如果一个web被许多其他web指向,那么他应该是一个很重要的web。而如果一个web指向了许多web,他并不一定是一个很重要的web。也就是指入链接比指出链接更有说服你。

很好地类比就是,微博上你有许多粉丝,那么你应该很有名;而如果你关注了很多了,你也许只是一个追星族。

还有,如果一群僵尸粉粉你,那么你可能是虚假广告;而如果很多名人粉你,那么你可能非常有名。也就是指入链接的重要度与其源web的重要度成正比。

综上所述,指入链接与链接重要度,是重要的度量指标。

基本模型:

下图是一个简单的指入链接和重要度模型:

Google - Pagerank

一个web的重要度等于其指入链接重要度按比例相加。

如果不按比例,那么被指的节点权值肯定要大于指向他的值,这是不合理的。那么我们得到如下公式:

Google - Pagerank

上式中,u代表要计算的节点,V表示所有指入他的节点,N表示指入节点分别的链接数。

如上图rank=53的节点,rank=100/2+90/3=53;

简单解法:

我们可以看出,R是递归定义的。我们要计算一个节点的值,要先知道指入他的节点的值。如果这个节点正好也指向原节点,那么源节点值也要改变。这有点像先有鸡还是先有蛋的问题。

所谓的稳定状态就是,各个页面的值满足定义的条件,不会改变,也就是我们最终想要得到的状态,如下就是一个稳定状态:

Google - Pagerank

我们把问题转化为数学形式:

R表示各个页面pagerank的值向量:

Google - Pagerank

A表示这样一个矩阵:

Google - Pagerank

其中l(pj,pj)=1/N,其中N表示i节点的指出链接数。Google - Pagerank

那么,我们可以有如下迭代计算:

Google - Pagerank

我们可以给定一个初值R0,不断迭代,直到Rn+1==Rn,或者变化很小,得到我们要的最终R。

或者,我们直接求解下式:

Google - Pagerank

根据线性代数的知识,R为A关于1的特征向量。

于是我们又得到了一个非迭代解法。

概率数学模型:

Internet上的所有网页可以被抽象为一个有向图。而人们在网页间相互跳转可以抽象为一个状态到另一个状态的转换,人们在网页构成的互联网上,根据一定的概率通过超链接随机地从一个页面到另一个页面。

我们假设从一个页面到另一个页面只与当前的页面有关,也就是P(Xn|Xn-1,Xn-2,Xn-3...)=P(Xn|Xn-1)。

于是,我们可以用有向图以及马尔科夫链来抽象互联网上的超链接,也就是抽象为一个马尔科夫随机场。

(关于马尔科夫随机场以及相关知识,可见:http://blog.csdn.net/j123kaishichufa/article/category/1162092

我们知道,马尔科夫系统有两个量:状态与转移概率矩阵,也就是我们这里的当前网页与通过某个链接转移到下一个网页的概率。当迭代到达一定次数,各个状态的概率值不再发生变化,也就是rank值不变,那么系统到达一个稳定状态,也就是平稳马尔科夫过程。

那么R表示初始概率,A表示转移矩阵,Rn为平稳马尔科夫过程的解。

于是,问题变为探讨如何求解平稳马尔科夫过程。

我们知道,在解平稳马尔科夫过程时,用到特征向量的求解方法,也就是上一部分非迭代方法。

现在我们在求解平稳马尔科夫过程的模型下,具体探讨实际计算中一些问题。

1.   rank sink:

如下图,某个页面的rank到达一个圈后,由于rank没有出入,不断迭代下其中的rank值将不断增加。

Google - Pagerank

下图中的D节点与上图也是相同的情况,我们把上图中三个节点抽象为一个节点就变为下图:

Google - Pagerank

具体到求平稳马尔科夫的迭代过程就是,设D节点的rank(D)=1,并且转移概率D到D为1,那么下一次迭代的时候会变为

Google - Pagerank

继续迭代得到:

Google - Pagerank

随着迭代次数N的增加,R也会趋近于无穷大。

这里,我们考虑乘上一个阻尼系数d。得到如下公式:

Google - Pagerank

在迭代计算矩阵相乘的时候能明显地说明其作用。

还是上述的问题,如果加了一个阻尼系数d,假设d=0.85,那么

Google - Pagerank

继续迭代,得到

Google - Pagerank

也就不会趋近于无穷大了。

也就是加入阻尼系数后,由于其小于1的性质,解决了上述问题。

2.Dead Ends

Google - Pagerank

上图中的D,只有指入链接,没有指出链接。表现在矩阵上就是,转移矩阵最后一列全为0。

根据矩阵的知识,转移矩阵有特征值0,有特征向量0向量,那么R(N)最后可能会收敛到0向量。

一种解决方法是,把这种Dead end删除,迭代计算完成后再加入。

如上图,D被删除后,C变为Dead end。我们继续删除C,然后迭代计算A,B,再反向加入C,D,赋予其值。

还有一种方法,假设用户链接到这个页面后,就停滞不前了,并且选择从任意其他页面继续,也就是加上一个逃脱因子。得到公式:

Google - Pagerank

逃脱因子的直观解释是,当用户点击进入D节点时,他会在这个页面中无路可去,最后不耐烦,选择关闭所有,从任意其他页面开始浏览。

那么d就是其继续浏览的概率,1-d就是其不耐烦关闭的概率。这个逃脱因子在上一部分的rank sink中也有类似的解释和作用。

假设一共有N个其他页面,于是任意跳转的概率就是(1-d)/N.

也就是,每个页面都有一个最小的rank值,(1-d)/N。这样避免了全0的列。

加入阻尼系数和逃脱因子后的解法:

公式变为:

Google - Pagerank

矩阵表示变为:

Google - Pagerank

具体的迭代步骤:

Google - Pagerank

上述的迭代就是把公式分布求解,其中Google - Pagerank表示一个迭代的阈值。

pagerank有一个明显的缺点,他偏向于旧的页面。因为新加入的页面不可能有许多页面指向他们。

还有就是,搜索根据不同的用户,不同的搜索内容,其衡量重要性的方式也是大不相同的。pagerank很难满足所有要求。

这也是为什么pagerank需要许多其他算法辅助的原因。

推荐阅读:

http://blog.codinglabs.org/articles/intro-to-pagerank.html

http://www.cnblogs.com/fengyan/archive/2011/11/12/2246461.html

http://ilpubs.stanford.edu:8090/422/

Google - Pagerank的更多相关文章

  1. 影响google PageRank的因素

    1 与pr高的网站做链接: 2 内容质量高的网站链接 3 加入搜索引擎分类目录 4 加入免费开源目录 5 你的链接出现在流量大.知名度高.频繁更新的重要网站上 6 google对PDF格式的文件比较看 ...

  2. mapReduce编程之google pageRank

    1 pagerank算法介绍 1.1 pagerank的假设 数量假设:每个网页都会给它的链接网页投票,假设这个网页有n个链接,则该网页给每个链接平分投1/n票. 质量假设:一个网页的pagerank ...

  3. PageRank与TrustRank影响因素分析

    PageRank(PR)里的page不是指网页,而是指Google创始人拉里?佩奇(Larry Page),是他在2001年申请的专利中以自己名字命名的,Google的PageRank根据网站的外部链 ...

  4. 谷歌 google

    google Google是搜索引擎名,也是一家美国上市公司名称.Google公司于1998年9月7日以私有股份公司的形式创立,以设计并管理一个互联网的搜索引擎.Google公司的总部称作“Googl ...

  5. Google搜索排名优化-面向搜索引擎的网站设计

    内容摘要:网站在搜索营销方面最主要的缺点: 行业知识:不知道搜索引擎对吸引的新用户的重要性,在搜索引擎排名服务中追求“傻瓜相关”,购买一些其实没有太多实际意义的行业关键词.其实能够用户输入的关键词越多 ...

  6. Google发展史 Google十三年

    http://blog.csdn.net/terryzero/article/details/5910617 "1997年9月15日,Larry Page 和 Sergey Brin 正式注 ...

  7. 分布式系统(Distributed System)资料

    这个资料关于分布式系统资料,作者写的太好了.拿过来以备用 网址:https://github.com/ty4z2008/Qix/blob/master/ds.md 希望转载的朋友,你可以不用联系我.但 ...

  8. 赴美工作常识(Part 2 - 申请)

    在<Part 1 - 签证>的评论中有人提到,说我还没说如何申请职位就说签证的事情了.一方面,签证的周期决定了你申请职位的时间,错过关键时间点的话就可能错过重要的机会.另一方面,传统意义上 ...

  9. 想从事分布式系统,计算,hadoop等方面,需要哪些基础,推荐哪些书籍?--转自知乎

    作者:廖君链接:https://www.zhihu.com/question/19868791/answer/88873783来源:知乎 分布式系统(Distributed System)资料 &lt ...

随机推荐

  1. UIScrollView的delegate方法妙用之让UICollectionView滑动到某个你想要的位置

    一个UICollectionView有好多个cell,滑动一下,谁也不知道会停留在哪个cell,滑的快一点,就会多滑一段距离,反之则会滑的比较近,这正是UIScrollview用户体验好的地方. 如果 ...

  2. UNITY自带的3D object没有三角形?

    有方形,圆形,圆柱,胶囊,就是没有三角形? 这里看代码如何创建mesh http://www.narkii.com/club/thread-369573-1.html http://www.taikr ...

  3. HTTPS 原理解析

    一 前言 在说HTTPS之前先说说什么是HTTP,HTTP就是我们平时浏览网页时候使用的一种协议.HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全.为了保证 ...

  4. 【Cocos2d-Js基础教学(7)界面UI更新方法(会用到第三方类库)】

    我们游戏中会遇到很多UI更新的时候,大部分时候我们会remove该节点,再重新绘制的方法来进行UI更新. 但是这种更新效率并不高,这里我推荐大家一个第三方的库,来通过注册更新的方式来对UI进行更新管理 ...

  5. stm32启动文件 startup&lowbar;stm32f10x&lowbar;hd&period;s

    ;* 文件名          : startup_stm32f10x_hd.s;* 库版本           : V3.5.0;* 说明:             此文件为STM32F10x高密度 ...

  6. Android开发-API指南-系统权限

    System Permissions 英文原文:http://developer.android.com/guide/topics/security/permissions.html 采集日期:201 ...

  7. 在云服务器搭建WordPress博客(二)使用xampp并解决端口冲突问题

    要搭建一台外界可以访问的服务器,就必须有对应的服务器环境.在这里我用的xampp集成环境(我是菜鸟级......),xampp集成了PHP+Apache+MySQL+perl,安装方便,不用再特意去设 ...

  8. 返回页面&comma;主页面不刷新window&period;history&period;go&lpar;-1&rpar;&comma;主页面刷新window&period;location&period;go&lpar;-1&rpar;

    返回上一页,不刷新 window.history.go(-1) 返回上一页,刷新 window.location.go(-1)

  9. qt 程序启动参数 -qws

    运行嵌入式程序 在嵌入式QT版本中,程序需要服务器或自己作为服务器程序.服务器程序构造的方法是构造一个QApplication::GuiServe类型的QApplication对象.或者使用-qws命 ...

  10. Python学习笔记-SQLSERVER的大批量导入以及日常操作(比executemany快3倍)

    环境 : python3.6 / win10 / vs2017 / sqlserver2017 一.需要安装的包pymssql pip install pymssql 二.pymssql模块的介绍 p ...