码迷,mamicode.com
首页 > 编程语言 > 详细

Machine Learning:PageRank算法

时间:2017-08-07 11:59:11      阅读:205      评论:0      收藏:0      [点我收藏+]

标签:network   ctr   idt   原因   mod   ...   核心   权重   递归   

1. PageRank算法概述

         PageRank,网页排名,又称网页级别Google左側排名佩奇排名。

        在谷歌主导互联网搜索之前, 多数搜索引擎採用的排序方法, 是以被搜索词语在网页中的出现次数来决定排序——出现次数越多的网页排在越前面。 这个判据不能说毫无道理, 由于用户搜索一个词语。 通常表明对该词语感兴趣。

既然如此, 那该词语在网页中的出现次数越多, 就越有可能表示该网页是用户所须要的。 可惜的是, 这个貌似合理的方法实际上却行不大通。

由于依照这样的方法, 不论什么一个象祥林嫂一样翻来复去倒腾某些关键词的网页, 不管水平多烂, 一旦被搜索到。 都立马会 “金榜题名”, 这简直就是广告及垃圾网页制造者的天堂。 

        是Google创始人拉里·佩奇和谢尔盖·布林于1997年构建早期的搜索系统原型时提出的链接分析算法,自从Google在商业上获得空前的成功后。该算法也成为其他搜索引擎和学术界十分关注的计算模型。

眼下许多重要的链接分析算法都是在PageRank算法基础上衍生出来的。PageRank是Google用于用来标识网页的等级/重要性的一种方法。是Google用来衡量一个站点的好坏的唯一标准。在揉合了诸如Title标识和Keywords标识等全部其他因素之后,Google通过PageRank来调整结果,使那些更具“等级/重要性”的网页在搜索结果中另站点排名获得提升,从而提高搜索结果的相关性和质量。其级别从0到10级,10级为满分。PR值越高说明该网页越受欢迎(越重要)。比如:一个PR值为1的站点表明这个站点不太具有流行度,而PR值为7到10则表明这个站点很受欢迎(或者说极其重要)。

一般PR值达到4。就算是一个不错的站点了。Google把自己的站点的PR值定到10,这说明Google这个站点是很受欢迎的,也能够说这个站点很重要。

 

2. 从入链数量到 PageRank

        在PageRank提出之前,已经有研究者提出利用网页的入链数量来进行链接分析计算。这样的入链方法如果一个网页的入链越多,则该网页越重要。早期的非常多搜索引擎也採纳了入链数量作为链接分析方法,对于搜索引擎效果提升也有较明显的效果。 PageRank除了考虑到入链数量的影响,还參考了网页质量因素,两者相结合获得了更好的网页重要性评价标准。
对于某个互联网网页A来说,该网页PageRank的计算基于下面两个基本如果:
     数量如果:在Web图模型中,如果一个页面节点接收到的其它网页指向的入链数量越多,那么这个页面越重要。
     质量如果指向页面A的入链质量不同。质量高的页面会通过链接向其它页面传递很多其它的权重。所以越是质量高的页面指向页面A。则页面A越重要。
       利用以上两个如果。PageRank算法刚開始赋予每一个网页同样的重要性得分,通过迭代递归计算来更新每一个页面节点的PageRank得分,直到得分稳定为止。 PageRank计算得出的结果是网页的重要性评价,这和用户输入的查询是没有不论什么关系的,即算法是主题无关的

如果有一个搜索引擎。其相似度计算函数不考虑内容相似因素,全然採用PageRank来进行排序,那么这个搜索引擎的表现是什么样子的呢?这个搜索引擎对于随意不同的查询请求,返回的结果都是同样的。即返回PageRank值最高的页面。

 

3. PageRank算法原理

      PageRank的计算充分利用了两个如果:数量如果质量如果。过程例如以下:
      1)在初始阶段网页通过链接关系构建起Web图,每一个页面设置同样的PageRank值,通过若干轮的计算,会得到每一个页面所获得的终于PageRank值。

