词条权值的局限。

上一篇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. (C)高级排序法

    1.快速排序法 //方法1 从大到小 #include <iostream.h> void run(int* pData,int left,int right) { int i,j; in ...

  2. Spring读书笔记-----部署我的第一个Spring项目

    一.Spring介绍 Spring是一个轻量级的Java EE容器,它也是一种从实际需求出发,着眼于轻便,灵活,易于开发,易测试和易部署的轻量级开发框架.Spring它完成了大量开发中的通用步骤,留给 ...

  3. 依赖于设备的位图(DDB) ,CreateCompatibleBitmap用法

    DDB(Device-dependent bitmap)依赖于具体设备,这主要体现在以下两个方面: DDB的颜色模式必需与输出设备相一致.例如,如果当前的显示设备是256色模式,那么DDB必然也是25 ...

  4. ZIOZIA_百度百科

    ZIOZIA_百度百科 ZIOZIA

  5. 九度 和为S的连续正数序列

    题目1354:和为S的连续正数序列 时间限制:2 秒 内存限制:32 兆 特殊判题:否 提交:2008 解决:622 题目描述: 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上 ...

  6. U3D学习笔记

    1.向量的点乘.叉乘以及归一化的意义 1)点乘描述了两个向量的相似程度,结果越大两向量越相似,还可表示投影 2)叉乘得到的向量垂直于原来的两个向量 3)标准化向量:用在只关系方向,不关心大小的时候 用 ...

  7. html5 学习笔记

    一.ie8及以下对html5相关语义标签的支持 <!-[if lt IE9]> <script src="html5.js"></script> ...

  8. django 时间计数

    value必须replace(tzinfo=None)变成datetime格式,否则格式不对不能相减.

  9. CSS高级技巧 图标字体ICONFONT的使用方法视频

    图标字体  iconfont 这是一种字体,它跟svg 有很大 相似点   它是矢量的,放大缩小不失真的.很且很小. 我们把它成字看来. 字体 在 从ie4就开始支持的.  兼容性很好 唯一麻烦的地方 ...

  10. ios中的任务分段

    工作比较忙,蛮久没有写东西了,今天我要写的是ios中的任务分段.大多数的情况下,我们用不到任务分段,但是如果我们是在执行比较频繁的函数或者这个函数是比较耗时, 某一条件下,我要执行新的任务,并且取消上 ...