您的位置:首页 > 运维架构

简单PageRank的理解

2017-11-18 02:27 204 查看
最近由于要考试涉及PageRank算法在Hadoop上的实现,因此学习了一下PageRank的简单模型。主要学习资料为网易公开课上的一个大约半小时的视频,:http://open.163.com/movie/2015/4/E/5/MAL6BDF3J_MALTODME5.html

基本介绍

PageRank主要通过网页间互相的链接关系来确定网页的重要性(等级),同时一个重要的网页指向的网页也认为是较为重要的(爱屋及乌?)。下面是视频中的图片,后面也可能还有:



假设有A,B,C三个网页的链接关系如下:



(右边是其有向图的矩阵表示,Mij=1表示有i指向j的边)

我们把A,B,C比喻为三个水池,假设只要有某个水池向外的箭头那么其中的水会全部流出,这样最后其最后剩余的水量(权值)只取决于流入量。这样我们就将一个网页的等级计算转换为其他链接指向他的权值运算。

上图第一行描述了A的流出,其流向B的概率为M12=1,进行归一化处理(0~1之间的值)为 1/(0+1+1) =1/2。同理流向C的概率也为1/2。这样我们得到一个概率矩阵:



根据值V决定于流入量的原则有:

Va = 1/1 * (上一次的)Vb     ;即第一列
Vb = 1/2 * (上一次的)Va + 1/1 * (上一次的)Vb        ;即第二列
Vc = 1/2 * (上一次的)Va     ;即第三列


给定一列初始值,按照上面的公式就行迭代,最终会得到A,B,C的稳定不变的值。这样理解,A,B, C是深度不同的水池,水通过管道(链接)在其间互相流动,最后总会处于一个平衡的状态(连通器原理)。水池深度越深水量越多其等级也就越高。

在上面的公式中,概率的取值是按列取值的 ,为了进行矩阵的运算得到一维矩阵(描述n个网页等级),一定是(概率P,网页W, Pnn * Wn1 –> Rn1)。这样计算时就要求以行的形式取概率值,因此进行转置概率矩阵。

可能遇到的问题:



leak泄露问题: A就像一个无底洞,其他节点的水迟早会全部流进A导致这些节点值为0,而设计上A的值是受链接他的节点的值影响的,这样就会导致全为0,就像水全部泄露出去了。



**sink(沉没问题):**A点只有流出,一开始计算就为0,沉到底了没法和其他节点进行交流。

解决办法:

上述问题的原因无非是某个节点的出度或者入度为0,我们只要假设任意一个节点都有一定概率达到其他节点,引入阻尼系数α, 这样完整的概率矩阵类似于:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息