0
点赞
收藏
分享

微信扫一扫

CS224W Lecture4笔记

Python百事通 2022-01-12 阅读 73

PageRank

PageRank是用Link Analysis来计算结点重要性的一种算法,最经典的应用就是网页的重要性排序。我们可以把互联网看作是一张有向图,每个网址都是一个结点,边就是网站中的超链接,如果网站 i i i中有跳转到网站 j j j的链接,那么就连一条从 i i i j j j的边。显然,每个网站的重要性是不一样的,比如www.google.com的重要程度显然要比www.nus.edu.sg的重要程度高。

“Flow” Model

最直接的想法是把边看作投票,根据每个结点的入度排序,认为入度大的结点比较重要。但是每条边的重要程度也不一样,一般来说,从重要的结点射出的边比较重要,因此我们定义:对于结点 i i i,如果它的重要度为 r i r_i ri,有 d i d_i di条出边,那么每条出边分得得票数为 r i / d i r_i/d_i ri/di。这里于是对于任意一个结点 j j j,它的重要度就可以表示为:
r j   =   ∑ i → j r i d i r_j\ =\ \sum_{i \rightarrow j}\frac{r_i}{d_i} rj = ijdiri
下图是一个例子

在这里插入图片描述

下面改写为矩阵形式。定义矩阵stochastic adjacency matrix M M M,设结点 j j j d j d_j dj条出边,那么如果 i → j i \rightarrow j ij有一条边,就令 M i j = 1 d j M_{ij}=\frac{1}{d_j} Mij=dj1,再令 r r r表示结点重要度vector, r i r_i ri表示结点 i i i的重要度。于是,上面的式子就可以直接写作:
r   =   M r r\ =\ Mr r = Mr

Stationary Distribution

我们令 p ( t ) p(t) p(t)表示 t t t时刻我们所处结点的概率分布,那么 t + 1 t+1 t+1时刻的分布就可以写作:
p ( t + 1 )   =   M   p ( t ) p(t+1)\ =\ M \ p(t) p(t+1) = M p(t)
那么当 p ( t + 1 )   =   M   p ( t )   =   p ( t ) p(t+1)\ =\ M\ p(t)\ =\ p(t) p(t+1) = M p(t) = p(t)时,我们称达到了stationary distribution。那么其实我们的 r r r就是一个stationary distribution,因此我们只需要求解出 r r r即可。

Power Iteration

求解 r r r的方法叫做power iteration,就是迭代求解。
r ( t + 1 )   =   M r ( t ) r^{(t+1)}\ =\ M r^{(t)} r(t+1) = Mr(t)
迭代终止的条件是: ∣ r ( t + 1 )   −   r ( t ) < δ ∣ |r^{(t+1)}\ -\ r^{(t)} \lt \delta| r(t+1)  r(t)<δ

Dead End & Spider Trap

PageRank其实有两种比较特殊的情况需要特殊处理,一个叫做dead end,另一个是spider trap。

dead end

这种情况指的是某个结点没有任何出边,那么当我们走到这个结点的时候就跳不出来了。在这种情况下进行power iteration,最终我们会得到一个全是0的概率分布,这不是我们想要的。

在这里插入图片描述

针对这一问题的解决方法叫做Teleport。具体来说,假设结点 u u u是没有出边的,那么在 M M M中, u u u这一列应该全是0。我们手动更改一下,将这个一列修改为一个 ∣ V ∣ |V| V的uniform distribution,也就是当我们到达结点 u u u时,我们有 1 ∣ V ∣ \frac{1}{|V|} V1的概率跳到任何结点,这样就不会一直卡死在dead end了。

在这里插入图片描述

spider trap

spider trap指的是我们进入了一个环,那么在这种情况下进行power iteration的结果就是概率分布只会存在于环上的结点,非环上的结点概率分布为0。

在这里插入图片描述

针对这一问题的方法也是类似Teleport。我们增加一个概率 β \beta β,,每一步,我们有 β \beta β的概率继续走出边, 1 − β 1-\beta 1β的概率随即跳到某个结点, β \beta β的取值大概在 0.8 ∼ 0.9 0.8 \sim 0.9 0.80.9

在这里插入图片描述

Optimized PageRank

解决了上述两个问题之后,我们优化过的PageRank公式如下:
r j   =   ∑ i → j β r i d i   +   ( 1 − β ) 1 N r_j\ =\ \sum_{i \rightarrow j}{\beta\frac{r_i}{d_i}\ +\ (1-\beta) \frac{1}{N}} rj = ijβdiri + (1β)N1
著名的Google PageRank就是这么来的,写作矩阵形式就是:
G   =   β M + ( 1 − β ) [ 1 N ] N × N G\ =\ \beta M+(1-\beta)[\frac{1}{N}]_{N \times N} G = βM+(1β)[N1]N×N

举报

相关推荐

0 条评论