当前位置:   article > 正文

图机器学习——3.1 PageRank 基础算法_pagerank算法习题

pagerank算法习题

PageRank算法是一种由根据网页之间相互的超链接计算的技术,而作为网页排名的要素之一,以Google公司创办人拉里·佩奇(Larry Page)之姓来命名。实际的网页连接图是一个非常庞大的图结构,通常将节点表示一个一个的网页,节点之间相连接的边表示网页与网页之间的连接关系。PageRank算法就是衡量网页重要性的算法之一。

基础方法介绍

Page Rank算法是一种“流动”的模型,也可以理解成“投票”的想法,来自越重要网页的投票权重占比越高,我们以下图为例,算法有如下特点:

  • 每个连接的投票与其来源页面的重要性成正比;
  • 若页面 i i i具有重要性 r i r_{i} ri,并且有 d i d_{i} di条向外的有向连接,每一个连接将得到 r i / d i r_{i} / d_{i} ri/di票;
  • 页面 j j j所拥有的重要性 r j r_{j} rj为连接到它的投票数之和。

由于重要节点(页面)的票数更多(因为重要性更高),因此,在Page Rank算法中如果一个页面被其他重要页面所指向,那么此页面也是重要的。

下面可以给出具体的定义,我们定义节点 j j j重要性得分为“rank”:

r j = ∑ i → j r i d i r_{j}=\sum_{i \rightarrow j} \frac{r_{i}}{d_{i}} rj=ijdiri

其中, d i d_i di为出度(一个节点向外连接的所有边的个数)。根据上述方程,可以写成矩阵的形式,

r = M ⋅ r \boldsymbol{r}=\boldsymbol{M} \cdot \boldsymbol{r} r=Mr

其中, M \boldsymbol{M} M为列随机邻接矩阵(列和为1),若 i → j i \rightarrow j ij, 则 M j i = 1 d i \boldsymbol{M}_{j i}=\frac{1}{d_{i}} Mji=di1 r \boldsymbol{r} r的每个元素 r i r_i ri为节点(页面) i i i的重要性得分,满足 ∑ i r i = 1 \sum_{i} r_{i}=1 iri=1。下图为一个具体的例子:

下面我们从随机游走的视角来考虑这个问题,将上面的重要性得分 r i r_i ri理解成某一时刻浏览 i i i网页的概率。 t t t时刻的概率我们记为 p ( t ) p(t) p(t)。因此迭代的公式可以记为:

p ( t + 1 ) = M ⋅ p ( t ) \boldsymbol{p}(t+1)=\boldsymbol{M} \cdot \boldsymbol{p}(t) p(t+1)=Mp(t)

当上式满足 M ⋅ p ( t ) = p ( t ) \boldsymbol{M} \cdot \boldsymbol{p}(t) = \boldsymbol{p}(t) Mp(t)=p(t),则称 p ( t ) \boldsymbol{p}(t) p(t)为随机游走的平稳分布。

此时,我们可以将 M \boldsymbol{M} M作为马尔科夫随机矩阵,根据方程:

1 ⋅ r = M ⋅ r 1 \cdot \boldsymbol{r}=\boldsymbol{M} \cdot \boldsymbol{r} 1r=Mr

可知,矩阵 M \boldsymbol{M} M一定有一个值为1的特征值。并且根据 Gershgorin circle theorem 可得,马尔科夫矩阵的任意一个特征值的绝对值都不大于1。因此1即为矩阵 M \boldsymbol{M} M的主特征值(最大特征值),而幂迭代法便是通过迭代来计算矩阵的主特征值与其对应特征向量的方法。最终的特征向量就是我们所需要的稳定之后的重要性得分向量 r \boldsymbol{r} r

算法迭代过程如下( N N N为节点/网页个数):

  • 初始化: r ( 0 ) = [ 1 / N , … , 1 / N ] T \boldsymbol{r}^{(0)}=[1 / N, \ldots, 1 / N]^{T} r(0)=[1/N,,1/N]T
  • 迭代: r ( t + 1 ) = M ⋅ r ( t ) \boldsymbol{r}^{(t+1)}=\boldsymbol{M} \cdot \boldsymbol{r}^{(t)} r(t+1)=Mr(t)
  • 停止条件: ∥ r ( t + 1 ) − r ( t ) ∥ 1 < ε \left\|\boldsymbol{r}^{(t+1)}-\boldsymbol{r}^{(t)}\right\|_{1}<\varepsilon r(t+1)r(t)1<ε

下面为前面介绍的y-a-m图迭代示例:

( r y r a r m ) = ( 1 / 3 1 / 3 1 / 3 ) ( 1 / 3 3 / 6 1 / 6 ) ( 5 / 12 1 / 3 3 / 12 ) ( 9 / 24 11 / 24 1 / 6 ) … ( 6 / 15 6 / 15 3 / 15 ) \left(

ryrarm
\right)=\left(
1/31/31/3
\right) \quad\left(
1/33/61/6
\right) \quad\left(
5/121/33/12
\right) \quad\left(
9/2411/241/6
\right) \quad \ldots \quad\left(
6/156/153/15
\right) ryrarm=1/31/31/31/33/61/65/121/33/129/2411/241/66/156/153/15

下面考虑三个问题:

  • 迭代算法是否收敛?
  • 算法是否收敛到我们期望的值?
  • 最终的结果是否合理?

关于这三个问题的回答,我们将在下个博客中进行阐述。

参考

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/526271
推荐阅读
相关标签
  

闽ICP备14008679号