MapReduce作业之--实现网页排名算法PageRank(1)

来源:互联网 发布:如何查看购买的域名 编辑:程序博客网 时间:2024/05/17 02:47

  今天准备写MapReduce的第四个作业,实现PageRank算法,在实现本算法之前,首先得了解PageRank算法,下面根据课堂笔记,以及网上的资料简单介绍一下PageRank。

  一、搜索引擎

    搜索引擎的功能主要是:根据用户输入的关键字,返回文档的链接结果。
    搜索引擎主要解决的三大问题:(1)如何获取文档资料  (2)如何根据关键词检索到相关文档  (3)如何对文档进行排序,返回给用户满意的页面
    

   1.1获取文档资料

    利用爬虫程序,获取互联网的页面资料。爬虫技术先从一个网页出发,将该网页的内容记录下来,保存到资料库,接着分析页面中的超链接,分别递归得去获取超链接页面。

   1.2 如何根据关键词检索到相关文档

    采用倒排索引算法。简单的说,倒排索引是一对key-value对,key代表关键词,value代表拥有这些关键词的文档编号或者url。

   1.3 文档排序

     这是搜索引擎最核心的问题,也是google发家致富的法宝 -- PageRank算法。

     何为PageRank算法?它是一种计算网页排名的算法。早期搜索引擎对排名的做法是:不做任何排序或者评价,可想而知,用户体验多差;或者根据关键词出现的次数和频率进行排序,但会造成Term Spam。Term Spam就是指一些广告页面或者垃圾页面人为的添加一些隐藏标签,该标签内放置大量的关键词,造成该页面关键词出现的次数和频率都较高,所以相应的该页面的排名也会靠前。在此背景下,goole提出了PageRank算法。


  二、PageRank算法

    PageRank的主要思想就是:被许多优质页面链接的网页本身也应该是优质的。所以一个网页的权重,即pr值主要看两点:(1)有多少网页链接它 (2)是否有质量高的网页链接它。

   2.1 简单PageRank模型

    我们可以将互联网上的网页链接关系看成是一个有向图,每个网页代表一个节点,网页的链接关系为有向图的边。
    如图,假设有三个网页,他们的链接关系如下。对应的图模型为右边的模型

   对于任意的页面pi,它的pr值计算依靠别人对它的链接,即统计所有指向的它的页面权重和,也就是说别人对它的贡献值。

   例如上图中53的获取,是左上页面100/2 加上左下页面9/3获得。这里我们假设从一个页面链接出去的其它所有页面可以平均获得该页面的权重。

   上述过程可以用矩阵乘法表示。
   我们定义一个转移矩阵,代表图模型之间的链接关系,表示从一个节点转移到下一个节点的概率。例如下图
    
    转移矩阵为:,其中Mij表示第j个节点对第i个节点的贡献值。M12表示节点B对节点A的贡献,因为B链接了A、C,所以将其权重一份为二,分别给A和C。

    每个节点的初始权重为
    此时R=MR即可获得一次迭代之后每一个节点新的pr值,多次迭代,得到收敛,即获得每个页面的最终的权重结果,根据该结果就可以对网页排序。

   2.2 PageRank算法的收敛性

    PageRank算法的有效性在于是否能够收敛,如果不能收敛,该算法将是没有意义的。
    由于R=MR满足马尔科夫链性质,如果马尔科夫链收敛,则一定能得到唯一解R。
    下面介绍一下马尔科夫链收敛定理:
     
    对于任意的初始值,当迭代次数n趋向无穷时,总能收敛到一个常数,并且该常数是稳定的。
    该定理保证了PageRank算法的有效性。


    2.3 简单模型带来的问题

     PageRank简化模型主要面临两个问题:(1)rank leak  (2)rank sink
     (1)rank leak指的是某个节点只有入度,没有出度,经过几次迭代之后,会发现所有节点的权重都变为0
     
     (2)rank sink指的某个节点只有出度,没有入度,会造成该节点的权重最后变为0
    

      2.4 PageRank随机浏览模型

           用户的浏览行为其实不仅仅只是浏览某个页面,然后点击该页面中的某个链接,进行下一个页面访问。有时候用户浏览完某个页面之后,会随机浏览另外的页面,而不是根据该页面的链接。因此PageRank随机浏览模型更贴近用户的行为方式。
         
         在简单模型中,转移矩阵为M,在新模型中转移矩阵表示为:
,因此R=M‘ *R,其中R为每个节点的pr值,是一个列向量, M’是新的转移矩阵,d为阻尼系数,一般设为0.85左右

       随机浏览模型的主要优点在于:
      (1)更加符合用户的行为
      (2)解决了rank leak和rank sink问题
      (3)保证算法收敛到唯一值


     以上简单介绍了一下PageRank算法,下面一节将介绍如何用MapReduce并行化该算法。

     注:以上大多数图片来源于黄宜华老师的课件。

   

    
     
    
0 0
原创粉丝点击