图模型-PageRank


PageRank是一种经典的图模型算法,开始提出时用于解决网页重要程度的排序问题,后来通过对算法的改进,也提出一些用于推荐、社会网络分析、自然语言处理等领域的变体算法,比如用于文本摘要的TextRank算法。

PageRank算法的名字一语双关,既隐含了算法提出者之一 Larry Page 的名字,也隐含了算法的提出是为了解决网页排序的问题

其优缺点为:

优点:

  1. 是一个与查询无关的静态算法,所有网页的PageRank值通过离线计算获得
  2. 有效减少在线查询时的计算量,极大降低了查询响应时间。

缺点:

  1. 人们的查询具有主题特征,PageRank忽略了主题相关性,导致结果的相关性和主题性降低
  2. 旧的页面等级会比新页面高。因为即使是非常好的新页面也不会有很多上游链接,除非它是某个站点的子站点。

1. 模型推导

1.1. 基本定义

PageRank模型就是一个含有 \(n\) 个节点的有向图随机游走模型,可以看做是一个一阶马尔科夫链,对此,先进行如下定义

  • 所有节点共享同一个转移矩阵 \(M=[m_{ij}]_{n \times n}\) ,其具有如下性质 \[ m_{ij} \geq 0 \\ \sum_{i}^n m_{ij}=1 \] 其值计算为,若节点 \(j\)\(k\) 个有向边连出,且节点 \(i\) 是其中一个,则 \(m_{ij} = 1/k\),否则,\(m_{ij}=0\)

  • 时刻 \(t\) 的节点访问其他节点的概率分布,即状态分布为 \(R_t=[\text{PR}(v_i)]_n^T\) ,其中 \(\text{PR}(v_i)\) 为节点 \(v_i\) 的PageRank值,其具有如下性质 \[ \text{PR}(v_i) \geq 0 \\ \sum_{i}^n \text{PR}(v_i) = 1 \] 一般初始为 \(\text{PR}(v_i) = 1/n\)

1.2. 学习策略

PageRank的计算基于以下两个基本假设:

  • 数量假设:在图模型中,如果一个节点接收到的其他节点指向的入链数量越多,那么这个节点越重要。
  • 质量假设:指向节点A的入链质量不同,质量高的节点会通过链接向其他节点传递更多的权重。所以越是质量高的节点指向节点A,则节点A越重要。

利用以上两个假设,PageRank算法刚开始赋予每个节点相同的重要性得分,通过迭代递归计算来更新每个节点的PageRank得分,直到得分稳定为止。 PageRank计算得出的结果是网页的重要性评价,这和用户输入的查询是没有任何关系的,即算法是主题无关的。假设有一个搜索引擎,其相似度计算函数不考虑内容相似因素,完全采用PageRank来进行排序,那么这个搜索引擎对于任意不同的查询请求,返回的结果都是相同的,即返回PageRank值最高的页面。

1.2.1. 理想情况

首先,我们来推导理想状态下的PageRank模型的表示形式

理想状态下,PageRank模型应该是一个强连通且非周期的有向图,其状态分布矩阵满足 \(R_{t+1} = M R_t\)

根据马尔科夫链的遍历定理,若马尔可夫链是不可约、非周期且正常返的,则该马尔可夫链有唯一平稳分布,并且转移概率的极限分布是马尔可夫链的平稳分布

假设有向图初始状态分布为 \(R_0\),转移矩阵为 \(M\) ,不断进行 \(R_t = M^tR_0\) 迭代计算,直到 \(M^tR_0\) 不变时,则算法收敛,此时其平稳分布满足 \(MR=R\),每个节点的PageRank值满足 \[ \text{PR}(v_i) = \sum_{v_j \in M(v_i)} \frac{\text{PR}(v_i)} {L(v_j)} \] 其中,\(M(v_i)\) 表示指向节点 \(v_i\) 的节点集合,\(L(v_j)\) 表示节点 \(v_j\) 的连出的有向边的个数

1.2.2. 一般情况

