PageRank大法好!

1. Introduction

20世纪90年代,谷歌公司上市并很快成为最具影响力的搜索引擎。谷歌的脱颖而出要归功于它所提供的搜索结果总会把一些“好东西”排在前面,方便用户搜索。与此形成强烈对比的是,如果利用其它搜索引擎,你需要遍历所有搜索结果(包含很多无关信息),从而得到你想获取的信息和资源。谷歌背后的神奇之处就在于PageRank算法。PageRank算法将每个网页的重要性进行量化,从而使其具有可排序性(建立了偏序关系),这样使用户更早地获取到最重要、最相关的网页信息。

我们如果能了解PageRank的计算方法,就可以合理的设计网页,从而获取更多的访问量和点击量。事实也是如此,由于谷歌在搜索方面的主导地位,它的排序系统对于整个互联网的发展和架构起到了重要的影响。这篇文章将解释谷歌计算网页重要性排序的核心思想。这个核心思想又必然地成为了线性代数的华丽的应用。

一个搜索引擎需要做以下三件事情:

  1. 网络爬虫,获取所有可以公开访问的网页;
  2. 将所有网页标号,这样可以根据关键词或短语进行快速查找;
  3. 在数据库中按照网页重要性得分进行排序。这样,当用户进行搜索时,更重要的网页信息就会排在前面。

本文着重分析第三步。在一个互连的网络中,如何定义并且合理量化网页的重要性呢?

2. 推导排序公式

2.1 基本思想

在这一部分,我们用“重要性得分”或者“得分”来度量某个网页的在网络中的重要性。显然,重要性得分一定是一个非负实数。我们的核心思想是:给定任意一个网页,它的得分应该和其他网页与其链接的链接数紧密相关(更准确地说是正相关)。这些链接被称为该给定网页的后向链接backlinks)。可以想象,这样一来,整个网络形成了一种民主投票机制:网页得票数越多(后向链接数越多),它就将被视为越重要。

图2.1 具有四个网页的网络。由A指向B的箭头表示从网页A到网页B的链接

不失一般性地,我们考查某一个包含 n 个网页的网络,每个网页按序号记为正整数 k1<=k<=n . 如图2.1给出了一个例子,该网络包含4个网页,箭头从1指向4代表网页1有到网页4的链接,其他箭头同理。这样的网络在数学上是一个有向图directed graph)。网页 k 的得分记为 xk ,则 xk 是一个非负实数,并且 xj>xk 表示网页 j 的重要性高于网页 k 。注意到 xj=0 表示网页 j 具有最低的重要性得分。

根据核心思想(给定任意一个网页,它的得分应该和其他网页与它链接的链接数成正相关),我们很容易想到用网页 k后向链接数作为网页 k 的重要性得分。因此,在图2.1所给的例子中,我们有 x1=2 , x2=1 , x3=3 , x4=2 。排序后可知,网页3最重要,网页1和4并列第二,网页2最不重要。可以想象,网页 k 的一个后向链接就好比是对于网页 k 的重要性的一票。

然而,这种简单粗暴的方法忽略了一个对于排序算法来说非常重要的特性,即,给定网页 k ,来自一个重要性很高的网页的链接会比一个来自不太重要的网页的链接更多地提升网页 k 的重要性。比如,对于你的个人主页,来自雅虎网页的链接应该比一个来自不知名网页的链接更大程度上提升你个人主页的重要性。再比如,对于图2.1所示的网络中,网页1和网页4都有两个后向链接:网页1的后向链接来自网页4和看起来比较重要的网页3,网页4的后向链接来自网页2和相对不那么重要的网页1。由此,我们得到的重要性排序结果应该网页1高于网页4。

为了引入这个重要思想,我们重新定义重要性计算公式。对于网页 j,其重要性得分定义为其所有后向链接网页的得分的总和。举个例子,我们重新考虑图2.1所示的网络。网页1的得分为 x1=x3+x4 。注意到,由于 x3x4 又同时依赖于 x1,因此这种定义方式看起来是一种自引用(self-referential)的模式。正如在一项选举中,我们不希望某一个候选人仅仅通过给其他人投更多的票数来间接地得到更多的影响力。同样地,我们不希望一个网页仅仅简单地通过链接了更多其他的网页而获取额外的影响力(或者说重要性)。因此我们还需对刚刚的定义稍作修改。假设网页 j 包含 nj 个链接,其中一个链接指向网页 k ,那么这个链接将对网页k的重要性得分贡献 xj/nj,而不是 xj 。由此,我们正式给出重要性得分的定义。对于一个包含 n 个网页的网络,记 Lk1,2,,n 为具有指向网页 k 的链接的网页的集合,即 Lk 为网页 k 的后向链接网页的集合。那么对于每一个 k,我们定义其重要性得分:
xk=jLkxjnj

