大数据经典算法解析(6)一PageRank算法

姓名:崔升    学号:14020120005

转载自:http://www.cnblogs.com/en-heng/p/5173704.html

【嵌牛导读】:

 PageRank是Sergey Brin与Larry Page于1998年在WWW7会议上提出来的,用来解决链接分析中网页 排名的问题。

【嵌牛鼻子】:分析及解决网页排名问题的著名算法

【嵌牛提问】:PageRank是一种怎么的算法,其如何解决链接分析的网页排名问题呢?

【嵌牛正文】:

 1. 引言

在衡量一个网页的排名,直觉告诉我们:

当一个网页被更多网页所链接时,其排名会越靠前;

排名高的网页应具有更大的表决权,即当一个网页被排名高的网页所链接时,其重要性也应对应提高。

对于这两个直觉,PageRank算法所建立的模型非常简单:一个网页的排名等于所有链接到该网页的网页的加权排名之和:

PRi=∑(j,i)∈EPRjOj(1)(1)PRi=∑(j,i)∈EPRjOj

PRiPRi表示第ii个网页的PageRank值,用以衡量每一个网页的排名;若排名越高,则其PageRank值越大。网页之间的链接关系可以表示成一个有向图G=(V,E)G=(V,E),边(j,i)(j,i)代表了网页jj链接到了网页ii;OjOj为网页jj的出度,也可看作网页jj的外链数( the number of out-links)。

假定P=(PR1,PR2,⋯,PRn)TP=(PR1,PR2,⋯,PRn)T为n维PageRank值向量,AA为有向图GG所对应的转移矩阵,

Aij={1Oi0if(i,j)∈EotherwiseAij={1Oiif(i,j)∈E0otherwise

nn个等式(1)(1)可改写为矩阵相乘:

P=ATP(2)(2)P=ATP

但是,为了获得某个网页的排名,而需要知道其他网页的排名,这不就等同于“是先有鸡还是先有蛋”的问题了么?幸运的是,PageRank采用power iteration方法破解了这个问题怪圈。欲知详情,请看下节分解。

2. 求解

为了对上述及以下求解过程有个直观的了解,我们先来看一个例子,网页链接关系图如下图所示:


大数据经典算法解析(6)一PageRank算法_第1张图片

那么,矩阵AA即为


大数据经典算法解析(6)一PageRank算法_第2张图片

所谓power iteration,是指先给定一个PP的初始值P0P0,然后通过多轮迭代求解:

Pk=ATPk−1Pk=ATPk−1

最后收敛于||Pk−Pk−1||<ξ||Pk−Pk−1||<ξ,即差别小于某个阈值。我们发现式子(2)(2)为一个特征方程(characteristic equation),并且解PP是当特征值(eigenvalue)为11时的特征向量(eigenvector)。为了满足(2)(2)是有解的,则矩阵AA应满足如下三个性质:

stochastic matrix,则行至少存在一个非零值,即必须存在一个外链接(没有外链接的网页被称为dangling pages);

不可约(irreducible),即矩阵AA所对应的有向图GG必须是强连通的,对于任意两个节点u,v∈Vu,v∈V,存在一个从uu到vv的路径;

非周期性(aperiodic),即每个节点存在自回路。

显然,一般情况下矩阵AA这三个性质均不满足。为了满足性质stochastic matrix,可以把全为0的行替换为e/ne/n,其中ee为单位向量;同时为了满足性质不可约、非周期,需要做平滑处理:

P=((1−d)En+dAT)P=((1−d)En+dAT)

其中,dd为 damping factor,常置为0与1之间的一个常数;EE为单位阵。那么,式子(1)(1)被改写为

PRi=(1−d)+d∑(j,i)∈EPRjOjPRi=(1−d)+d∑(j,i)∈EPRjOj

3. 参考资料

[1] Bing Liu and Philip S. Yu, "The Top Ten Algorithms in Data Mining" Chapter 6.

你可能感兴趣的:(大数据经典算法解析(6)一PageRank算法)