标签:
PageRank 算法学习与整理
由于最近在研究图计算框架的相关问题,决定复习整理一下它的测试算法PageRank,不足之处请大家批评指正!
一、 PageRank 相关背景
PageRank 的创始人拉里佩奇(Larry Page)和谢尔盖.布林(Sergey Brin),在1998年提出了该算法,并应用在Google搜索引擎的检索结果排序上,该技术也是Google早期的核心技术之一,是Google用来衡量一个网站好坏的标准。
二、 Google搜索引擎工作流程
首先看一下Google搜索网页过程,如下图所示:
Google是如何对搜索到的网页进行排序的呢?
在Google中搜索“网络红人”,搜索引擎的简要过程如下:
1. 针对查询词“网络红人”进行分词:“网络”和“红人”。
2. 根据建立的倒排索引,将同时包含“网络”和“红人”的文档返回,并根据相关性进行排序
(这里的相关性主要是基于内容的相关性,但是会有一些垃圾网页,虽然包含大量查询词,但是并不是用户所需的,因此网页本身的重要性在网页排序也起着很重要的所用)
那么,如何度量网页本身的重要性呢?
互联网上的每一篇HTML文档除了包含文本、图片、视频等信息外,还包含了大量的连接关系,利用这些连接关系能够发现某些重要的网页。
将网页看成节点,连接关系看成有向边。直观的发现:链接到B和E的网页比较多,那么应该是B和E的网页更为重要,但是链接到C的网页B很重要,所以C网页的重要性同样很高。
因此,我们可以定性地判定网页重要性的方法:
1. 某个网页被链接的次数越多,它的重要性越高。
2. 被重要性高的网页所链接的网页,重要性也高。
如何定量地度量网页重要性呢?接下来我们就要引入PageRank
三、 什么是PageRank?
PageRank是一种在搜索引擎中根据网页之间相互的链接关系计算网页排名的技术。Google用该技术来标示网页的等级或者重要性。PageRank的级别从1级到10级,PR值越高说明该网页越受欢迎(即越重要)。
PageRank近似于一个用户,是指其在Internet上随机地点击链接将会到达特定网页的可能性,是一个概率。通常,能够从更多地方到达的网页更为重要,因此具有更高的PageRank。
查看某网页的PageRank值可以安装Google工具条并启用PageRank特性,或者在firefox安装SerchStatus插件,或者在http://pr.chinaz.com中查询。
四、 PageRank核心思想
PageRank是基于“从许多优质的网页链接过来的网页,必定还是优质网页”的回归关系,来判定所有网页的重要性。
其核心思想有两点:
1. 如果一个网页被很多其他网页连接到,说明这个网页比较重要,即PageRank值会相对高。
2. 如果一个PageRank值很高的网页连接到一个其他的网页,那么被链接到的网页的PageRank值会相应地被提高。
五、 PageRank 计算简单模型
下面将介绍网页重要程度的定量计算,也就是计算PageRank的值。
1. PageRank简单计算模型
假设一个有只有四个页面组成的集合:A,B,C,D。如果所有的页面都链接向A,那么A的PR值将是B,C,D的和:
继续假设B也有链接到C,并且D也有链接到包括A的三个页面。每次链接都相当于对其所连接页面重要性的一次投票,一个页面不能投票两次。所以B给每个页面投半票。以同样的逻辑,D投出的只有三分之一给了A,那么
换句话说,根据链接出的总数,平分一个页面的PR值,即得到通式:
其中PR(A)表示页面A的PageRank值,L(B)表示页面B链接出的总数。
PageRank简化模型:
可以把互联网上的各网页之间的链接关系看成一个有向图。假设冲浪者浏览的下一个网页链接来自于当前网页。建立简化模型:对于任意网页Pi,它的PageRank值可表示为如下:
PRi:网页i的PageRank值
PRj:网页j的PageRank值
Lj为网页j的对外链接数
Bi为所有链接到网页i的网页的集合
在实际的网络超链接环境下没有那么理想化,PageRank会面临两个问题:Rank Leak和Rank Sink。
1. Rank Leak:一个独立的网页如果没有外出的链接就会产生等级泄露。
解决办法:
(1) 将无出度的节点递归地从图中去掉,待其他节点计算完毕后再加上。
(2) 对无出度的节点添加一条边,指向那些指向它的顶点。
2. Rank Sink: 整个网页图中的一组紧密链接成环的网页如果没有外出的链接就会产生Rank Sink
六、 PageRank的随机浏览模型
假定一个上网者从一个随机的网页开始浏览,上网者不断点击当前网页的链接开始下一次浏览。但是,上网者最终厌倦了,开始了一个随机网页。随即上网者用以上方式访问一个新网页的概率就等于这个网页的PageRank值。
这种随机模型更加接近于用户的浏览行为,一定程度上解决了Rank Leak和Rank Sink 的问题,保证了PageRank具有唯一值。
随机浏览模型图的表示:
设定任意两个顶点之间都有直接通路,在每个顶点处以概率d按照原来蓝色方向转移,以概率1-d按红色方向转移。
由于网页数目巨大,网页之间的连接关系的邻接矩阵是一个很大稀疏矩阵,采用邻接表来标示网页之间的连接关系,随机浏览模型的PageRank公式:
N:网络中网页总数
q:阻尼因子,通常设为0.85,q即按照超链接进行浏览的概率
1-q:随机跳转一个新网页的概率
PR(pj):网页pj的PR值
L(pj):网页pj的链出网页数
一个页面的PageRank是由其他页面的PageRank计算得到。Google不断的重复计算每个页面的PageRank。如果给每个页面一个随机PageRank(非零),由于等式R=M*R满足马尔可夫链的性质,如果马尔科夫收敛,则R存在唯一解。通过迭代计算得到所有节点的PageRank值。那么经过不断的重复计算,这些页面的PR值会趋向于正常和稳定。
PageRank值是一个特殊矩阵中的特征向量,这个特征向量为:
该图对应的网页转移矩阵为:
其中每行代表指定节点的出链总数,如第一行表示存在节点A指向节点B和C的链接。列表示对于指定的节点的入链总数,如第一列则表示指向A节点的只有C节点
假设我们在上网的时候浏览页面并选择下一个页面,这个过程与过去浏览过哪些页面无关,而仅依赖于当前所在页面,那么这个选择过程可认为是一个有限状态、离散时间的随机过程,其状态转移规律用马尔科夫链描述。
根据马尔可夫链的基本性质,对于正则马尔可夫链存在平稳分布,满足:
具体例子如下:
因为PR值要平均到每一个链接,因此我们将矩阵每行除以每列的连接数可以得到如下新矩阵:
假设每个节点的初始PR值是1,则有下面的矩阵
其中行代表每个节点。
那么将第一个矩阵转置后得到
将转置的矩阵和初始R矩阵相乘得到矩阵
反复乘以M‘T会得到一个收敛矩阵,这个最终矩阵就是每个节点的PR值。
PageRank算法学习与整理
标签:
原文地址:http://blog.csdn.net/big_flower1024/article/details/51345405