其中 n_j 为网页 j 的出度(outgoing links)个数(注意到,n_j 一定是正整数,因为 j 属于 L_k,因此它至少会link到网页 k)。同时我们还假设,自环不会对重要性得分有贡献。也就是说,如果回到我们的比喻中,在这样一个民主投票机制下,我们不允许自投票。

下面,让我们将该定义用在图2.1的例子中去。我们很容易得到如下方程组:
\begin{align*} &x_1=x_3/1+x_4/2 \\ &x_2=x_1/3 \\ &x_3=x_1/3+x_2/2+x_4/2 \\ &x_4=x_1/3+x_2/2 \\ \end{align*}
接下来,我们开始使用高级的数学工具了——线性代数和矩阵,这将会使整个事情变得简明、优美、清晰,我们定义重要性得分向量\mathrm x=[x_1\ x_2\ x_3\ x_4]^T, 我们很容易将上面的方程组写成矩阵的形式 \mathrm {Ax}=\mathrm x,其中:
\mathrm A=\left[ \begin{matrix} 0 & 0 & 1 &\frac12 \\ \frac13 & 0 & 0 & 0 \\ \frac13 & \frac12 & 0 & \frac12\\ \frac13 & \frac12 & 0 & 0 \end{matrix} \right] \tag{2.2}
这个骚操作就把网页排序问题转换为了线代中寻找一个方阵的特征向量(eigenvector)的问题(方阵 \mathrm A 的特征值 λ 和特征向量 \mathrm x 满足方程 \mathrm {Ax}=λ\mathrm x , \mathrm x \neq \mathrm 0)。因此,求解的重要性得分向量就是在求解矩阵 \mathrm A 的特征值为 1<script type="math/tex">1</script> 的特征向量 \mathrm x。我们将这样的矩阵 \mathrm A 称为给定网络的链接矩阵(link matrix)。

利用线性代数的知识(根据 det(\mathrm A-\mathrm I) = 0 ,求解特征根,再求解特征根 \lambda=1 对应的齐次方程组),我们很容易求解出对应的特征向量,为任意实数倍的 [12\ 4\ 9\ 6]^T。由于任意非0实数倍的特征向量还是特征向量,因此我们可以将重要性得分向量按照一范数归一化,使分量的和为1。在这个例子中,x_1=\frac{12}{31}=0.386 , x_2=\frac4{31}=0.129 , x_3=\frac9{31}=0.290 , x_4=\frac6{31}=0.194 。注意到这种计算方式和简单的统计后向链接数大不相同。另一个值得注意的方面是,表面上来看,被其他所有网页链接的网页3,出乎意料地,竟不是具有最高重要性得分的网页。为了理解这个现象,我们需要注意到网页3仅仅链接网页1,所以网页3会将所有得票汇集贡献给网页1,这样的一种“间接”投票(或者说影响)使得网页1得到更高的票数(重要性得分)。

然而,在这个例子中,链接矩阵A具有特征值为1的特征向量并不是巧合。在数学上,我们可以严格证明,对于没有孤立点(dangling nodes:pages with no outgoing links)的网络,其链接矩阵是一定存在特征值为1的特征向量的。这是由于链接矩阵的列和为1导致的!下面我们来严格证明这个优美的结论。首先我们需要给出马尔科夫链中的一个定义:

定义2.1 一个方阵被称为列随机矩阵(column-stochastic matrix)当且仅当它的所有元素都为非负且列和(按列加和所有元素)为1。

The matrix A for a web with no dangling nodes is column-stochastic.

定理1. 任意列随机矩阵A都有特征值为1的特征向量。

证明: 若方阵 \mathrm Acolumn-stochastic matrix\mathrm en<script type="math/tex">n</script> 维entries全为1的列向量。因为 \mathrm A\mathrm A^T 的具有相同的特征值(det(\mathrm A-\lambda \mathrm I) =det(\mathrm A^T-\lambda \mathrm I)),且 \mathrm A 的列和为1,因此有 \mathrm A^T\mathrm e = \mathrm e。因此 \mathrm A^T\mathrm A 有特征值为1的特征向量。

在后面的讨论中,我们用 V_1(\mathrm A) 来表示列随机矩阵 \mathrm A 的特征值为1所对应的特征向量所张成的特征空间(eigenspace)。

