第三讲
矩阵特征值计算
—— 应用:Google 网页排名
2
网站排名是网络搜索引擎的核心本讲主要介绍 PageRank 算法的基本思想与模型,
以及如何使用该算法对网站进行排名
PageRank
PageRank 是著名网络搜索引擎 Google 用于评测一个网页“重要性” 或 “影响力” 的一种方法。通过该方法,Google 将各个网站进行排名。用户进行相关搜索时,Google 会将符 合条件的网站按排名顺序输出。
PageRank 算法中使用的数学知识包括:正矩阵性质、特征 值和特征向量、幂迭代算法、Gauss-Seidel迭代算法等
PageRank 得分越大表示网页越重要。有 向 图
4
有向图的定义、相关术语和部分性质
例:右图为一个有向图,记为
D,
其顶点组成的集合记为
V(D) = { u, v, w}
边组成的集合记为
A(D) = {(u,w), (w,u), (u,v)}
有向图介绍
有向图是指由有限个元素的非空集合和它的不同元素构成的 有序数对组成的结构。
注:(u,w) 和(w,u) 表示不同的边。
图的基本元素:顶点(节点)和边(线、弧、枝)
有向图 D 的顶点集的基数称为D 的阶,记作 p(D)
边组成的集合的基数称为D 的大小,记作 q(D)
顶点v
的出度 (out-degree) 是指从v
邻接的顶点的个数,或 以v
为起点的边的条数,记作od(v)
顶点v
的入度(in-degree)是指 D 中邻接到v
的顶点的个数,或以
v
为终点的边的条数,记作id(v)
有向图相关术语
6
例:右下图为一个有向图,记为 D,则
p(D)=3
D 的阶:
D 的大小:
顶点 u 的出度:
顶点 u 的入度:
顶点 v 的出度:
顶点 v 的入度:
q(D)=3
od(u)=2 id(u)=1 od(v)=0
id(v)=1
有向图举例
p(D)=6,q(D)=9
序号 顶点 入度 出度
1
alpha2 1
2
beta1 2
3
gamma1 3 4
delta2 1
5
rho1 1
6
sigma2 1
例:左图中
有向图举例
8
为研究需要,我们定义邻接矩阵
例:对于右边的有向图,其邻接矩阵为
邻接矩阵
性质一:定义行和 和列和 ,则 第 i 行的行和 r
i就是第 i 个顶点的入度,第 j 列的列 和 n
j就是第 j 个顶点的出度。
i ij
j
r = ∑ g
j iji
n = ∑ g
性质二:
i j( ) =边的个数
i j
r = n = q D
∑ ∑
邻接矩阵的性质
行和 ↔ 入度,列和 ↔ 出度
10
PageRank 数学模型
Google 的
PageRank
是基于这样一个理论:若 B 网页上有连接到 A 网站的链接 ( 称 B 为 A 的导入链接 ),
说明 B 认为 A 有链接价值,是一个“重要”的网站,此时 A网 站可从 B网站分得一定的级别 ( 重要性 )。
同时 A 的级别将平均分配给 A网站上的所有导出链接。
导入链接:链接到你网站的站点,即“外部链接”;
导出链接:网站上指向另外一个站点的链接。
在 PageRank 模型中,一个网站的级别(重要性)大致由下面 两个因素决定:导入链接的数量和导入链接的级别(重要性)。
PageRank 的决定因素
12
如果我们将下面的有向图中的每个顶点看成一个网站,并把每 条边看成是网站间的 “超链接”,则此有向图就代表一个小型 的网络,其中有 6 个网站和 9 个超链接。
例: 这 6 个 网站 中哪个最重要 ?
重要性的决定因素:
导入链接的数量
导入链接的重要性 看谁的导入链接多?不太合理
哪个网页最重要
设
u
是某个网页,其级别(重要性)为r(u),记 F
u 为u
的导 出链接的集合,B
u 为u
的导入链接的集合,n
u= |F
u|
即是u
的导出链接总数。设
v
是u
的一个导入链接,根据 PageRank 理论,u 从v
处分 得的级别(重要性)为r(v)/n
v 。将u
从所有导入链接处分得 的重要性相加,即为网页u
的最终级别( ) ( )
v B
uv
r u r v
∈ n
= ∑
简化的 PageRank 算法
14
设共有
m
个网页,分别编号为1
、2
、3
、...、m
,它们的级别(重要性)分别记为
r
1、r
2、r
3、...、r
m,G
表示由这些网页组成的有向图 的邻接矩阵。根据有向图理论:( ) ( )
v Bu v
r u r v
∈
n
= ∑
1 m
ij
i j
j j
r g r
= n
= ∑ G 中第 j
列的列和
r = G m ⋅ r
简化的PageRank模型
其中 r = ( , , r r
1 2 , r
m)
T{ / }
m ij j
G = g n
易知 r 是 G
m的对应于特征值为 1 的特征向量
矩阵 G
m一定有特征值 1 吗?即上面的方程是否有解?
如果
0 1,则 r
1= r
2,此时就无法进行排名
1 0 G
=
因此,我们需要对简化的 PageRank 进行改进!
简化PageRank的问题
r = G m ⋅ r
16
设 η (u) 是网页 u 的所获得的基本级别,则
( )
( ) ( )
v B
uv
x u p x v u
n η
∈
= ∑ +
改进的 PageRank
基本思想:首先给每个网页设置一个基本级别
其中: x(u) 表示网页 u 的最终级别
p 是一个加权系数,通常取 0.85 左右
η (u)= (1 – p )/m ≡ δ
矩阵 形式
与前面的讨论相类似,将所有网页进行编号:
1 、 2 、 ... 、 m
x = ⋅ p G m ⋅ + ⋅ x δ e (
1,
2, , )
(1,1, ,1)
T n T
x x x x
e
=
=
1 n
ij
i j
j j
x p g x
n δ
=
= ∑ + ( i = 1, 2, , m )
改进的 PageRank
( )
( ) ( )
v Bu v
x u p x v u
n η
∈
= ∑ +
于是可以把右式改写为:
18
改进的 PageRank
x = ⋅ p G m ⋅ + ⋅ x δ e
{ / }
m ij j
G = g n G m = ⋅ G D
其中: diag
1 2
1 1 1
(
ij),
m
G g D , , ,
n n n
= =
x = ⋅ ⋅ ⋅ + ⋅ p G D x δ e
x = ⋅ ⋅ ⋅ + ⋅ p G D x δ e 规定:
11
n i i
x
=
∑ =
1 p G D x δ e
= ⋅ ⋅ ⋅ + ⋅ ⋅
p G D x δ e e x
T= ⋅ ⋅ ⋅ + ⋅ ⋅
( p G D δ e e
T) x
= ⋅ ⋅ + ⋅ ⋅
11
n
T i
i
x e x
=
= ∑ =
x = ⋅ A x
记 A = ⋅ ⋅ + ⋅ p G D δ ee
Tx 是 A 的对应于特征
值 λ=1 的特征向量。
改进的 PageRank
20
改进的 PageRank
11 12 11 2
21 22 2
1 2
1 2
1 2
m m
m m
m m mm
m
g
g g
p p p
n n n
g
g g
p p p
n n n
A
g g g
m m
p p p
n n n
δ δ δ
δ δ δ
δ δ δ
+ + +
+ + +
=
+ + +
×
矩阵 A 的两个重要性质:
(1) A>0 ,即所有元素都是正数
(2) A 的各列的列和等于 1 δ = (1 – p )/m
j ij
i
n = ∑ g
若矩阵
G
中存在0 列,即存在 j
使得对所有的i
有g
ij= 0,则
将导致n
j= 0
, 此时规定:( 1, , , )
1 2
g
iji m
n m
= =
=
改进的 PageRank
1
11 12
1 2
2
21 22
1 2
1 2
1 2
m m
m m
m m mm
m
g
g g
n n n
g
g g
n n n
A p
g g g
n n n
δ
= ⋅ +
22
x = ⋅ A x
问:上述方程组的解是否存在?
答:上述方程组存在唯一的解!(且均为正数)
理由: Perron-Frobnius 定理(证明略)
x 满足:
1
1
n
i i
x
=
∑ =
改进的 PageRank
A 的谱半径
A 的各列的列和等于 1 e
T⋅ = A e
T( ) 0
e
TI − A =
| I − A | 0 = λ = 1 是 A 的特征值
事实上,我们有结论:
λ = 1 是 A 的
惟一的模最大特征值,即其他特征值的模均严格小于 1。
问: λ = 1 是 A 的特征值吗?
24
序号 顶点 入度 出度
1 alpha 2 1
2 beta 1 2
3 gamma 1 3
4 delta 2 1
5 rho 1 1
6 sigma 2 1
例:
用改进的 PageRank 算法计算下面的小型网络中各网页 的排名,其中取p =0.85。
网页排名举例
clear; % Eig11.m
p = 0.85; % 此处 p 也可以取其它数值
G = [0 0 0 1 0 1; 1 0 0 0 0 0; 0 1 0 0 0 0; ...
0 1 1 0 0 0; 0 0 1 0 0 0; 0 0 1 0 1 0];
n = size(G,1);
sn = sum(G); % 提取每列的列和 D = diag(1./sn); % 生成对角矩阵 delta = (1-p)/n;
A = p*G*D + delta;
[v,d] = eig(A); % 计算 A 的特征值与特征向量 r = v(:,idx); % 最大特征值所对应的特征向量 r = r./sum(r); % 归一化
[x,index] = sort(r,'descend'); % 排序
网页排名举例
26
数值算法
幂法
当矩阵 A 的阶数很大时,无法直接计算其特征值和特征向量,
此时需要使用迭代算法。
x = A x , x
满足:1
1
n i i
x
=
∑ =
幂法
1)
输入矩阵A
和初始向量v
0> 0
,以及精度tol
2)
计算:;
3)
如果|v
k+1- v
k| < tol ,
则令x = v
k+1 并停机,否则转第二步。
1
1 1
1
,
sum( )
k
k k k
k
u Av v u
u
+ + +
+
= =
28
例:
采用幂迭代法计算下面各网页的排名,其中p =0.85
。幂法举例
clear; % Eig12.m
tol = 1e-4; p = 0.85;
G = [ 0 0 0 1 0 1; 1 0 0 0 0 0; 0 1 0 0 0 0;
0 1 1 0 0 0; 0 0 1 0 0 0; 0 0 1 0 1 0 ];
n = size(G,1);
sn = sum(G,1); D = diag(1./sn);
delta = (1-p)/n;
A = p*G*D + delta;
x = ones(n,1)/n; % 迭代初始向量 z = zeros(n,1);
k = 0; % 记录迭步数
while max(abs(x-z)) > tol % 幂法 z = x;
x = A*x;
k = k+1;
end[x1,index]=sort(x,'descend');
幂法举例
30
在前面给出的程序中,如果矩阵 G 中存在某一列的列和为 零,怎么办?
一个修改后的 Matlab 程序(Eig13.m
)另一个解决方案见
Eig14.m
,它充分利用稀疏矩阵的性质,当矩阵规模较大时,能大大减少运算量。
一个问题
( 1, , , )
1 2
ij
j