PageRank算法基本原理

算法基本原理

算法思想

PageRank算法的本质是为网站排名,它有两个基本思想:

  1. 被来自其他网站的链接指向的越多,网站排名越高。
  2. 被来自较高排名的网站的链接指向,网站排名越高。​​​​​​

在图中,代表网站的方块越大代表网站排名越高。

下文中“入链”指指向该网站的链接,“出链”指指向其他网站的链接。

PageRank公式

PageRank算法给每个网站赋予了PR值,代表网站的重要程度。

假设互联网共有N个网站,则初始将这N个网站的PR值赋为1/N,然后通过有限次的循环操作,在符合算法基本思想的前提下,得到每个网站的PR值,即可得出网站的重要程度排名。

可以想到,每个网站的PR值由入链所属网站的PR值决定,需要注意的是,入链所属网站对该网站PR值的贡献还受自身出链数影响。

因此可以得出PageRank算法的基本公式:

PR(u)=\sum_{v\in B_{u}}^{}\frac{PR(v)}{N_{v}}

i指循环次数,B_{u}指出链数,N_{v}指出链数

 接下来通过一个例子来让这个公式的原理更加直观。

4个网站和它们的指向关系 

  1. 循环次数为0时,每个网站的PR值被初始化为\frac{1}{4}
    PR值ABCD
    i=0\frac{1}{4}\frac{1}{4}\frac{1}{4}\frac{1}{4}
  2. 循环次数为1时,以A为例,A的入链来自C与D,C的出链数为2,D的出链数为1,因此A的PR值计算公式为 PR(A)=\frac{PR(C)}{2}+PR(D),以此类推,可得到这四个网站此时的PR值
    PR值ABCD
    i=0\frac{1}{4}\frac{1}{4}\frac{1}{4}\frac{1}{4}
    i=1\frac{3}{8}\frac{1}{8}\frac{3}{8}\frac{1}{8}
  3. 循环次数为2时,以A为例,根据上面的分析,PR值计算公式依然为PR(A)=\frac{PR(C)}{2}+PR(D),同理得四个网站的PR值

    PR值ABCD
    i=0\frac{1}{4}\frac{1}{4}\frac{1}{4}\frac{1}{4}
    i=1\frac{3}{8}\frac{1}{8}\frac{3}{8}\frac{1}{8}
    i=2\frac{5}{16}\frac{3}{16}\frac{5}{16}\frac{3}{16}

 PageRank的矩阵化表达

PageRank算法用矩阵表示后,计算效率会大大提高.PageRank算法的矩阵化表达通过转移概率矩阵(马尔可夫矩阵)实现.

矩阵化后计算PR值的公式变为

V_{i+1}=M*V_{i}

M是由N个网站间的指向关系得到的N*N规格的矩阵,矩阵中的数值表示由纵坐标对应的网站指向横坐标对应的网站的概率.

V_{i}是一个N*1矩阵,其中的数值表示第i个循环时这N个网站的PR值.

接下来还是以这张图举例. 

易得,M= \begin{bmatrix} 0 & 0 & \frac{1}{2} &1 \\ \frac{1}{2}& 0 & 0 & 0\\ \frac{1}{2}& 1 & 0 & 0\\ 0 & 0 & \frac{1}{2} & 0 \end{bmatrix}

  1. 循环次数为0时,所有网站的PR值都初始化为\frac{1}{4},即V_{0}=\begin{bmatrix} \frac{1}{4}\\ \frac{1}{4}\\ \frac{1}{4}\\ \frac{1}{4} \end{bmatrix}
  2. 循环次数为1时,V_{1}=\begin{bmatrix} 0 & 0 & \frac{1}{2} &1 \\ \frac{1}{2}& 0 & 0 & 0\\ \frac{1}{2}& 1 & 0 & 0\\ 0 & 0 & \frac{1}{2} & 0 \end{bmatrix}*\begin{bmatrix} \frac{1}{4}\\ \frac{1}{4}\\ \frac{1}{4}\\ \frac{1}{4} \end{bmatrix}=\begin{bmatrix} \frac{3}{8}\\ \frac{1}{8}\\ \frac{3}{8}\\ \frac{1}{8} \end{bmatrix}
  3. 循环次数为2时,V_{2}=\begin{bmatrix} 0 & 0 & \frac{1}{2} &1 \\ \frac{1}{2}& 0 & 0 & 0\\ \frac{1}{2}& 1 & 0 & 0\\ 0 & 0 & \frac{1}{2} & 0 \end{bmatrix}*\begin{bmatrix} \frac{3}{8}\\ \frac{1}{8}\\ \frac{3}{8}\\ \frac{1}{8} \end{bmatrix}=\begin{bmatrix} \frac{5}{16}\\ \frac{3}{16}\\ \frac{5}{16}\\ \frac{3}{16} \end{bmatrix}

可以看出,矩阵化表达所得PR值结果与公式计算结果相同,效率大大提高。 

Dead Ends问题

出现原因

当某个网站没有出链时,网站的PR值会随着循环次数的增加趋向于0.

以此图为例:

由PageRank算法的基本原理,我们可以得到:

PR值ABC
0\frac{1}{3}\frac{1}{3}\frac{1}{3}
10\frac{2}{3}0
2000

在有限次循环中,所有网站的PR值都会归零.

解决方法:Teleport

修正M,将M赋值为M+a^{T}(\frac{e}{N})