2.2 缺陷

利用式(2.1)来定义给定网页在网络中的重要性得分会存在一些困难,我们讨论其中的两种情形:

  1. 网页排序不唯一(webs with non-unique rankings);
  2. 存在孤立节点(webs with dangling nodes);
2.2.1 Non-Unique Rankings

到目前为止,在我们所做的一切假定和定义下,如果所得到的特征空间的维数为1(即,该特征空间的基的个数为1),那么我们就可以通过归一化找到一个唯一特征向量 \mathrm x\sum_ix_i=1)作为重要性得分向量,这是我们期待的最好情况,图2.1所示的网正是如此。事实上可以证明对于一个强连接的网(任意两个节点在有限步可达),这样的解是唯一的。但是,情况并不总是这样。

我们容易找出网页排序不唯一的例子(链接矩阵的特征值为1所对应的特征空间维数大于1),如图2.2:

图2.2 包含5个网页,由两个互不相连的子网组成

其链接矩阵为:
\mathrm A=\left[ \begin{matrix} 0 & 1 &0 &0 & 0\\ 1 & 0 &0 &0 & 0\\ 0 & 0 &0 & 1 & \frac12\\ 0 & 0 &1 & 0 & \frac12\\ 0 & 0 &0 &0 & 0 \end{matrix} \right] \tag{2.3}
对于这样的链接矩阵 \mathrm A,我们可以计算得到 V_1(\mathrm A) 是二维的,它的两个可能的基分别是 \mathrm x=[\frac12,\frac12, 0, 0, 0]^T\mathrm y=[0, 0, \frac12, \frac12, 0]^T ,代表两种可能的得分排序。糟糕的是,基之间的任意线性组合仍然属于V_1(\mathrm A)(subspace的封闭性),这样我们就会得到无穷且不可数的排序,那到底该选哪一个特征向量作为排序指标呢?

图2.2的网络由性质 dim(V_1(\mathrm A))>1,并不是巧合。更一般地,对于一个无向网 W 来说,假设它是由 r 个不连通的子网组成,分别记为 W_1, …, W_r ,则有 dim(V_1(\mathrm A))>=r , 因此就导致有无穷多个特征向量可以成为重要性得分向量。这在直观上也很容易理解:对于这 r 个互相不连通的子网络来说,各自成体系,要比较来自两个不同子网络的网页重要性自然很困难。

为啥会有这个性质呢,继续证明一发。

假设给定网络 Wn 个网页,包含 r 个子网络 W_1, …, W_r 。 记 n_i 为子网 W_i 所包含的网页个数,因此该网 W 的链接矩阵就形如一个分块对角结构:
\mathrm A=\left[ \begin{matrix} \mathrm A_1 & 0 & \cdots & 0\\ 1 & \mathrm A_2 &0 &0 \\ 0 & \vdots &\ddots & 0 \\ 0 & 0 &0 & \mathrm A_r \end{matrix} \right] \tag{2.4}
其中 \mathrm A_iW_i 的链接矩阵,每个 \mathrm A_in_i \times n_i 的列随机矩阵,因此每个 \mathrm A_i 都有唯一的特征值为1所对应的归一化后的特征向量 v_i \in \mathbb R^{n_i},我们将它们拼接在一块可以得到整个矩阵 \mathrm A 的特征值为1的一系列特征向量:
\mathrm w^1=\left( \begin{array}{c} \mathrm v^1 \\ 0\\ 0\\ \vdots \\ 0 \end{array} \right) , \ \mathrm w^2=\left( \begin{array}{c} 0 \\ \mathrm v^2 \\ 0 \\ \vdots \\ 0 \end{array} \right) ,\ ... \tag{2.5}
很容易证明这些特征向量 \mathrm w^i, 1\leq i\leq r是线性无关的,因此整个特征空间 V_1(\mathrm A) 至少是由这些特征向量张成的,即 dim(V_1(\mathrm A))>=r

2.2.2 Dangling Nodes

另一个问题就是孤立点的存在。如果一个网中存在孤立点,那么这个网所对应的链接矩阵就包含一个或者多个全零列。在这种情况下,我们称A为列次随机(column-substochastic),即它的列和都是小于或者等于1的。可以证明这样矩阵的特征值都是小于或等于1的。然而,孤立点的存在不会阻碍我们利用类似的方法对网页进行排序。其中涉及到的一些困难,本文不予论述了。

3. dim(V_1(\mathrm A))>1 的解决方案