随着每一轮的计算进行。网页当前的PageRank值会不断得到更新。

      2)在一轮中更新页面PageRank得分的计算方法:在一轮更新页面PageRank得分的计算中,每一个页面将其当前的PageRank值平均分配到本页面包括的出链上,这样每一个链接即获得了对应的权值。而每一个页面将全部指向本页面的入链所传入的权值求和,就可以得到新的PageRank得分。当每一个页面都获得了更新后的PageRank值,就完毕了一轮PageRank计算。 

 

3.2 基本思想:

       假设网页T存在一个指向网页A的连接,则表明T的全部者觉得A比較重要,从而把T的一部分重要性得分赋予A。这个重要性得分值为:PR(T)/L(T)

     当中PR(T)为T的PageRank值,L(T)为T的出链数

        则A的PageRank值为一系列类似于T的页面重要性得分值的累加。

        即一个页面的得票数由全部链向它的页面的重要性来决定,到一个页面的超链接相当于对该页投一票。一个页面的PageRank是由全部链向它的页面(链入页面)的重要性经过递归算法得到的。一个有较多链入的页面会有较高的等级,相反假设一个页面没有不论什么链入页面,那么它没有等级。

3.3 PageRank简单计算:

       如果一个由仅仅有4个页面组成的集合:A。B,C和D。如果全部页面都链向A,那么A的PR(PageRank)值将是B,C及D的和。

       技术分享

       继续如果B也有链接到C,而且D也有链接到包含A的3个页面。一个页面不能投票2次。所以B给每一个页面半票。以相同的逻辑,D投出的票仅仅有三分之中的一个算到了A的PageRank上。

       技术分享

      换句话说,依据链出总数平分一个页面的PR值。

       技术分享

样例:

        如图1 所看到的的样例来说明PageRank的详细计算过程。

  

       技术分享                    

       

 

3.4  修正PageRank计算公式:

         因为存在一些出链为0。也就是那些不链接不论什么其它网页的网。 也称为孤立网页,使得非常多网页能被訪问到。

因此须要对 PageRank公式进行修正。即在简单公式的基础上添加了阻尼系数(damping factor)q。 q一般取值q=0.85。

      其意义是。在随意时刻,用户到达某页面后并继续向后浏览的概率。 1- q= 0.15就是用户停止点击。随机跳到新URL的概率)的算法被用到了全部页面上,估算页面可能被上网者放入书签的概率。

      最后。全部这些被换算为一个百分比再乘上一个系数q。因为以下的算法,没有页面的PageRank会是0。

所以,Google通过数学系统给了每一个页面一个最小值。

      技术分享

     这个公式就是.S Brin 和 L. Page 在《The Anatomy of a Large- scale Hypertextual Web Search Engine Computer Networks and ISDN Systems 》定义的公式。

     所以一个页面的PageRank是由其它页面的PageRank计算得到。Google不断的反复计算每一个页面的PageRank。假设给每一个页面一个随机PageRank值(非0),那么经过不断的反复计算,这些页面的PR值会趋向于正常和稳定。

这就是搜索引擎使用它的原因。

 

4. PageRank幂法计算(线性代数应用)

4.1 完整公式:

关于这节内容,能够查阅:谷歌背后的数学

首先求完整的公式:

Arvind Arasu 在《Junghoo Cho Hector Garcia - Molina, Andreas Paepcke, Sriram Raghavan. Searching the Web》 更加准确的表达为:

 技术分享

技术分享是被研究的页面。技术分享技术分享链入页面的数量,技术分享技术分享链出页面的数量。而N是全部页面的数量。

PageRank值是一个特殊矩阵中的特征向量。这个特征向量为:

技术分享

 

R是例如以下等式的一个解:

技术分享

假设网页i有指向网页j的一个链接,则

技术分享

否则技术分享=0。

4.2 使用幂法求PageRank

      那我们PageRank 公式能够转换为求解技术分享的值。

      当中矩阵为 A = q  × P + ( 1 一 q) * 技术分享 /N 。 P 为概率转移矩阵,技术分享为 n  维的全 1 行. 则 技术分享=

      技术分享

     幂法计算步骤例如以下:
      X  设随意一个初始向量, 即设置初始每一个网页的 PageRank值均。一般为1.

     R = AX;

     while  (1 )(

            if ( l X - R I  <  技术分享) { //假设最后两次的结果近似或者同样。返回R

                  return R;

           }    else   {

                X =R;

               R = AX;

         }

    }

