Google - Pagerank
词条权值的局限。
上一篇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的更多相关文章
- 影响google PageRank的因素
1 与pr高的网站做链接: 2 内容质量高的网站链接 3 加入搜索引擎分类目录 4 加入免费开源目录 5 你的链接出现在流量大.知名度高.频繁更新的重要网站上 6 google对PDF格式的文件比较看 ...
- mapReduce编程之google pageRank
1 pagerank算法介绍 1.1 pagerank的假设 数量假设:每个网页都会给它的链接网页投票,假设这个网页有n个链接,则该网页给每个链接平分投1/n票. 质量假设:一个网页的pagerank ...
- PageRank与TrustRank影响因素分析
PageRank(PR)里的page不是指网页,而是指Google创始人拉里?佩奇(Larry Page),是他在2001年申请的专利中以自己名字命名的,Google的PageRank根据网站的外部链 ...
- 谷歌 google
google Google是搜索引擎名,也是一家美国上市公司名称.Google公司于1998年9月7日以私有股份公司的形式创立,以设计并管理一个互联网的搜索引擎.Google公司的总部称作“Googl ...
- Google搜索排名优化-面向搜索引擎的网站设计
内容摘要:网站在搜索营销方面最主要的缺点: 行业知识:不知道搜索引擎对吸引的新用户的重要性,在搜索引擎排名服务中追求“傻瓜相关”,购买一些其实没有太多实际意义的行业关键词.其实能够用户输入的关键词越多 ...
- Google发展史 Google十三年
http://blog.csdn.net/terryzero/article/details/5910617 "1997年9月15日,Larry Page 和 Sergey Brin 正式注 ...
- 分布式系统(Distributed System)资料
这个资料关于分布式系统资料,作者写的太好了.拿过来以备用 网址:https://github.com/ty4z2008/Qix/blob/master/ds.md 希望转载的朋友,你可以不用联系我.但 ...
- 赴美工作常识(Part 2 - 申请)
在<Part 1 - 签证>的评论中有人提到,说我还没说如何申请职位就说签证的事情了.一方面,签证的周期决定了你申请职位的时间,错过关键时间点的话就可能错过重要的机会.另一方面,传统意义上 ...
- 想从事分布式系统,计算,hadoop等方面,需要哪些基础,推荐哪些书籍?--转自知乎
作者:廖君链接:https://www.zhihu.com/question/19868791/answer/88873783来源:知乎 分布式系统(Distributed System)资料 < ...
随机推荐
- HTML5 总结-画布-4
HTML5 画布 创建 Canvas 元素 向 HTML5 页面添加 canvas 元素. 规定元素的 id.宽度和高度: <canvas id="myCanvas" wid ...
- js 几个特殊情况
alert(033-15);//12,前缀0用在直接量中,表示八进制 alert('033'-15);//18,前缀0用在字符串中,在(隐式)转换将忽略 alert(parseInt('033')-1 ...
- 蝕刻技術(Etching Technology)
1. 前言 蚀刻是将材料使用化学反应或物理撞击作用而移除的技术. 蚀刻技术可以分为『湿蚀刻』(wet etching)及『干蚀刻』(dry etching)两类.在湿蚀刻中是使用化学溶液,经由化学反应 ...
- Windows Phone 8初学者开发—第7部分:本地化应用程序
原文 Windows Phone 8初学者开发—第7部分:本地化应用程序 第7部分:本地化应用程序 原文地址: http://channel9.msdn.com/Series/Windows-Phon ...
- CloudStack修复bug
CloudStack应用越来越广,但是随着测试也遇到了越来越多的bug. 不想等待新版本发布而且又急于修复某些bug的童鞋,可以参考下本文内容. CloudStack是java语言写成,发布时会发布为 ...
- uvalive 3971 - Assemble(二分搜索 + 贪心)
题目连接:3971 - Assemble 题目大意:有若干个零件, 每个零件给出的信息有种类, 名称, 价格, 质量, 现在给出一个金额, 要求在这个金额范围内, 将每个种类零件都买一个, 并且尽量 ...
- JS获取中文拼音首字母,并通过拼音首字母高速查找页面内的中文内容
实现效果: 图一: 图二: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdGVzdGNzX2Ru/font/5a6L5L2T/fontsize/400/f ...
- PendingIntent.getBroadcast第四个参数flags
(1) android.app.PendingIntent.FLAG_UPDATE_CURRENT 如果PendingIntent已经存在,保留它并且只替换它的extra数据. (2) android ...
- ios中利用NSDateComponents、NSDate、NSCalendar判断当前时间是否在一天的某个时间段内。
应用中设置一般会存在这样的设置,如夜间勿扰模式,从8:00-23:00,此时如何判断当前时间是否在该时间段内.难点主要在于如何用NSDate生成一个8:00的时间和23:00的时间,然后用当前的时间跟 ...
- git阶段学习总结
学习git大约有两个星期了,脑子里总算有点干货了,可以拿出来总结一下: git,用于版本控制的,刚开始觉得它是linux下默认的命令,其实也是个工具需要apt-get install git 安装一下 ...