对于一个包含几十亿网页的网络来说,为链接矩阵计算一次特征向量需要大量的计算资源。因此我们设计的算法最好可以只产生唯一的网页排名。但是通常情况下,网是不连通的,包含很多的彼此不连通的子网络,根据前面的分析,对于这样的网络链接矩阵的特征值为1的特征向量有无穷多个。这就带来了技术上的矛盾和困难。

下面我们会针对这个问题,引入一个调整方案,从而有效的克服这个困难。这个方案实际上是Perron-Frobenius定理的特例。

3.2 改进链接矩阵 \mathrm A

对于包含 n<script type="math/tex">n</script> 个网页的网络,我们定义 \mathrm Sn 阶方阵,每个元素都是 1/n ,很容易证明 \mathrm S 矩阵是列随机矩阵,并且 V_1(\mathrm S) 是一维的。我们定义矩阵 \mathrm M 为:
\mathrm M=(1-m) \mathrm A +m\mathrm S \tag{3.1}
其中 0\leq m\leq 1\mathrm M 矩阵其实就是 \mathrm A\mathrm S 的加权平均。m 是超参,谷歌原始的设置是 m=0.15。 对于任意 m\in[0,1] , \mathrm M 是列随机矩阵,我们可以证明对于任意 m\in (0,1])V_1(\mathrm M) 的dim一定为1。因此 \mathrm M 矩阵可以用来计算重要性得分向量。当 m=0 时,有 \mathrm M=\mathrm A,即原始问题;当 m=1 时,有 \mathrm M=\mathrm S,最终得到的特征值1对应的特征向量 \mathrm xx_i=1/n ,即该网络中所有页面得分相等,排序并列第一。

等式 \mathrm x=\mathrm M\mathrm x 可以写成:
\mathrm x=(1-m) \mathrm {Ax}+m\mathrm s \tag{3.2}
其中 \mathrm s 是entries全为 1/n 的列向量,因为 \mathrm {Sx}=\mathrm s\sum_ix_i=1

下面来证明一下为啥对于任意 m\in (0,1])V_1(\mathrm M) 的dim一定为1。

定义3.1. 如果对任意 ij 都有 M_{ij}>0 ,则矩阵 \mathrm Mpositive 的。

定理2. If \mathrm M is positive and column-stochastic, then any eigenvector in V_1(\mathrm M) has all positive or all negative components.

证明:y_i 是mixed sign时,显然有不等式 |\sum_iy_i|\leq \sum_i|y_i| 成立。假设 \mathrm x\in V_1(\mathrm M) 向量中的entries也是mixed sign的。根据 \mathrm x=\mathrm M\mathrm x x_i=\sum^n_{j=1}M_{ij}x_jM_{ij}x_j 也是mixed sign的(M_{ij}>0),因此有下列不等式成立:
|x_i|=|\sum^n_{j=1}M_{ij}x_j|<\sum^n_{j=1}M_{ij}|x_j| \tag{3.3}

将式3.3从 i=1 加到 i=n,之后swap ij,同时利用 \mathrm M 是column-stochastic的性质(\sum_iM_{ij}=1 for all j),得到:
\sum_{i=1}^n|x_i|<\sum_{i=1}^n\sum^n_{j=1}M_{ij}|x_j|=\sum_{j=1}^n(\sum_{i=1}^nM_{ij})|x_j|=\sum_{j=1}^n|x_j| \tag{3.4}

\sum_{i=1}^n|x_i|<\sum_{j=1}^n|x_j| ,显然是矛盾的。因此,\mathrm x 中的元素必定同为 positive 或同为 negative

定理3. Let v and w be linearly independent vectors in \mathbb R^m , m ≥ 2 . Then, for some values of s and t that are not both zero, the vector \mathrm x = s\mathrm v + t\mathrm w has both positive and negative components.

证明:vw 是linearly independent,所以它们一定是non-zero的,令 d=\sum_iv_i,if d=0,则 v 一定是mixed sign的(既然v\neq \mathrm 0 ),将 s=1,t=0 代入,\mathrm x=v ,结论成立;if d\neq0,将 s=-\frac{\sum_iw_i}{d}t=1 代入 \mathrm x = s\mathrm v + t\mathrm w ,有 \sum_ix_i=0 ,然而vw 是independent的,所以 \mathrm x \neq0 ,因此 \mathrm x has both positive and negative components.

引理3.2. If \mathrm M is positive and column-stochastic then V_1(\mathrm M) has dimension 1.

