算法基本原理
算法思想
PageRank算法的本质是为网站排名,它有两个基本思想:
- 被来自其他网站的链接指向的越多,网站排名越高。
- 被来自较高排名的网站的链接指向,网站排名越高。
在图中,代表网站的方块越大代表网站排名越高。
下文中“入链”指指向该网站的链接,“出链”指指向其他网站的链接。
PageRank公式
PageRank算法给每个网站赋予了PR值,代表网站的重要程度。
假设互联网共有N个网站,则初始将这N个网站的PR值赋为1/N,然后通过有限次的循环操作,在符合算法基本思想的前提下,得到每个网站的PR值,即可得出网站的重要程度排名。
可以想到,每个网站的PR值由入链所属网站的PR值决定,需要注意的是,入链所属网站对该网站PR值的贡献还受自身出链数影响。
因此可以得出PageRank算法的基本公式:
PR(u)=
i指循环次数,
指出链数,
指出链数
接下来通过一个例子来让这个公式的原理更加直观。
4个网站和它们的指向关系
- 循环次数为0时,每个网站的PR值被初始化为
.
PR值 A B C D i=0 - 循环次数为1时,以A为例,A的入链来自C与D,C的出链数为2,D的出链数为1,因此A的PR值计算公式为 PR(A)=
+PR(D),以此类推,可得到这四个网站此时的PR值
PR值 A B C D i=0 i=1 -
循环次数为2时,以A为例,根据上面的分析,PR值计算公式依然为PR(A)=
+PR(D),同理得四个网站的PR值
PR值 A B C D i=0 i=1 i=2
PageRank的矩阵化表达
PageRank算法用矩阵表示后,计算效率会大大提高.PageRank算法的矩阵化表达通过转移概率矩阵(马尔可夫矩阵)实现.
矩阵化后计算PR值的公式变为
=M*
M是由N个网站间的指向关系得到的N*N规格的矩阵,矩阵中的数值表示由纵坐标对应的网站指向横坐标对应的网站的概率.
是一个N*1矩阵,其中的数值表示第i个循环时这N个网站的PR值.
接下来还是以这张图举例.
易得,M= 。
- 循环次数为0时,所有网站的PR值都初始化为
,即
=
- 循环次数为1时,
=
*
=
- 循环次数为2时,
=
*
=
可以看出,矩阵化表达所得PR值结果与公式计算结果相同,效率大大提高。
Dead Ends问题
出现原因
当某个网站没有出链时,网站的PR值会随着循环次数的增加趋向于0.
以此图为例:
由PageRank算法的基本原理,我们可以得到:
PR值 | A | B | C |
0 | |||
1 | 0 | 0 | |
2 | 0 | 0 | 0 |
在有限次循环中,所有网站的PR值都会归零.
解决方法:Teleport
修正M,将M赋值为M+(
)
a=[
,
,
,......
],当M的第i列都为0(即没有出链)时,
=1,其他情况下
=0.
e是由1填满的列矩阵.
N为网站总数.
上例中,原来的M为,修正后的M为
修正后得到每次的PR值为
PR值 | A | B | C |
0 | |||
1 | |||
2 |
可以看出,每个网站的PR值不在趋向于0,而是逐渐收敛于固定值。
修正公式
PR(u)=(M+(
))*V
a=[
,
,
,……
],当有一列全为0时(即该节点无出链时),
=1,其他时候
=0.
e是由1填满的列矩阵。
n是M矩阵的行数/列数。
V为PR值的矩阵。
Spider Traps问题
出现原因
某个节点只有指向自身的出链,而没有指向其他节点的出链。
以这张图为例,其中节点A的出链指向它自己。
三个节点的PR值如下表所示:
PR值 | A | B | C |
0 | |||
1 | |||
2 |
可以看出,随着循环次数增加,A的PR值趋向于1,其他结点的PR值趋向于0.这是由于若在某一刻跳转到A网页后,就无法再跳转到B和C网页,导致A的PR值不断积累。
解决方法:Random Teleport
将节点图转换为列概率转移矩阵,然后修正M。即认为在上例中,浏览网页A时有一定概率随机跳转到B或C,从而避免了一直停留在网页A中。
还是以上面的图为例,原来的M=,不妨假设跟随出链打开网页的概率
=0.85.
则可以将M修正为*M+(1-
)*
=
e
表示由1填满的n*n矩阵。
PR值 | A | B | C |
0 | |||
1 | |||
2 |
可以看出,这次B与C的PR值不在快速趋向0,而是缓慢收敛。
修正公式
PR(u)=(*M+(1-
)*
)*V
是跟随出链打开网站的概率。
e
表示由1填满的n*n矩阵。
最终修正公式
PR(u)=(*(M+
*(
))+(1-
)*
)*V
是跟随出链打开网站的概率。
M是由N个网站间的指向关系得到的N*N规格的矩阵,矩阵中的数值表示由纵坐标对应的网站指向横坐标对应的网站的概率.
a=[
,
,
,……
],当有一列全为0时(即该节点无出链时),
=1,其他时候
=0.
e是由1填满的列矩阵。
n为M矩阵的行数或列数。
e
表示由1填满的n*n矩阵。
V是一个N*1矩阵,其中的数值表示第i个循环时这N个网站的PR值.
PageRank算法的优缺点
优点
- 通过网页之间的链接来决定网页的重要性,一定程度消除了人为对排名结果的影响。
- 离线计算PageRank值,而非查找时计算,提高了查询的效率。
缺点
- 存在时间久的网页,PageRank值会越来越大,而新生网页PageRank值增长较慢。
- 非查询相关的特性,查询结果会偏离搜索内容。
- 可能会有通过”僵尸“网站或链接,人为刷PageRank值的操作。
PageRank算法的历史贡献
- 该算法实现了对网页重要性的量化评估,为搜索引擎提供了有效的排序依据。
- PageRank算法的提出和成功应用引发了学术界和工业界对网页排名算法的广泛关注和研究。随后出现了许多基于链接分析的网页排名算法,如HITS算法、TrustRank算法等,这些算法在PageRank算法的基础上进行了改进和扩展。