算法--PageRank

概念

PageRank是Google提出的算法,用于衡量特定网页相对于搜索引擎索引中的其他网页而言的重要程度。是Google创始人拉里·佩奇和谢尔盖·布林于1997年创造的PageRank实现了将链接价值概念作为排名因素。

GOOGLE PageRank并不是唯一的链接相关的排名算法,而是最为广泛使用的一种。其他算法还有:

  1. Hilltop 算法
  2. ExpertRank
  3. HITS
  4. TrustRank

思考超链接在互联网中的作用

入链 ====投票

PageRank让链接来“投票“,到一个页面的超链接相当于对该页投一票。

入链数量

如果一个页面节点接收到的其他网页指向的入链数量越多,那么这个页面越重要。

入链质量

指向页面A的入链质量不同,质量高的页面会通过链接向其他页面传递更多的权重。所以越是质量高的页面指向页面A,则页面A越重要。

案例分析 pagerank  PR值

站在A的角度

需要将自己的PR值分给B,D

站在B的角度

收到来自A,C,D的PR值

迭代计算使PR值收敛于稳定值

算法实现

初始值

             Google的每个页面设置相同的PR值

             pagerank算法给每个页面的PR初始值为1。

迭代计算(收敛)

    Google不断的重复计算每个页面的PageRank。那么经过不断的重复计算,这些页面的PR值会趋向于稳定,也就是收敛的状态。

在具体企业应用中怎么样确定收敛标准?

  1. 每个页面的PR值和上一次计算的PR相等
  2. 设定一个差值指标(0.0001)。当所有页面和上一次计算的PR差值平均小于该标准时,则收敛。

PRa - PRa' = |Δ|

  1. 设定一个百分比(99%),当99%的页面和上一次计算的PR相等

算法修正

站在互联网的角度:

        只出,不入:PR会为0

        只入,不出:PR会很高

        直接访问网页

修正PageRank计算公式

增加阻尼系数

在简单公式的基础上增加了阻尼系数(damping factor)d,一般取值d=0.85。
完整PageRank计算公式

        d:阻尼系数

        M(i):指向i的页面集合

        L(j):页面的出链数

        PR(pj):j页面的PR值

        n:所有页面数

数据

A       B       D

B       C

C       A       B

D      B       C

计算ABCD的PR值

B 1/2

D 1/2

A       B       D

分组:所有指向第i个页面的页面的PR值之和。

将所有指向第i个页面的页面分为一组,reduce中迭代计算。

PR初始值是1

L的值

<偏移量,    A        B       D>

A->B

A->D

PRΔB=1/2

PRΔD=1/2

A       B       D

B       C

PRΔC=1

C       A       B

PRΔB=1/2

PRΔA=1/2

D      B       C

PRΔB=1/2

PRΔC=1/2

REDUCE:

PRΔB=1/2

PRΔB=1/2

PRΔB=1/2

PRΔD=1/2

PRΔA=1/2

<A,1/2>

<A,B\tD>

<A,1/2\tB\tD>

PRΔC=1/2

PRΔC=1

<PRA,1/2>

<PRB,3/2>

<PRC,3/2>

<PRD,1/2>

A       1/2   B       D

B       3/2   C

C       3/2   A       B

D      1/2   B       C

输出结果包含:指向关系和PR值

A       1/2   B       D

<B,1/4>

<D,1/4>

<A,1/2      B       D>

解题思路

**MR原语不被破坏

PR计算是一个迭代的过程,首先考虑一次计算

思考:

页面包含超链接

每次迭代将pr值除以链接数后得到的值传递给所链接的页面

so:每次迭代都要包含页面链接关系和该页面的pr值

mr:相同的key为一组的特征

map:

1,读懂数据:第一次附加初始pr值

2,映射k:v

1,传递页面链接关系,key为该页面,value为页面链接关系

2,计算链接的pr值,key为所链接的页面,value为pr值

reduce:

*,按页面分组

1,两类value分别处理

2,最终合并为一条数据输出:key为页面&新的pr值,value为链接关系

猜你喜欢

转载自blog.csdn.net/yaya_jn/article/details/131363111