4.3 求解步骤:

一、 P概率转移矩阵的计算过程:

        先建立一个网页间的链接关系的模型,即我们须要合适的数据结构表示页面间的连接关系。

      1) 首先我们使用图的形式来表述网页之间关系:

       如今如果仅仅有四张网页集合:A、B、C。其抽象结构例如以下图1:

        技术分享

                                    网页间的链接关系

      显然这个图是强连通的(从任一节点出发都能够到达另外不论什么一个节点)。

      2)我们用矩阵表示连通图:

       用邻接矩阵 P表示这个图中顶点关系 。假设顶(页面)i向顶点(页面)j有链接情况 。则pij   =   1 ,否则pij   =   0 。

如图2所看到的。

假设网页文件总数为N 。 那么这个网页链接矩阵就是一个N x N  的矩 阵 。

 

      3)网页链接概率矩阵

       然后将每一行除以该行非零数字之和,即(每行非0数之和就是链接网个数)则得到新矩阵P’,如图3所看到的。

这个矩阵记录了 每一个网页跳转到其它网页的概率。即当中i行j列的值表示用户从页面i 转到页面j的概率。

图1 中A页面链向B、C,所以一个用户从A跳转到B、C的概率各为1/2。

      4)概率转移矩阵P

       採用P’ 的转置矩 阵进行计算, 也就是上面提到的概率转移矩阵P 。  如图4所看到的:

     

     技术分享      技术分享技术分享
         图2  网页链接矩阵:                                      图3  网页链接概率矩阵:  
 
技术分享 技术分享

                         图4  P’ 的转置矩 阵

 

二、 A矩阵计算过程。


      1)P概率转移矩阵  :

       技术分享

      2)技术分享/N 为:

     技术分享

      3)A矩阵为:q  × P + ( 1 一 q) * 技术分享 /N = 0.85  × P + 0.15  *技术分享 /N

     技术分享

      初始每一个网页的 PageRank值均为1 , 即X~t = ( 1 , 1 。 1 ) 。 

三、 循环迭代计算PageRank的过程

       第一步:

       技术分享

          由于X 与R的区别较大。 继续迭代。

          第二步:

           技术分享

       继续迭代这个过程...

      直到最后两次的结果近似或者同样,即R终于收敛。R 约等于X,此时计算停止。终于的R 就是各个页面的 PageRank 值。

用幂法计算PageRank 值总是收敛的。即计算的次数是有限的。

 

      Larry Page和Sergey Brin 两人从理论上证明了不论初始值怎样选取,这样的算法都保证了网页排名的预计值能收敛到他们的真实值。

      因为互联网上网页的数量是巨大的。上面提到的二维矩阵从理论上讲有网页数目平方之多个元素。

假设我们假定有十亿个网页,那么这个矩阵 就有一百亿亿个元素。这样大的矩阵相乘,计算量是很大的。

Larry Page和Sergey Brin两人利用稀疏矩阵计算的技巧,大大的简化了计算量。

 

5. PageRank算法优缺点

长处

        是一个与查询无关的静态算法。全部网页的PageRank值通过离线计算获得。有效降低在线查询时的计算量,极大降低了查询响应时间。

缺点:

       1)人们的查询具有主题特征,PageRank忽略了主题相关性,导致结果的相关性和主题性减少

        2)旧的页面等级会比新页面高。由于即使是非常好的新页面也不会有非常多上游链接。除非它是某个网站的子网站。

 

 

 參考文献:

维基百科http://en.wikipedia.org/wiki/Page_rank

PageRank算法的分析及实现

《这就是搜索引擎:核心技术具体解释》

Machine Learning:PageRank算法

标签:network   ctr   idt   原因   mod   ...   核心   权重   递归   

原文地址:http://www.cnblogs.com/gavanwanggw/p/7297776.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!