随机矩阵(stochastic matrix)与 PageRank

来源:互联网 发布:python能做什么游戏 编辑:程序博客网 时间:2024/05/21 19:32

随机矩阵1实际上是一种特殊的非负矩阵(non-negative matrix),非负矩阵是指矩阵元素都是非负(non-negative)的,当然非负要与正矩阵(Positive Matrix,所有元素都大于0)进行细微的区分。

非负矩阵在计算数学、图论、线性规划、自动控制等领域有着广泛的应用,对其特征值,尤其是最大特征值(注意这里的最大时从模的角度或者说在绝对值概念上的最大),也就是矩阵的主特征值(principal/primary eigenvalue)的估计有很重要的意义。

A stochastic matrix has principal/primary eigenvalue 1.

import numpy as npif __name__ == '__main__':    np.random.seed(0)    A = np.random.rand(5, 5)    A /= A.sum(0)               # 列和为1    lmbd, Q = np.linalg.eig(A)    print(lmbd)            # [ 1.00000000+0.j -0.25356414+0.j -0.03024074+0.j             # 0.03303155+0.07419558j  0.03303155-0.07419558j]

随机矩阵说来如此重要,那么到底什么样的矩阵才是随机矩阵呢?假如随便给你一个非负矩阵,该如何判定它是否属于随机矩阵呢?

随机矩阵实际上应当分成左随机矩阵(left stochastic matrix,或者叫 column stochastic matrix:列随机矩阵)和右随机矩阵(right stochastic matrix,或者叫 row stochastic matrix:行随机矩阵)。左随机矩阵的列和为1,右随机矩阵的行和为1,两者在应用上几乎等价,区别仅在于约定。对于那些只满足随机矩阵条件,但有些列(或行)的矩阵元之和小于1的矩阵也有一个名称,叫做亚随机矩阵(substochastic matrix)2。同时满足行和和列和都是1的非负矩阵就是双随机矩阵(double stochastic matrix),单位矩阵就是一种特殊的双随机矩阵。

既然随机矩阵 A 的行和为1,那么假设 e=(1,1,,1),则 e 的转置 eT,即是矩阵的一个特征向量,对应于 A 的特征值为1;

AeT=1eT

这样对于证明随机矩阵的主特征值(矩阵的谱半径)是1还有一定的距离。假设 An 个特征值为λ(i),其中 i=1,2,...,n;若要证明性质成立,则必须证明|λ(i)|<=1。现今有一个特征值是1,只要证明其余各特征值的绝对值都小于等于1即可。又由矩阵的谱范数的性质可知,也即任何矩阵的谱半径都不大于该矩阵的任意诱导矩阵范数,而随机矩阵的 1 范数(列和最大)是1,那么谱半径不大于1。故,1确实是随机矩阵 A 得主特征值。

随机矩阵的主特征值以及 second largest eigenvalue 的比值是幂法收敛速度的一个基本的衡量标准。
ageRank的计算有多种方式,而对此的研究也是不计其数,当然最传统的还是利用幂法来确定抓取入库的各网页的PageRank值。由于web网页的数量巨大,针对幂法收敛速度的考虑就不是多余无用的分析。
两特征值的“谱隙(eigengap)”主要用来衡量利用幂法求解得到的PR值的稳定性。
特征值分析对于理解PageRank算法起到关键作用。

随机矩阵的物理意义

普通马尔科夫随机过程中的转移矩阵通常是随机矩阵(stochastic matrix),即每一列的矩阵元素之和为1的矩阵。也即每一列对应于一个概率分布

Pn+1=HPn

其中 Hij=pji/Nj,所以 H 的每一列其实表示当前节点(也即网页 j)的出度分布。

而我们的矩阵 H 却可能有一些列是零向量(亚随机矩阵),从而 矩阵元之和为0,它们其实对应于那些没有对外链接的网页,即所谓的“悬挂网页”(dangling page)

References


  1. 随机矩阵(stochastic matrix) ↩
  2. 谷歌背后的数学 ↩
0 0