证明: 假设 \mathrm v\mathrm w 是subspace V_1(\mathrm M) 中两个linearly independent的eigenvectors,对于任意的non-zero实数 st,non-zero vector \mathrm x = s\mathrm v + t\mathrm w 一定也在 V_1(\mathrm M) 中(subspace的封闭性),根据定理2,\mathrm x 中的元素要么同为positive,要么同为negative。然而根据定理3,\mathrm x has both positive and negative components. 明显这俩是矛盾的,由此可证 V_1(\mathrm M) 是不可能存在两个linearly independent的eigenvector的。因此我们可以确保存在唯一的eigenvector x\in V_1(\mathrm M) with positive components such that \sum_ix_i=1.

4. 重要性得分的计算方法

在实际应用中,我们并不总需要得到精确的重要性得分,这就意味着,我们不需要利用传统计算特征值的方法来得到重要性得分向量。事实上我们可以利用幂方法(power method)来计算 \mathrm M 矩阵特征向量的数值解。该方法的思想如下:初始化 \mathrm x_0 , 开始进行迭代 \mathrm x_k=\mathrm M\mathrm x_{k-1} ,最终得到 \mathrm x_k=\mathrm M^k\mathrm x_0, 当 k 趋于无穷大时,\mathrm x_k 就可以作为 \mathrm M 的最大特征值(dominant eigenvalue)对应的特征向量。

为了利用幂方法,我们需要知道,除 \lambda=1 以外,\mathrm M 的其他所有特征值 \lambda' 都有 |\lambda'|<1 ,否则 \mathrm M^k 不会收敛(趋近无穷大或0)。我们下面来通过两个定理说明利用幂方法的合理性。

定义4.1. 向量 \mathrm vL_1范数定义为 \lVert \mathrm v \rVert_1=\sum_i|v_i|

定理4. Let \mathrm M be a positive and column-stochastic n\times n matrix, V<script type="math/tex">V</script> denote the subspace of \mathbb R^n consisting of vectors \mathrm v such that \sum_j v_j = 0 (所有元素和为0的vector组成的subspace \mathrm V)。 则对于任意的 \mathrm v\in V 都有 \mathrm {Mv}\in V ,并且 \lVert \mathrm {Mv}\rVert_1\leq c \lVert \mathrm v\rVert_1 。其中 c=\max _{1\leq j\leq n}|1-2\min_{1\leq i\leq n}M_{ij}|<1

证明: \mathrm {Mv}\in V 的证明是很直观的:令 \mathrm {w=Mv} ,有 w_i=\sum^n_{j=1}M_{ij}v_j
\sum_{i=1}^nw_i=\sum_{i=1}^n\sum_{j=1}^nM_{ij}v_j=\sum_{j=1}^nv_j(\sum_{i=1}^nM_{ij})=\sum_{j=1}^nv_j=0

\mathrm w 的元素和也为0,因此 \mathrm {w=Mv}\in V

bound c 的证明略过,嘻嘻。

定理5. 任意positive and column-stochastic的矩阵 \mathrm M 都有唯一的正向量 \mathrm q 满足 \mathrm {Mq=q}\lVert \mathrm q\rVert_1 =1\mathrm q 可以通过计算 \mathrm {q}=\lim_{k\rightarrow \infty}\mathrm {M^kx_0} 得到,其中 \mathrm x_0 是任意初始化的正向量且满足 \lVert \mathrm x_0\rVert_1 =1

证明: 由定理1可知,矩阵 \mathrm M 一定有值为1特征值 \lambda 。又由引理3.2,subspace V_1(\mathrm M) 是1维的,并且 V_1(\mathrm M) 中的non-zero vector中的元素都是全为positive或者全为negative的。因此存在唯一的eigenvector \mathrm q\in V_1(\mathrm M) with positive components such that \sum_iq_i=1.

\mathrm x_0\mathbb R^n 中任意初始化的正向量且满足 \lVert \mathrm x_0\rVert_1 =1 ,则 \mathrm x_0 可以写为 \mathrm {x_0=q+v} ,where \mathrm v\in V as denoted in 定理4(\sum_j v_j = 0),则有 \mathrm {M^kx_0=M^kq+M^kv=q+M^kv} ,即
\mathrm {M^kx_0-q=M^kv} \tag{4.2}
定理4证明了 \lVert \mathrm {M^kv}\rVert_1\leq c^k \lVert \mathrm v\rVert_1 for 0\leq c<1 ,因此 \lim_{k\rightarrow\infty}\lVert \mathrm {M^kv}\rVert_1=0 ,由式4.2最终可以得到 \lim_{k\rightarrow\infty}\mathrm {{M^kx_0}=q}

大功告成嘻嘻!

参考文献
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值