CS224W-04: PageRank

PageRank 算法

PageRank 最初作为互联网网页重要度的计算方法,由 Page 和 Brin 提出,并用于谷歌搜索引擎的网页排序。事实上,PageRank 可以定义在任意有向图中,所以也广泛用于社会影响力分析等其他领域。

本节的内容包括:

  • PageRank 算法
  • 个性化 PageRank 算法 (Personalized PageRank)
  • 重启随机游走算法 (Random Walk with Restarts)

PageRank

PageRank 的定义

从直觉出发,要衡量一个网页的重要程度,可以有两个最基础的假设:

  • 如果有很多网页都有链接指向该网页,那么可以认为该网页很重要
  • 如果有很重要的网页指向该网页,那么该网页也很重要

如果把网页看作节点,网页之间的链接看作边,那么众多网页可以看作是一个有向图,用 r r r 表示节点的 Rank 值, r r r 越大,表示节点越重要。节点 j j j 的 Rank 值取决于指向于它的邻接节点的重要性:
r j = ∑ i → j r i d i r_j = \sum_{i \rightarrow j} \frac {r_i}{d_i} rj=ijdiri
其中 i → j i \rightarrow j ij 表示存在由节点 i i i 指向节点 j j j 的边, d i d_i di 表示节点 i i i 连出边的数量。为了把上式写成矩阵形式,定义随机邻接矩阵(stochastic adjacency matrix)
M i j = 1 d j , if  j → j M_{ij} = \frac {1}{d_j}, \quad \text{if} \ j \rightarrow j Mij=dj1,if jj
所有节点的 Rank 值组成 Rank 向量 r \mathbf r r ,并且 ∑ i r i = 1 \sum_i r_i = 1 iri=1,那么 Rank 向量满足以下公式
r = M r \mathbf r = \mathbf M \mathbf r r=Mr

PageRank 的解法

迭代法

根据公式 r = M r \mathbf r = \mathbf M \mathbf r r=Mr ,很容易想到可以通过不断迭代来计算 r \mathbf r r ,步骤为

  1. 初始化: r ( 0 ) = ( 1 N , . . . , 1 N ) \mathbf r^{(0)} = (\frac1N, ..., \frac1N) r(0)=(N1,...,N1)
  2. 迭代: r ( t + 1 ) = M r ( t ) \mathbf r^{(t+1)} = \mathbf M \mathbf r^{(t)} r(t+1)=Mr(t)
  3. ∣ r ( t + 1 ) − r ( t ) ∣ < ε |\mathbf r^{(t+1)} - r^{(t)}| < \varepsilon r(t+1)r(t)<ε 时,停止计算

在迭代过程中,可能会出现局部多次循环陷阱 (下图左) 或者遇到某些节点只进不出 (下图右),这时需要引入一个参数 β \beta β 。以用户浏览网页为例,当用户在浏览网页时,我们假设他从当前网页的外链接中随机选择一个链接的概率为 β \beta β,而他选择所有网页中任意一个网页的概率为 1 − β 1-\beta 1β ,也就是说用户在选择下一个网页时,可能会跳转到一个与当前网页完全不相关的网页。

PageRank 更一般的计算公式为
r j = β ∑ i → j r i d i + ( 1 − β ) 1 N r_j = \beta \sum_{i \rightarrow j} \frac {r_i}{d_i} + (1 - \beta) \frac 1N rj=βijdiri+(1β)N1
对应的矩阵形式为
r = β M r + ( 1 − β ) r N \mathbf r = \beta \mathbf M \mathbf r + (1 - \beta) \frac {\mathbf r} {N} r=βMr+(1β)Nr
定义
G = β M + ( 1 − β ) 1 N \mathbf G = \beta \mathbf M + (1 - \beta) \frac {\mathbf 1} {N} G=βM+(1β)N1

其中 1 \mathbf 1 1 表示成员都是1的 N N N 维向量, PageRank 方程可以写为
r = G r \mathbf r = \mathbf G \mathbf r r=Gr

个性化 PageRank

个性化 PageRank 算法的目标是计算节点对某些特定节点的相关度,这需要通过重启随机游走算法来完成。所谓重启随机游走,就是给定一个需要查询的节点结合 S = { Q 1 , Q 2 , . . . , Q k } S = \{Q_1, Q_2, ..., Q_k\} S={Q1,Q2,...,Qk} ,每次游走起点都是从查询节点中随机(或者有不同权重)选择一个,在每次游走的时候都有一定概率 α \alpha α 会回到查询节点 S S S 中的一个节点,游走过程中需要记录访问每个节点的次数,最后次数最高的节点与查询节点的相关性最高。

如下图,上排圆形节点表示一系列商品,下派排方形节点表示用户,我们想通过用户与商品的链接关系来查询商品节点与节点 Q 的相关度。

具体做法如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值