a=[a_{0},a_{1},a_{2},......a_{N}],当M的第i列都为0(即没有出链)时,a_{i}=1,其他情况下a_{i}=0.

e是由1填满的列矩阵.

N为网站总数.

 上例中,原来的M为\begin{bmatrix} 0 &0 &0 \\ 1 & 0 &1 \\ 0 & 0 & 0 \end{bmatrix},修正后的M为\begin{bmatrix} 0 & \frac{1}{3} &0 \\ 1 & \frac{1}{3} &1 \\ 0 & \frac{1}{3} & 0 \end{bmatrix}

修正后得到每次的PR值为

PR值ABC
0\frac{1}{3}\frac{1}{3}\frac{1}{3}
1\frac{1}{9}\frac{7}{9}\frac{1}{9}
2\frac{7}{27}\frac{13}{27}\frac{7}{27}

 可以看出,每个网站的PR值不在趋向于0,而是逐渐收敛于固定值。

修正公式

PR(u)=(M+a^{T}(\frac{e}{n}))*V

a=[a_{0},a_{1},a_{2},……a_{n}],当有一列全为0时(即该节点无出链时),a_{i}=1,其他时候a_{i}=0.

e是由1填满的列矩阵。

n是M矩阵的行数/列数。

V为PR值的矩阵。

Spider Traps问题

出现原因

 某个节点只有指向自身的出链,而没有指向其他节点的出链。

以这张图为例,其中节点A的出链指向它自己。

三个节点的PR值如下表所示:

PR值ABC
0\frac{1}{3}\frac{1}{3}\frac{1}{3}
1\frac{2}{3}\frac{1}{6}\frac{1}{6}
2\frac{5}{6}\frac{1}{12}\frac{1}{12}

可以看出,随着循环次数增加,A的PR值趋向于1,其他结点的PR值趋向于0.这是由于若在某一刻跳转到A网页后,就无法再跳转到B和C网页,导致A的PR值不断积累。

解决方法:Random Teleport

将节点图转换为列概率转移矩阵,然后修正M。即认为在上例中,浏览网页A时有一定概率随机跳转到B或C,从而避免了一直停留在网页A中。

还是以上面的图为例,原来的M=\begin{bmatrix} 1 &\frac{1}{2} &\frac{1}{2} \\ 0& 0 &\frac{1}{2} \\ 0& \frac{1}{2} & 0 \end{bmatrix},不妨假设跟随出链打开网页的概率\beta=0.85.

则可以将M修正为\beta*M+(1-\beta)*\frac{ee^{T}}{n}=\begin{bmatrix} \frac{9}{10} &\frac{19}{40} &\frac{19}{40} \\ \frac{1}{20} & \frac{1}{20} &\frac{19}{40} \\ \frac{1}{20}& \frac{19}{40} & \frac{1}{20} \end{bmatrix}

ee^{T}表示由1填满的n*n矩阵。

PR值ABC
0\frac{1}{3}\frac{1}{3}\frac{1}{3}
1\frac{37}{60}\frac{23}{120}\frac{23}{120}
2\frac{1769}{2400}\frac{631}{4800}\frac{631}{4800}

 可以看出,这次B与C的PR值不在快速趋向0,而是缓慢收敛。

修正公式

PR(u)=(\beta*M+(1-\beta)*\frac{ee^{T}}{n})*V

\beta是跟随出链打开网站的概率。

ee^{T}表示由1填满的n*n矩阵。

 

 

 最终修正公式

PR(u)=(\beta*(M+a^{T}*(\frac{e}{n}))+(1-\beta)*\frac{ee^{T}}{n})*V

\beta是跟随出链打开网站的概率。

M是由N个网站间的指向关系得到的N*N规格的矩阵,矩阵中的数值表示由纵坐标对应的网站指向横坐标对应的网站的概率.

a=[a_{0},a_{1},a_{2},……a_{n}],当有一列全为0时(即该节点无出链时),a_{i}=1,其他时候a_{i}=0.

e是由1填满的列矩阵。

n为M矩阵的行数或列数。

ee^{T}表示由1填满的n*n矩阵。

V是一个N*1矩阵,其中的数值表示第i个循环时这N个网站的PR值.

PageRank算法的优缺点

优点

  1. 通过网页之间的链接来决定网页的重要性,一定程度消除了人为对排名结果的影响。
  2. 离线计算PageRank值,而非查找时计算,提高了查询的效率。

缺点

  1. 存在时间久的网页,PageRank值会越来越大,而新生网页PageRank值增长较慢。
  2. 非查询相关的特性,查询结果会偏离搜索内容。
  3. 可能会有通过”僵尸“网站或链接,人为刷PageRank值的操作。 

 

 

PageRank算法的历史贡献

  1. 该算法实现了对网页重要性的量化评估,为搜索引擎提供了有效的排序依据。
  2. PageRank算法的提出和成功应用引发了学术界和工业界对网页排名算法的广泛关注和研究。随后出现了许多基于链接分析的网页排名算法,如HITS算法、TrustRank算法等,这些算法在PageRank算法的基础上进行了改进和扩展。

参考资料:课程导读_哔哩哔哩_bilibili课程导读是【帅器学习/林木】PageRank算法的第1集视频,该合集共计10集,视频收藏或关注UP主,及时了解更多相关视频内容。icon-default.png?t=N7T8https://www.bilibili.com/video/BV1m4411P76G?p=1&vd_source=50096e948432cf0be6a4a0f8e1638c8e

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值