文章目录
Kaisa主讲
公式输入请参考: 在线Latex公式
Internet网络的图结构及概念复习
将Internet网络中网页看做节点,把超链接看做有向边。
网页的分类老师提到两类,早期多是静态HTML,属于第一类,典型的就是hao123网站。以下内容来自:http://www.thuir.org/group/~YQLiu/thesis/05Content.pdf
导航类(Navigational):目标是查找某个特定的站点或者网页。如“上海
市政府网站”、“清华大学招生简章”等(摘自百度网站“搜索风向标”栏目,
下同)。
信息事务类(Informational):目标是获取可能位于一个或某几个网页上的
信息。如“现代企业制度的形式”、“农村党员队伍状况” 等。
事务类(Transactional):目标是查找能够处理某些以 Web 为媒介的事务的
网页。如“连连看下载”、“歌词查询”等。
In/Out-component:指图中那些节点能够到达当前节点的集合(包含当前节点在内)/指图中从当前节点可以到达那些节点的集合(包含当前节点在内)
Strongly connected components of the graph:强连通分量(SCC)是满足以下性质的节点的集合 S S S:
- 在 S S S中的任何一对节点都可以互相到达
- 没有包含 S S S的更大的集合满足上述性质
所有有向图都是基于它的强连通分量的有向无环图。就是将有向图中的所有强连通分量看做一个节点,那么这些新节点组成的新有向图(原来图中的强连通分量)是一个有向无环图(环都变成节点了,当然就变成无环图了呀)
这个结论对于今天要学习的算法还蛮重要。
因此先要学会找强连通分量(隐含上周作业解决方案。。。):
找出一个图的In/Out-component两个集合,求他们的交集,就是该图的SCC
经过科学家(大佬们)的实验,得出结论:Bowtie Structure of Web
PageRank:给网页的“重要性”排名
创建搜索引擎有三步:
1.使用爬虫类工具爬取网页数据并建库
2.创建倒排索引(inverted index),使得搜索引擎可以快速根据关键词找到包含这个词的网页
3.用PageRank根据重要性对搜索结果进行排序
本次课主要针对第三点进行讲解,早期的搜索引擎对于网页重要性排序有两种方式:
1.不排序,直接出结果
2.根据关键字匹配数量进行排序(网页可以针对这个算法大量注入大量关键字)
对于Pagerank算法:
基本的PageRank算法
PageRank算法利用网络的图结构来评价网页的重要性,这里的图结构是指指向网页的链接,也就是Inlink。PageRank算法有两种假设:
数量假设:指向该网站的数量越多,重要性越高
质量假设:指向该网站越权威,重要性越高(每个链接权重不一样)
PageRank模型的描述如下:
网页
i
i
i的rank(重要度)是
r
i
r_i
ri,有
d
i
d_i
di个outlinks,那么每个链接获得
r
i
d
i
\cfrac{r_i}{d_i}
diri权重的投票;
网页
j
j
j的rank(重要性)
r
j
r_j
rj是它的inlinks的投票权重的总和,
r
j
r_j
rj定义如下:
r
j
=
∑
i
→
j
r
i
d
i
(1)
r_j=\sum_{i\rightarrow j}\cfrac{r_i}{d_i}\tag1
rj=i→j∑diri(1)
例子:
上图中三个节点
r
a
,
r
b
,
r
c
r_a,r_b,r_c
ra,rb,rc的重要性可以列出如下线性方程组:
{
r
a
=
r
c
+
r
b
/
2
r
b
=
r
b
/
2
+
r
a
/
2
r
c
=
r
a
/
2
\begin{cases} r_a=r_c+r_b/2 \\ r_b=r_b/2+r_a/2 \\ r_c=r_a/2 \\ \end{cases}
⎩⎪⎨⎪⎧ra=rc+rb/2rb=rb/2+ra/2rc=ra/2
当然还有一个额外的约束:
r
a
+
r
b
+
r
c
=
1
r_a+r_b+r_c=1
ra+rb+rc=1
解出来为:
r
a
=
2
5
,
r
b
=
2
5
,
r
c
=
1
5
r_a=\cfrac{2}{5},r_b=\cfrac{2}{5},r_c=\cfrac{1}{5}
ra=52,rb=52,rc=51
当节点较少的时候,还可以消元法解一下,如果计算互联网上上亿个节点就需要用特殊的优化方法:
PageRank的矩阵表达
Column stochastic (列随机) 矩阵
M
M
M(每一个列上的元素之和为1,暗暗符合上面的图中约束条件,当然还有行随机矩阵和双随机矩阵),我们假设网页
j
j
j有
d
j
d_j
dj个外链接,假设第
j
j
j个外链接是指向
i
i
i网页,那么:
M
i
j
=
1
d
j
M_{ij}=\cfrac{1}{d_j}
Mij=dj1
将某个网页
i
i
i的重要度
r
r
r看做一个向量,且满足所有网页的重要度和为1:
∑
i
r
i
=
1
\sum_ir_i=1
∑iri=1,那么公式1的矩阵表达如下:
r
=
M
⋅
r
(2)
r=M\cdot r\tag2
r=M⋅r(2)
根据特征向量的定义可知:若
A
x
=
λ
x
Ax=\lambda x
Ax=λx
则
x
x
x为矩阵
A
A
A的特征值为
λ
\lambda
λ的特征向量
把公式2写成:
1
⋅
r
=
M
⋅
r
1\cdot r=M\cdot r
1⋅r=M⋅r
则重要度向量
r
r
r是矩阵
M
M
M对应特征值为1的特征向量
PageRank的矩阵表达实例
先把上面的图拉下来:
写出上图的(列随机) 矩阵
M
M
M
r
a
r
b
r
c
r
a
0
1
/
2
1
r
b
1
/
2
1
/
2
0
r
c
1
/
2
0
0
\begin{matrix} & r_a& r_b &r_c \\ r_a & 0& 1/2 &1 \\ r_b & 1/2 & 1/2 & 0\\ r_c & 1/2& 0 & 0 \end{matrix}
rarbrcra01/21/2rb1/21/20rc100
根据公式2:
[
r
a
r
b
r
c
]
=
[
0
1
/
2
1
1
/
2
1
/
2
0
1
/
2
0
0
]
[
r
a
r
b
r
c
]
\begin{bmatrix} r_a\\ r_b\\ r_c \end{bmatrix}=\begin{bmatrix} 0& 1/2 &1\\ 1/2 & 1/2 & 0 \\ 1/2& 0 & 0 \end{bmatrix}\begin{bmatrix} r_a\\ r_b\\ r_c \end{bmatrix}
⎣⎡rarbrc⎦⎤=⎣⎡01/21/21/21/20100⎦⎤⎣⎡rarbrc⎦⎤
展开就是对应的方程组:
{
r
a
=
r
b
/
2
+
r
c
r
b
=
r
a
/
2
+
r
b
/
2
r
c
=
r
a
/
2
\begin{cases} r_a=r_b/2+r_c \\ r_b=r_a/2+ r_b/2\\ r_c=r_a/2 \\ \end{cases}
⎩⎪⎨⎪⎧ra=rb/2+rcrb=ra/2+rb/2rc=ra/2
从Markov的角度来看PageRank
这块听懂了定义,最后的平稳分布没懂的可以看这里(https://blog.csdn.net/qq_34652535/article/details/85343518)
定义:
考虑一个网上的随机冲浪者
在时间t,在网页i
在时间t+1,沿着网页i的outlinks uniformly at random(就是按出度均匀分布概率1/dj),到达网页i指向的另一网页j
无限重复以上的步骤
冲浪者在图中随机游走的过程就是一个马尔科夫链,记向量
p
(
t
)
p(t)
p(t)为冲浪者时间步
t
t
t到达网页
i
i
i的概率
p
(
t
)
p(t)
p(t)可以看做所有网页的一个概率分布
M就相当于马尔科夫中的状态转移矩阵,因此在
t
+
1
t+1
t+1时刻,冲浪者位置:
p
(
t
+
1
)
=
M
⋅
p
(
t
)
p(t+1)=M\cdot p(t)
p(t+1)=M⋅p(t)
当随机游走到达以下状态时
p
(
t
+
1
)
=
M
⋅
p
(
t
)
=
p
(
t
)
p(t+1)=M\cdot p(t)=p(t)
p(t+1)=M⋅p(t)=p(t)
p
(
t
)
p(t)
p(t)为该随机游走的平稳分布
对比公式2,可知:
r
r
r就是在网络图上随机游走的平稳分布。
Power Iteration Method
上面讲完我们知道了,现在要找重要度向量,实际上就是要求转移矩阵M的特征值为1的特征值向量。求这个特征向量的方法就是Power Iteration Method,该方法是求绝对值最大的特征值向量的方法:
假设图中有N个网页,且将网页看做节点,把超链接看做有向边。使用Power Iteration求特征向量
r
r
r的步骤为:
1.初始化(随机选点):
r
(
0
)
=
[
1
N
,
⋯
,
1
N
]
T
r^{(0)}=[\cfrac{1}{N},\cdots,\cfrac{1}{N}]^T
r(0)=[N1,⋯,N1]T
2.Iteration循环(相当开始随机游走):
r
(
t
+
1
)
=
M
⋅
r
(
t
)
r^{(t+1)}=M\cdot r^{(t)}
r(t+1)=M⋅r(t)
3.循环终止条件(达到平稳分布):
∣
r
(
t
+
1
)
−
r
(
t
)
∣
1
<
ϵ
|r^{(t+1)}-r^{(t)}|_1<\epsilon
∣r(t+1)−r(t)∣1<ϵ
其中:
r
j
(
t
+
1
)
=
∑
r
(
t
)
d
i
r_j^{(t+1)}=\sum\cfrac{r^{(t)}}{d_i}
rj(t+1)=∑dir(t)
下面就用这个方法来重新算一下上面三个网页的例子:
三个网页,每个网页作为起始点的概率为
1
N
=
1
3
\cfrac{1}{N}=\cfrac{1}{3}
N1=31
[
r
a
r
b
r
c
]
=
[
1
/
3
1
/
3
1
/
3
]
\begin{bmatrix} r_a\\ r_b\\ r_c \end{bmatrix}=\begin{bmatrix} 1/3\\ 1/3\\ 1/3 \end{bmatrix}
⎣⎡rarbrc⎦⎤=⎣⎡1/31/31/3⎦⎤
下面开始在左边乘转移矩阵(https://zs.symbolab.com/solver/matrix-multiply-calculator):
[
0
1
/
2
1
1
/
2
1
/
2
0
1
/
2
0
0
]
\begin{bmatrix} 0& 1/2 &1\\ 1/2 & 1/2 & 0 \\ 1/2& 0 & 0 \end{bmatrix}
⎣⎡01/21/21/21/20100⎦⎤
开始第1次:
[
r
a
r
b
r
c
]
=
[
1
/
2
1
/
3
1
/
6
]
\begin{bmatrix} r_a\\ r_b\\ r_c \end{bmatrix}=\begin{bmatrix} 1/2\\ 1/3\\ 1/6 \end{bmatrix}
⎣⎡rarbrc⎦⎤=⎣⎡1/21/31/6⎦⎤
第2次:
[
r
a
r
b
r
c
]
=
[
1
/
3
5
/
12
1
/
4
]
\begin{bmatrix} r_a\\ r_b\\ r_c \end{bmatrix}=\begin{bmatrix} 1/3\\ 5/12\\ 1/4 \end{bmatrix}
⎣⎡rarbrc⎦⎤=⎣⎡1/35/121/4⎦⎤
第3次:
[
r
a
r
b
r
c
]
=
[
11
/
24
3
/
8
1
/
6
]
\begin{bmatrix} r_a\\ r_b\\ r_c \end{bmatrix}=\begin{bmatrix} 11/24\\ 3/8\\ 1/6 \end{bmatrix}
⎣⎡rarbrc⎦⎤=⎣⎡11/243/81/6⎦⎤
第4次:
[
r
a
r
b
r
c
]
=
[
17
/
48
5
/
12
11
/
48
]
\begin{bmatrix} r_a\\ r_b\\ r_c \end{bmatrix}=\begin{bmatrix} 17/48\\ 5/12\\ 11/48 \end{bmatrix}
⎣⎡rarbrc⎦⎤=⎣⎡17/485/1211/48⎦⎤
第5次:
[
r
a
r
b
r
c
]
=
[
7
/
16
37
/
96
17
/
96
]
\begin{bmatrix} r_a\\ r_b\\ r_c \end{bmatrix}=\begin{bmatrix} 7/16\\ 37/96\\ 17/96 \end{bmatrix}
⎣⎡rarbrc⎦⎤=⎣⎡7/1637/9617/96⎦⎤
第6次:
[
r
a
r
b
r
c
]
=
[
71
/
192
79
/
192
7
/
32
]
\begin{bmatrix} r_a\\ r_b\\ r_c \end{bmatrix}=\begin{bmatrix} 71/192\\ 79/192\\ 7/32 \end{bmatrix}
⎣⎡rarbrc⎦⎤=⎣⎡71/19279/1927/32⎦⎤
第7次:
[
r
a
r
b
r
c
]
=
[
163
/
384
25
/
64
71
/
384
]
\begin{bmatrix} r_a\\ r_b\\ r_c \end{bmatrix}=\begin{bmatrix} 163/384\\ 25/64\\ 71/384 \end{bmatrix}
⎣⎡rarbrc⎦⎤=⎣⎡163/38425/6471/384⎦⎤
第8次:
[
r
a
r
b
r
c
]
=
[
73
/
192
313
/
768
163
/
384
]
\begin{bmatrix} r_a\\ r_b\\ r_c \end{bmatrix}=\begin{bmatrix} 73/192\\ 313/768\\ 163/384 \end{bmatrix}
⎣⎡rarbrc⎦⎤=⎣⎡73/192313/768163/384⎦⎤
第9次:
[
r
a
r
b
r
c
]
=
[
213
/
512
605
/
1536
73
/
384
]
\begin{bmatrix} r_a\\ r_b\\ r_c \end{bmatrix}=\begin{bmatrix} 213/512\\ 605/1536\\ 73/384\end{bmatrix}
⎣⎡rarbrc⎦⎤=⎣⎡213/512605/153673/384⎦⎤
第10次:
[
r
a
r
b
r
c
]
=
[
1189
/
3072
311
/
768
213
/
1024
]
\begin{bmatrix} r_a\\ r_b\\ r_c \end{bmatrix}=\begin{bmatrix} 1189/3072\\ 311/768\\ 213/1024\end{bmatrix}
⎣⎡rarbrc⎦⎤=⎣⎡1189/3072311/768213/1024⎦⎤
第11次:
[
r
a
r
b
r
c
]
=
[
1261
/
3072
811
/
2048
1189
/
6144
]
\begin{bmatrix} r_a\\ r_b\\ r_c \end{bmatrix}=\begin{bmatrix} 1261/3072\\ 811/2048\\ 1189/6144\end{bmatrix}
⎣⎡rarbrc⎦⎤=⎣⎡1261/3072811/20481189/6144⎦⎤
(
4811
12288
4955
12288
1261
6144
)
\begin{pmatrix}\frac{4811}{12288}\\ \frac{4955}{12288}\\ \frac{1261}{6144}\end{pmatrix}
⎝⎛12288481112288495561441261⎠⎞
(
3333
8192
4883
12288
4811
24576
)
\begin{pmatrix}\frac{3333}{8192}\\ \frac{4883}{12288}\\ \frac{4811}{24576}\end{pmatrix}
⎝⎛81923333122884883245764811⎠⎞
(
4847
12288
19765
49152
3333
16384
)
\begin{pmatrix}\frac{4847}{12288}\\ \frac{19765}{49152}\\ \frac{3333}{16384}\end{pmatrix}
⎝⎛1228848474915219765163843333⎠⎞
(
39763
98304
13051
32768
4847
24576
)
\begin{pmatrix}\frac{39763}{98304}\\ \frac{13051}{32768}\\ \frac{4847}{24576}\end{pmatrix}
⎝⎛98304397633276813051245764847⎠⎞
…
最后应该是:
[
r
a
r
b
r
c
]
=
[
2
/
5
2
/
5
1
/
5
]
\begin{bmatrix} r_a\\ r_b\\ r_c \end{bmatrix}=\begin{bmatrix} 2/5\\ 2/5\\ 1/5\end{bmatrix}
⎣⎡rarbrc⎦⎤=⎣⎡2/52/51/5⎦⎤
缺点
无法处理以下两种情况:
1.网页只有入度没有出度Dead End
第一种情况中,在经过若干时间步随机游走之后,会使得网页重要性向量趋向于0(leaky rank现象)。原因是在随机游走的时候,不断乘上的转移矩阵是列随机矩阵,其每列和为1,而由网页只有入度没有出度,会导致转移矩阵中某列和为0,因此会使得最后相乘结果为0。
2.网页即使有出度也是指向其本身Spider Traps
第二种情况中,转移矩阵本来就是比较稀疏的,导致网页重要性向量不平滑,由于Spider Traps的存在,会加剧这种不平滑的现象,使得这些指向自己的节点的重要性加大。
第一种情况Dead End是一个大问题;第二种情况Spider Traps不会对收敛性产生影响,但收敛到的PageRank不是我们想要的
解决方法:teleport(随机跳转)
进阶版本的PageRank
在每个时间点t,随机冲浪者有两个选择:
沿着一个随机的边去它的相邻网页,概率=𝛽
Teleport(随机跳转)到任意一个随机选择的其他网页,概率=1-𝛽
𝛽一般在0.8-0.9之间
可以看到,Teleport可以有1-𝛽的概率跳出Dead End或者Spider Traps,当然每个网页被随机跳转到的概率是一样的。
例如下面三个网页(C节点是Dead End),
其转移矩阵为:
r
a
r
b
r
c
r
a
0
1
/
2
0
r
b
1
/
2
1
/
2
0
r
c
1
/
2
0
0
\begin{matrix} & r_a& r_b &r_c \\ r_a & 0& 1/2 &0\\ r_b & 1/2 & 1/2 & 0\\ r_c & 1/2& 0 & 0 \end{matrix}
rarbrcra01/21/2rb1/21/20rc000
加入Teleport后,转移概率矩阵就变成了:
r
a
r
b
r
c
r
a
0
1
/
2
1
/
3
r
b
1
/
2
1
/
2
1
/
3
r
c
1
/
2
0
1
/
3
\begin{matrix} & r_a& r_b &r_c \\ r_a & 0& 1/2 &1/3\\ r_b & 1/2 & 1/2 & 1/3\\ r_c & 1/2& 0 & 1/3 \end{matrix}
rarbrcra01/21/2rb1/21/20rc1/31/31/3
注意新的转移矩阵还是列随机矩阵。
这里就得到了PageRank的形式[Brin-Page,1998]:
r
j
=
∑
i
→
j
β
r
i
d
i
+
(
1
−
β
)
1
N
r_j=\sum_{i\rightarrow j}\beta\cfrac{r_i}{d_i}+(1-\beta)\cfrac{1}{N}
rj=i→j∑βdiri+(1−β)N1
要对Dead End节点进行预处理,两种方式,第一种是直接在转移矩阵中去掉Dead End节点,另外是直接将其转移概率设置为1/N。上式写成矩阵方式:
A
=
β
M
+
(
1
−
β
)
[
1
N
]
N
×
N
(3)
A=\beta M+(1-\beta)[\cfrac{1}{N}]_{N\times N}\tag3
A=βM+(1−β)[N1]N×N(3)
Teleport例子
就用这个方法来重新算一下上面三个网页的例子:
M
=
[
0
1
/
2
1
1
/
2
1
/
2
0
1
/
2
0
0
]
,
[
1
N
]
N
×
N
=
[
1
/
3
1
/
3
1
/
3
1
/
3
1
/
3
1
/
3
1
/
3
1
/
3
1
/
3
]
M=\begin{bmatrix} 0& 1/2 &1\\ 1/2 & 1/2 & 0 \\ 1/2& 0 & 0 \end{bmatrix},[\cfrac{1}{N}]_{N\times N}=\begin{bmatrix} 1/3& 1/3 &1/3\\ 1/3 & 1/3 & 1/3 \\ 1/3& 1/3 & 1/3 \end{bmatrix}
M=⎣⎡01/21/21/21/20100⎦⎤,[N1]N×N=⎣⎡1/31/31/31/31/31/31/31/31/3⎦⎤
假设取
β
=
0.8
\beta=0.8
β=0.8,将上面的东东代入公式3可得:
0.8
M
+
(
1
−
0.8
)
[
1
N
]
N
×
N
=
0.8
[
0
1
/
2
1
1
/
2
1
/
2
0
1
/
2
0
0
]
+
0.2
[
1
/
3
1
/
3
1
/
3
1
/
3
1
/
3
1
/
3
1
/
3
1
/
3
1
/
3
]
0.8M+(1-0.8)[\cfrac{1}{N}]_{N\times N}=0.8\begin{bmatrix} 0& 1/2 &1\\ 1/2 & 1/2 & 0 \\ 1/2& 0 & 0 \end{bmatrix}+0.2\begin{bmatrix} 1/3& 1/3 &1/3\\ 1/3 & 1/3 & 1/3 \\ 1/3& 1/3 & 1/3 \end{bmatrix}
0.8M+(1−0.8)[N1]N×N=0.8⎣⎡01/21/21/21/20100⎦⎤+0.2⎣⎡1/31/31/31/31/31/31/31/31/3⎦⎤
=
[
1
15
7
15
13
15
7
15
7
15
1
15
7
15
1
15
1
15
]
=\begin{bmatrix}\cfrac{1}{15}&\cfrac{7}{15}&\cfrac{13}{15}\\ \cfrac{7}{15}&\cfrac{7}{15}&\cfrac{1}{15}\\ \cfrac{7}{15}&\cfrac{1}{15}&\cfrac{1}{15}\end{bmatrix}
=⎣⎢⎢⎢⎢⎢⎡1511571571571571511513151151⎦⎥⎥⎥⎥⎥⎤
也就是图变成了:
其中红色箭头是原来转移矩阵中没有边的部分。
然后就是一样的,三个网页,每个网页作为起始点的概率为
1
N
=
1
3
\cfrac{1}{N}=\cfrac{1}{3}
N1=31
[
r
a
r
b
r
c
]
=
[
1
/
3
1
/
3
1
/
3
]
\begin{bmatrix} r_a\\ r_b\\ r_c \end{bmatrix}=\begin{bmatrix} 1/3\\ 1/3\\ 1/3 \end{bmatrix}
⎣⎡rarbrc⎦⎤=⎣⎡1/31/31/3⎦⎤
开始在左边乘A,一直乘到收敛为止
PageRank计算效率分析
可以看到上面的计算过程中的关键步骤为:
r
t
+
1
=
A
⋅
r
t
r^{t+1}=A\cdot r^{t}
rt+1=A⋅rt
A相对于M来说,M是初始的转移矩阵,是比较稀疏的,存储起来还行,但是加上瞬移后,变成A后就是密集矩阵了,每个位置都有值,假如我们有上亿个网页,这个玩意的存储和计算都是问题。
下面是推导过程:
r
j
=
∑
i
→
j
β
r
i
d
i
+
(
1
−
β
)
1
N
r_j=\sum_{i\rightarrow j}\beta\cfrac{r_i}{d_i}+(1-\beta)\cfrac{1}{N}
rj=i→j∑βdiri+(1−β)N1
A
=
β
M
+
(
1
−
β
)
[
1
N
]
N
×
N
A=\beta M+(1-\beta)[\cfrac{1}{N}]_{N\times N}
A=βM+(1−β)[N1]N×N
开始:
r
=
A
⋅
r
,
where
A
i
j
=
β
M
i
j
+
1
−
β
N
r
i
=
∑
j
=
1
N
A
i
j
⋅
r
j
=
∑
j
=
1
N
[
β
M
i
j
+
1
−
β
N
]
⋅
r
j
=
∑
j
=
1
N
β
M
i
j
⋅
r
j
+
∑
j
=
1
N
1
−
β
N
r
j
,
由
于
∑
r
j
=
1
=
∑
j
=
1
N
β
M
i
j
⋅
r
j
+
1
−
β
N
=
β
∑
j
=
1
N
M
i
j
⋅
r
j
+
1
−
β
N
r
=
β
M
⋅
r
+
[
1
−
β
N
]
N
\begin{aligned}r&=A\cdot r,\text{where } A_{ij}=\beta M_{ij}+\cfrac{1-\beta}{N} \\ r_i&=\sum_{j=1}^NA_{ij}\cdot r_j \\ &=\sum_{j=1}^N\left[\beta M_{ij}+\cfrac{1-\beta}{N}\right]\cdot r_j\\ &=\sum_{j=1}^N\beta M_{ij}\cdot r_j+\sum_{j=1}^N\cfrac{1-\beta}{N} r_j,由于\sum r_j=1\\ &=\sum_{j=1}^N\beta M_{ij}\cdot r_j+\cfrac{1-\beta}{N}\\ &=\beta\sum_{j=1}^N M_{ij}\cdot r_j+\cfrac{1-\beta}{N}\\ r&=\beta M\cdot r+[\cfrac{1-\beta}{N}]_N\end{aligned}
rrir=A⋅r,where Aij=βMij+N1−β=j=1∑NAij⋅rj=j=1∑N[βMij+N1−β]⋅rj=j=1∑NβMij⋅rj+j=1∑NN1−βrj,由于∑rj=1=j=1∑NβMij⋅rj+N1−β=βj=1∑NMij⋅rj+N1−β=βM⋅r+[N1−β]N
其中
[
1
−
β
N
]
N
[\cfrac{1-\beta}{N}]_N
[N1−β]N是N个元素都为
1
−
β
N
\cfrac{1-\beta}{N}
N1−β的向量
可以看到结果不需要用稠密矩阵A,而是用稀疏矩阵M来求解r(M中的Dead End要进行处理,有Dead End转移矩阵每列和会小于1 ,因此要对该列进行重新归一化。)
最终版本的完整算法
输入:网络图
G
G
G和瞬移参数
β
\beta
β,图中可以出现Dead Ends和Spider Traps
输出:网页的重要程度PageRank向量
r
r
r
1.设置在第一个时间不的初始化PageRank向量:
r
j
(
0
)
=
1
N
,
t
=
1
r_j^{(0)}=\cfrac{1}{N},t=1
rj(0)=N1,t=1
2.开始循环,直到
∑
j
∣
r
j
(
t
)
−
r
j
(
t
−
1
)
∣
<
ϵ
\sum_j|r_j^{(t)}-r_j^{(t-1)}|<\epsilon
∑j∣rj(t)−rj(t−1)∣<ϵ:
2.1
∀
j
:
r
′
j
(
t
)
=
∑
i
→
j
β
r
i
(
t
−
1
)
d
i
if
j
入度为0:
r
′
j
(
t
)
=
0
2.1\quad\forall j:{r'}_j^{(t)}=\sum_{i\rightarrow j}\beta\cfrac{r_i^{(t-1)}}{d_i}\\ \text{if } j \text{ 入度为0: }{r'}_j^{(t)}=0
2.1∀j:r′j(t)=i→j∑βdiri(t−1)if j 入度为0: r′j(t)=0
2.2
∀
j
:
r
j
(
t
)
=
r
′
j
(
t
)
+
1
−
S
N
S
=
∑
j
r
′
j
(
t
)
2.2\quad\forall j:r_j^{(t)}={r'}_j^{(t)}+\cfrac{1-S}{N}\\ S=\sum_j{r'}_j^{(t)}
2.2∀j:rj(t)=r′j(t)+N1−SS=j∑r′j(t)
2.3
t
=
t
+
1
2.3\quad t=t+1
2.3t=t+1
基于主题的Topic-specific PageRank
原始的pagerank算法只能提供通用的importance score。
目标:不只是根据importance score来评估网页,而是加上该网页离某个主题的距离,例如运动、娱乐、历史等。
就是要考虑各种权重。
方法
改变随机转移的网页集合
·原始PageRank:任意网页
·基于主题的PageRank:和该主题有关的事先选择好的网页集合(teleport set)
有偏随机游走(Bias the Random Walk)
·冲浪者随机转移到在主题有关的teleport set
S
S
S中的一个网页
·每一个不同的teleport set
S
S
S,会得到一个对应的PageRank向量
r
s
r_s
rs
矩阵表达
只需要改变原始PageRank中的随机转移的部分
A
i
j
=
{
β
M
i
j
+
(
1
−
β
)
∣
S
∣
if
i
∈
S
β
M
i
j
+
0
otherwise
A_{ij}=\begin{cases} \beta M_{ij}+ {\color{Red}\cfrac{(1-\beta)}{|S|} }& \text{ if } i\in S \\ \beta M_{ij}+0 & \text{ otherwise } \end{cases}
Aij=⎩⎨⎧βMij+∣S∣(1−β)βMij+0 if i∈S otherwise
可以这样理解,随机冲浪者不再随机跳转到所有网页了,而是随机跳转到所有网页的某个子集合
S
S
S,这个子集合和某个主题有关。
作业
PageRank Formulation
给定有向图
G
=
(
V
,
E
)
G=(V,E)
G=(V,E):
V
=
{
1
,
2
,
3
,
4
,
5
}
V=\{1,2,3,4,5\}
V={1,2,3,4,5}
E
=
{
(
1
,
2
)
,
(
1
,
3
)
,
(
2
,
1
)
,
(
2
,
3
)
,
(
3
,
4
)
,
(
3
,
5
)
,
(
4
,
5
)
,
(
5
,
4
)
}
E=\{(1,2),(1,3),(2, 1),(2,3),(3,4),(3,5), (4, 5), (5, 4)\}
E={(1,2),(1,3),(2,1),(2,3),(3,4),(3,5),(4,5),(5,4)}
1.给出
G
G
G的邻接矩阵,以及对应的随机转移矩阵
M
M
M,由于没有给权重,把每个节点权重看为1:
邻接矩阵
[
0
1
1
0
0
1
0
1
0
0
0
0
0
1
1
0
0
0
0
1
0
0
0
1
0
]
\begin{bmatrix}0 & 1 & 1& 0 & 0\\ 1& 0 & 1 & 0&0 \\ 0& 0 & 0& 1 & 1\\ 0& 0 & 0 & 0 &1 \\ 0& 0 &0 & 1 & 0 \end{bmatrix}
⎣⎢⎢⎢⎢⎡0100010000110000010100110⎦⎥⎥⎥⎥⎤
随机转移矩阵
M
M
M先把出入的component画一下,再按
r
j
=
∑
i
→
j
r
i
d
i
(1)
r_j=\sum_{i\rightarrow j}\cfrac{r_i}{d_i}\tag1
rj=i→j∑diri(1)
计算每个节点的in-component,结果:
[
0
1
/
2
0
0
0
1
/
2
0
0
0
0
1
/
2
1
/
2
0
0
0
0
0
1
/
2
0
1
0
0
1
/
2
1
0
]
\begin{bmatrix} 0 & 1/2 & 0& 0 & 0\\ 1/2& 0 & 0 & 0&0 \\ 1/2& 1/2 & 0& 0 & 0\\ 0& 0 & 1/2 & 0 &1 \\ 0& 0 &1/2 & 1 & 0 \end{bmatrix}
⎣⎢⎢⎢⎢⎡01/21/2001/201/2000001/21/20000100010⎦⎥⎥⎥⎥⎤
2.假设瞬移概率
(
1
−
β
)
(1-\beta)
(1−β)为0.2,写出计算图G的PageRank的公式,并计算出结果
5个网页,每个网页作为起始点的概率为
1
N
=
1
5
\cfrac{1}{N}=\cfrac{1}{5}
N1=51
新的转移矩阵A计算公式如下:
A
=
β
M
+
(
1
−
β
)
[
1
N
]
N
×
N
(3)
A=\beta M+(1-\beta)[\cfrac{1}{N}]_{N\times N}\tag3
A=βM+(1−β)[N1]N×N(3)
A
=
0.8
[
0
1
/
2
0
0
0
1
/
2
0
0
0
0
1
/
2
1
/
2
0
0
0
0
0
1
/
2
0
1
0
0
1
/
2
1
0
]
+
0.2
[
1
/
5
1
/
5
1
/
5
1
/
5
1
/
5
1
/
5
1
/
5
1
/
5
1
/
5
1
/
5
1
/
5
1
/
5
1
/
5
1
/
5
1
/
5
1
/
5
1
/
5
1
/
5
1
/
5
1
/
5
1
/
5
1
/
5
1
/
5
1
/
5
1
/
5
]
=
[
1
25
11
25
1
25
1
25
1
25
11
25
1
25
1
25
1
25
1
25
11
25
11
25
1
25
1
25
1
25
1
25
1
25
11
25
1
25
21
25
1
25
1
25
11
25
21
25
1
25
]
A=0.8\begin{bmatrix} 0 & 1/2 & 0& 0 & 0\\ 1/2& 0 & 0 & 0&0 \\ 1/2& 1/2 & 0& 0 & 0\\ 0& 0 & 1/2 & 0 &1 \\ 0& 0 &1/2 & 1 & 0 \end{bmatrix}+0.2\begin{bmatrix} 1/5 & 1/5 & 1/5& 1/5 & 1/5\\ 1/5 & 1/5 & 1/5& 1/5 & 1/5 \\ 1/5 & 1/5 & 1/5& 1/5 & 1/5\\ 1/5 & 1/5 & 1/5& 1/5 & 1/5\\ 1/5 & 1/5 & 1/5& 1/5 & 1/5 \end{bmatrix}\\ =\begin{bmatrix}\cfrac{1}{25}&\cfrac{11}{25}&\cfrac{1}{25}&\cfrac{1}{25}&\cfrac{1}{25}\\ \cfrac{11}{25}&\cfrac{1}{25}&\cfrac{1}{25}&\cfrac{1}{25}&\cfrac{1}{25}\\ \cfrac{11}{25}&\cfrac{11}{25}&\cfrac{1}{25}&\cfrac{1}{25}&\cfrac{1}{25}\\ \cfrac{1}{25}&\cfrac{1}{25}&\cfrac{11}{25}&\cfrac{1}{25}&\cfrac{21}{25}\\ \cfrac{1}{25}&\cfrac{1}{25}&\cfrac{11}{25}&\cfrac{21}{25}&\cfrac{1}{25}\end{bmatrix}
A=0.8⎣⎢⎢⎢⎢⎡01/21/2001/201/2000001/21/20000100010⎦⎥⎥⎥⎥⎤+0.2⎣⎢⎢⎢⎢⎡1/51/51/51/51/51/51/51/51/51/51/51/51/51/51/51/51/51/51/51/51/51/51/51/51/5⎦⎥⎥⎥⎥⎤=⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎡25125112511251251251125125112512512512512512511251125125125125125212512512512521251⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎤
5个网页,每个网页作为起始点的概率为
1
N
=
1
5
\cfrac{1}{N}=\cfrac{1}{5}
N1=51
[
r
1
r
2
r
3
r
4
r
5
]
=
[
1
/
5
1
/
5
1
/
5
1
/
5
1
/
5
]
\begin{bmatrix} r_1\\ r_2\\ r_3\\ r_4\\ r_5\end{bmatrix}=\begin{bmatrix} 1/5\\ 1/5\\ 1/5\\ 1/5\\ 1/5 \end{bmatrix}
⎣⎢⎢⎢⎢⎡r1r2r3r4r5⎦⎥⎥⎥⎥⎤=⎣⎢⎢⎢⎢⎡1/51/51/51/51/5⎦⎥⎥⎥⎥⎤
在初始矩阵
R
0
R_0
R0左边不断乘A,直到收敛
[
r
1
r
2
r
3
r
4
r
5
]
11
=
[
0.055448
0.055448
0.077627
0.321597
0.321597
]
\begin{bmatrix} r_1\\ r_2\\ r_3\\ r_4\\ r_5\end{bmatrix}_{11}=\begin{bmatrix} 0.055448\\ 0.055448\\ 0.077627\\ 0.321597\\ 0.321597\end{bmatrix}
⎣⎢⎢⎢⎢⎡r1r2r3r4r5⎦⎥⎥⎥⎥⎤11=⎣⎢⎢⎢⎢⎡0.0554480.0554480.0776270.3215970.321597⎦⎥⎥⎥⎥⎤
3.假设主题子集为
{
1
,
2
}
\{1,2\}
{1,2},重新计算图G的PageRank
主题子集的转移矩阵计算公式为:
A
i
j
=
{
β
M
i
j
+
(
1
−
β
)
∣
S
∣
if
i
∈
S
β
M
i
j
+
0
otherwise
A_{ij}=\begin{cases} \beta M_{ij}+ {\color{Red}\cfrac{(1-\beta)}{|S|} }& \text{ if } i\in S \\ \beta M_{ij}+0 & \text{ otherwise } \end{cases}
Aij=⎩⎨⎧βMij+∣S∣(1−β)βMij+0 if i∈S otherwise
A
=
0.8
[
0
1
/
2
0
0
0
1
/
2
0
0
0
0
1
/
2
1
/
2
0
0
0
0
0
1
/
2
0
1
0
0
1
/
2
1
0
]
+
0.2
[
1
/
2
1
/
2
0
0
0
1
/
2
1
/
2
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
]
=
[
33
250
113
250
4
125
4
125
4
125
113
250
33
250
4
125
4
125
4
125
113
250
113
250
4
125
4
125
4
125
33
250
33
250
44
125
4
125
84
125
33
250
33
250
44
125
84
125
4
125
]
A=0.8\begin{bmatrix} 0 & 1/2 & 0& 0 & 0\\ 1/2& 0 & 0 & 0&0 \\ 1/2& 1/2 & 0& 0 & 0\\ 0& 0 & 1/2 & 0 &1 \\ 0& 0 &1/2 & 1 & 0 \end{bmatrix}+0.2\begin{bmatrix} 1/2 & 1/2 & 0& 0 & 0\\ 1/2 & 1/2 & 0& 0 & 0 \\ 0 & 0 & 0& 0 & 0\\ 0 & 0 & 0& 0 & 0\\ 0 & 0 & 0& 0 & 0 \end{bmatrix}\\ =\begin{bmatrix}\cfrac{33}{250}&\cfrac{113}{250}&\cfrac{4}{125}&\cfrac{4}{125}&\cfrac{4}{125}\\ \cfrac{113}{250}&\cfrac{33}{250}&\cfrac{4}{125}&\cfrac{4}{125}&\cfrac{4}{125}\\ \cfrac{113}{250}&\cfrac{113}{250}&\cfrac{4}{125}&\cfrac{4}{125}&\cfrac{4}{125}\\ \cfrac{33}{250}&\cfrac{33}{250}&\cfrac{44}{125}&\cfrac{4}{125}&\cfrac{84}{125}\\ \cfrac{33}{250}&\cfrac{33}{250}&\cfrac{44}{125}&\cfrac{84}{125}&\cfrac{4}{125}\end{bmatrix}
A=0.8⎣⎢⎢⎢⎢⎡01/21/2001/201/2000001/21/20000100010⎦⎥⎥⎥⎥⎤+0.2⎣⎢⎢⎢⎢⎡1/21/20001/21/2000000000000000000⎦⎥⎥⎥⎥⎤=⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎡2503325011325011325033250332501132503325011325033250331254125412541254412544125412541254125412584125412541254125841254⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎤
4.给出5个范例
(
S
,
v
)
,
where
S
⊆
V
and
v
∈
V
(S,v), \text{ where }S\subseteq V\text{ and }v\in V
(S,v), where S⊆V and v∈V,v对于子集S的PageRank为0,解释原因。
Dead ends in PageRank computation
懒得翻译了,直接上题目。。。
Let the matrix of the Web
M
M
M be an
n
n
n-by-
n
n
n matrix, where n is the number of Web pages. The entry
m
i
j
m_{ij}
mij in row
i
i
i and column
j
j
j is 0, unless there is an arc from node (page)
j
j
j to node
i
i
i. In that case, the value of
m
i
j
m_{ij}
mij is
1
k
\cfrac{1}{k}
k1 , where
k
k
k is the number of arcs (links) out of node
j
j
j. Notice that if node
j
j
j has
k
>
0
k > 0
k>0 arcs out, then column
j
j
j has
k
k
k values of
1
k
\cfrac{1}{k}
k1 and the rest 0’s. If node
j
j
j is a dead end (i.e.,it has zero arcs out), then column
j
j
j is all 0’s.
Let r = [ r 1 , r 2 , ⋯ , r n ] T r = [r_1, r_2,\cdots, r_n]^T r=[r1,r2,⋯,rn]T be (an estimate of) the PageRank vector; that is, r i r_i ri is the estimate of the PageRank of node i i i. Definne w ( r ) w(r) w(r) to be the sum of the components of r r r; that is w ( r ) = ∑ i = 1 n r i w(r)=\sum_{i=1}^nr_i w(r)=∑i=1nri
In one iteration of the PageRank algorithm, we compute the next estimate r ′ r' r′ of the PageRank as: r ′ = M r r'= Mr r′=Mr. Specifically, for each i i i we compute r i ′ = ∑ j = 1 n M i j r j r'_i=\sum_{j=1}^nM_{ij}r_j ri′=∑j=1nMijrj. Define w ( r ′ ) w(r') w(r′) to be the sum of components of r r r that is w ( r ′ ) = ∑ i = 1 n r i ′ w(r')=\sum_{i=1}^nr'_i w(r′)=∑i=1nri′. You may use D (the set of dead nodes) in your equation.
1.假设图(网络)中没有Dead End。 证明 w ( r ′ ) = w ( r ) w(r')=w(r) w(r′)=w(r).
2.假设图(网络)中没有Dead End,且瞬移概率
1
−
β
,
0
<
β
<
1
1-\beta, 0<\beta<1
1−β,0<β<1。预测下一个重要性向量的公式为:
r
i
′
=
β
∑
j
=
1
n
M
i
j
r
j
+
(
1
−
β
)
/
n
r'_i=\beta\sum_{j=1}^nM_{ij}r_j+(1-\beta)/n
ri′=βj=1∑nMijrj+(1−β)/n
什么情况下
w
(
r
′
)
=
w
(
r
)
w(r')=w(r)
w(r′)=w(r),给出证明步骤。
3.瞬移概率为
1
−
β
,
0
<
β
<
1
1-\beta, 0<\beta<1
1−β,0<β<1,但网络中存在Dead End。
对于非Dead End,每个节点j的跳转到其他节点的概率为:
(
1
−
β
)
r
j
/
n
(1-\beta)r_j/n
(1−β)rj/n
对于Dead End,每个节点j的跳转到其他节点的概率为:
r
j
/
n
r_j/n
rj/n
给出
r
i
′
r'_i
ri′的公式,并证明
w
(
r
′
)
=
1
w(r')=1
w(r′)=1