pagerank 算法简介

Posted 纯纯的心儿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pagerank 算法简介相关的知识,希望对你有一定的参考价值。


1. 概述: 

① 数量假设;在web图模型中,如果一个页面节点接受到的其他网页指向的入链数量越多,那么这个页面就越重要,

②质量假设:指向页面A的入链质量不同,质量高的页面,会通过链接像 其他页面传递更多的权重,所以越是质量

高的页面指向页面A,则页面 A就越重要。


2.计算: 

(1)假设只有4个页面组成的集合,ABCD,结果所有都指向A,那么A的PR为PR(A)=PR(B)+PR(C)+PR(D). 

假设D指了三个页面,B指了AC,则PR(A)=PR(B)/2+PR(C)+PR(D)/3;

PR(A)=PR(B)/L(B)+PR(C)/L(C)+PR(D)/L(D);

 (2) 修正: 加一个阻尼系数,使没有的页面的PR为0.  PR(A)=(PR(B)/L(B)+PR(C)/L(C)+PR(D)/L(D))*Q+1-q;


幂法问题: 


是被研究的页面,链入页面的数量,链出页面的数量,

N是所有页面的数量。

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

 

R是如下等式的一个解:

如果网页i有指向网页j的一个链接,则

否则=0。

 使用幂法求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;

        

   

求解步骤:

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

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

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

       现在假设只有四张网页集合:A、B、C,其抽象结构如下图1:

        

                                     图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 值总是收敛的,即计算的次数是有限的。

(上述摘自http://blog.csdn.net/hguisu/article/details/7996185)


而在一个服务组合的问题当中,比如在政府采购的和信誉评价的问题当中,

我们需要考虑 服务  机构, 用户之间的一个信誉的问题。 然后我们可以添加一系列的链接,

如发布链接,信任链接,熟知链接和评价链接等,在服务组合的问题中,常常会遇到冷启动,数据

稀疏性的问题,那么我们想,如果可以对于一个新的用户或者新的服务来说,我们无法对其进行一些推荐

或者评价等,所以,我们就得借助一种临近用户的感知,通过二者用户的一些属性特征进行评估相似度,

借助这个相似度,我们可以通过临近用户对指定服务的评价来进行当前活跃用户(active user) 进行服务评价。

此外,在拥有用户、服务、机构等的相似度的同时,我们可以对一些服务或用户的行为进行预测,比如: A小姐和B

先生,A小姐和B先生的相似度有99%(当前只是一个假设值),那么这个相似度是通过一系列的服务属性进行研究得出的,

在我们不知道B先生的一些爱好的时候,我们可以结合A小姐的兴趣对B先生进行一个推荐,这也是服务组合在推荐过程中

的一个重要的环节。

 注:上述的图片用于 guisu的博客,谢谢。

陆续更新。。。。。


以上是关于pagerank 算法简介的主要内容,如果未能解决你的问题,请参考以下文章

pagerank 算法简介

PageRank算法原理与Python实现

数据挖掘十大算法之PageRank连接分析算法

使用 Spark GraphX 实现 PageRank 算法

如何评价pagerank算法?

pagerank算法