词条权值的局限。

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

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

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

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

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

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

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

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

基于超链接的pagerank:

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

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

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

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

基本模型:

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

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

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

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

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

简单解法:

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

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

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

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

A表示这样一个矩阵:

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

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

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

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

根据线性代数的知识,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值将不断增加。

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

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

继续迭代得到:

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

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

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

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

继续迭代,得到

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

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

2.Dead Ends

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

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

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

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

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

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

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

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

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

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

公式变为:

矩阵表示变为:

具体的迭代步骤:

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

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)资料 < ...

随机推荐

  1. 第三章 视图和URL配置

    在Mysite文件夹中,创建一个views.py的空文件,输入: from django.http import HttpResponse def hello(request): return Htt ...

  2. 用SQL实现统计报表中的"小计"与"合计"的方法详解

    本篇文章是对使用SQL实现统计报表中的"小计"与"合计"的方法进行了详细的分析介绍,需要的朋友参考下   客户提出需求,针对某一列分组加上小计,合计汇总.网上找 ...

  3. 解决gerber-Failed to Match All Shapes for PCB问题

    有效解决在Protel 99se导gerber时提示gerber-Failed to Match All Shapes for PCB出错问题如图 这种问题很好解决,打开这个窗口 操作方法如下图Emb ...

  4. QT设置前景图位置(配色简单漂亮)

    QPushButton { background-image: url(:/Resources/green_click.png); image: url(:/Resources/toolsbutton ...

  5. Socket 基础解析使用ServerSocket建立聊天服务器

    很简单的教程哦! 1.socket 简介 Socket 又称"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求.ServerSocket 用于 ...

  6. Solr4.7从文件创建索引

    索引数据源并不会一定来自于数据库.XML.JSON.CSV这类结构化数据,很多时候也来自于PDF.word.html.word.MP3等这类非结构化数据,从这类非结构化数据创建索引,solr也给我们提 ...

  7. 基于visual Studio2013解决C语言竞赛题之0205位数求和

     题目

  8. BZOJ 1726: [Usaco2006 Nov]Roadblocks第二短路

    1726: [Usaco2006 Nov]Roadblocks第二短路 Description 贝茜把家搬到了一个小农场,但她常常回到FJ的农场去拜访她的朋友.贝茜很喜欢路边的风景,不想那么快地结束她 ...

  9. Android 进程和线程

    进程和线程 如果某个应用程序组件是第一次被启动,且这时应用程序也没有其他组件在运行,则Android系统会为应用程序创建一个包含单个线程的linux进程.默认情况下,同一个应用程序的所有组件都运行在同 ...

  10. Putty远程登录VMware虚拟机Linux(Ubuntu12.04)

    为了不至于来回在Win7和Ubuntu12.04之间来回切换,在Win7下使用VMware9.0安装了Ubuntu12.04. 首先下载Vmware9.0虚拟机软件,下载地址为:VMware-work ...