我特地把PageRank作为【十大经典数据挖掘算法】系列的收尾篇,是因为本人是Google脑残粉。因了PageRank而Google得以成立,因了Google而这个世界变得好了那么一点点。
1. 引言
PageRank是Sergey Brin与Larry Page于1998年在WWW7会议上提出来的,用来解决链接分析中网页排名的问题。在衡量一个网页的排名,直觉告诉我们:
- 当一个网页被更多网页所链接时,其排名会越靠前;
- 排名高的网页应具有更大的表决权,即当一个网页被排名高的网页所链接时,其重要性也应对应提高。
对于这两个直觉,PageRank算法所建立的模型非常简单:一个网页的排名等于所有链接到该网页的网页的加权排名之和:
的外链数( the number of out-links)。
假定
所对应的转移矩阵,
可改写为矩阵相乘:
但是,为了获得某个网页的排名,而需要知道其他网页的排名,这不就等同于“是先有鸡还是先有蛋”的问题了么?幸运的是,PageRank采用power iteration方法**了这个问题怪圈。欲知详情,请看下节分解。
2. 求解
为了对上述及以下求解过程有个直观的了解,我们先来看一个例子,网页链接关系图如下图所示:
那么,矩阵
即为
所谓power iteration,是指先给定一个
,然后通过多轮迭代求解:
最后收敛于
应满足如下三个性质:
- stochastic matrix,则行至少存在一个非零值,即必须存在一个外链接(没有外链接的网页被称为dangling pages);
- 不可约(irreducible),即矩阵
- 的路径;
- 非周期性(aperiodic),即每个节点存在自回路。
显然,一般情况下矩阵
为单位向量;同时为了满足性质不可约、非周期,需要做平滑处理:
其中,
被改写为
3. 参考资料
[1] Bing Liu and Philip S. Yu, "The Top Ten Algorithms in Data Mining" Chapter 6.