但是,实际情况下,有向图通常并不满足遍历条件,例如,大部分的网页并没有连接出去的链接,即不连通的,于是,我们对PageRank的计算进行一些修正,其平稳分布应满足 \[ R = dMR + \frac{1-d}{n}\vec1 \] 其中,\(d(0\leq d\leq1)\) 为阻尼因子,一般取 \(d=0.85\)

上式可以看做是一个平滑修正,其现实含义是,用户到达某页面后,会有 \(1-d\) 的概率随机跳转到新的页面上。这样,就不会有节点的PageRank值为0了,此时,每个节点的PageRank值满足 \[ \text{PR}(v_i) = d \left(\sum_{v_j \in M(v_i)} \frac{\text{PR}(v_i)} {L(v_j)} \right) + \frac{1-d}{n} \]

1.3. 学习算法

PageRank的学习算法有迭代算法、幂法、代数算法等,最常用的为幂法。

1.3.1. 迭代算法

PageRank的迭代算法的优点是非常简单,即直接按照其定义计算即可,但其缺点是迭代次数可能会很多。

其算法流程如下:

Init: 转移矩阵 \(M\),阻尼因子 \(d\) ,初始向量 \(R_0\)

Repeat: \(R_{t+1} = dMR_t+\frac{1-d}{n}\vec1\)

Until: \(R_{t+1} - R_{t} \leq \delta\)

Output: \(\text{PR}(v_i)\)

1.3.2. 幂法

幂法是一种近似计算矩阵的主特征值和主特征向量的方法。主特征值即绝对值最大的特征值,主特征向量即其对应的特征向量。

将PageRank模型的表示形式表示为 \[ R = \left( dM + \frac{1-d}{n}\vec E \right)R = AR \] 其中,\(\vec E\) 是所有元素为1的n阶方阵。

根据Perron-Frobenius定理,一般PageRank的向量 \(R\) 是矩阵 \(A\) 的主特征向量,主特征值为1,所以可以使用幂法来近似计算。

这里省略幂法的推导过程,直接给出相关计算的结论

对于一个满足 \(x_k = Ax_{k-1}\)的包含 \(k\) 个元素的 \(n\) 维向量序列 \(\{x_0,\cdots,x_k\}\),设 \(A\) 的主特征值为 \(\lambda_1\) ,主特征向量为 \(u_1\)

则,当 \(k \rightarrow \infty\) 时,有 \[ x_k = b_1\lambda_1^k[u_1+\varepsilon] \] 其中,\(b_1\) 是一个常量,\(\varepsilon\) 是一个无穷小量,实际计算时,一般取一个较小的值。

于是,有 \[ x_k \approx b_1\lambda_1^ku_1 \\ x_{k+1} \approx b_1\lambda_1^{k+1}u_1 \]\[ \lambda_1 \approx \frac{x_{k+1}}{x_k} \] 实际计算时,为了避免出现绝对值过大或过小的情况,通常每步迭代后需要进行如下的规范化 \[ y_{t+1} = Ax_t \\ x_{t+1} = \frac{y_{t+1}}{||y_{t+1}||_{\infty}} \] 其中,\(||x||_{\infty}=\max\{|x_1|,\cdots,|x_n|\}\) 是向量的无穷范数

由于 \(R\) 的主特征值为1,即当\(||x_{t+1}-x_{t}||<\varepsilon\) 时,算法收敛,此时 \(R \approx x_t\)

最后对 \(R\) 进行规范化处理,使其表示为概率分布即可。

最终的算法流程整理如下:

Init: 转移矩阵 \(M\),阻尼因子 \(d\) ,初始向量 \(x_0\),计算精度 \(\varepsilon\),一般转移矩阵 \(A = dM+\frac{1-d}{n}\vec E\)

Repeat: \[ y_{t+1} = Ax_t \\ x_{t+1} = \frac{y_{t+1}}{||y_{t+1}||_{\infty}} \]

Until: \(||x_{t+1}-x_{t}||<\varepsilon\)

Output: \(R = \frac{x_{t}}{\sum_i^n x_i}\)

2. references

原论文

《统计学习方法》20章,李航

《数学之美》10章,吴军

PageRank算法_黄规速博客:学如逆水行舟,不进则退-CSDN博客_pagerank


评论
  目录