Efficient Estimation of Heat Kernel PageRank for Local Clustering

西八,看完上篇老师又让看这篇,麻了


2 PRELIMINARIES

2.1 Basic Terminology

依旧是老生常谈的那几个定义:
G = ( V , E ) G=(V,E) G=(V,E)无向无权图, d ( v ) d(v) d(v)是v的度, A A A是G的邻接矩阵, D D D是G的对角度矩阵,随机游走矩阵 P = D − 1 A P=D^{-1}A P=D1A P k [ s , v ] P^k[s,v] Pk[s,v]表示从s出发的一个k跳的随机游走将到达v的概率。

我们希望的是最小化导率:
在这里插入图片描述

2.2 Heat Kernel-based Local Clustering

给定一个常数t,两个节点u,v,heat-kernel定义从u出发的k跳路径将终结于v的概率为:
η ( k ) = e − t t k k ! (1) \eta (k)=\frac{e^{-t}t^k}{k!} \tag{1} η(k)=k!ettk(1)

令s为本地聚类的种子节点,我们定义HKPR向量 ρ s \rho_s ρs为一个size为n的向量,其中
ρ s [ v ] = ∑ k = 0 ∞ η ( k ) ∗ P k [ s , v ] (2) \rho_s[v]=\sum_{k=0}^{∞}\eta(k)*P^k[s,v] \tag{2} ρs[v]=k=0η(k)Pk[s,v](2)

3 SOLUTION OVERVIEW

我们要求我们求得的 ρ s 1 \rho^1_s ρs1应该是 ( d , ϵ r , δ ) − a p p r o x i m a t e H K P R (d,\epsilon_r,\delta)-approximate HKPR (d,ϵr,δ)approximateHKPR。这个东西的定义为:
ρ s \rho_s ρs为种子节点s对应的HKPR向量, ρ s 1 \rho^1_s ρs1为我们求得的的HKPR向量, ρ s 1 \rho^1_s ρs1是一个 ( d , ϵ r , δ ) − a p p r o x i m a t e H K P R (d,\epsilon_r,\delta)-approximate HKPR (d,ϵr,δ)approximateHKPR如果它满足下面这个式子:
在这里插入图片描述
换句话说,当 ρ s [ v ] d [ v ] \frac{\rho_s[v]}{d[v]} d[v]ρs[v]大于 δ \delta δ时我们要求 ρ s 1 [ v ] d [ v ] \frac{\rho^1_s[v]}{d[v]} d[v]ρs1[v]提供一个相对误差。当 ρ s [ v ] d [ v ] \frac{\rho_s[v]}{d[v]} d[v]ρs[v]小于 δ \delta δ时我们要求 ρ s 1 [ v ] d [ v ] \frac{\rho^1_s[v]}{d[v]} d[v]ρs1[v]提供一个绝对误差。
这是为了确保当我们使用 ρ s 1 [ v ] d [ v ] \frac{\rho^1_s[v]}{d[v]} d[v]ρs1[v]排序节点时,这个序列很接近于 ρ s [ v ] d [ v ] \frac{\rho_s[v]}{d[v]} d[v]ρs[v]产生的序列。

通过式子(2)定义的HKPR,节点v的HKPR值是所有的从s到达v的k跳的加权和。因此,一个很直接的计算 ( d , ϵ r , δ ) − a p p r o x i m a t e H K P R (d,\epsilon_r,\delta)-approximate HKPR (d,ϵr,δ)approximateHKPR的方法是计算大量的随机游走。每一次随机游走从s出发,每一次游走的长度服从式子(1)的泊松分布(这里我理解就是每一次游走的k服从这个分布,更有可能进行步数较短的随机游走)。令 n r n_r nr是总共的随机游走的次数, ρ s 1 [ v ] \rho^1_s[v] ρs1[v]是随机游走走到v的分数,我们使用 ρ s 1 [ v ] \rho^1_s[v] ρs1[v]当作 ρ s [ v ] \rho_s[v] ρs[v]估计。
可以证明 ρ s 1 [ v ] \rho^1_s[v] ρs1[v] ( d , ϵ r , δ ) − a p p r o x i m a t e H K P R (d,\epsilon_r,\delta)-approximate HKPR (d,ϵr,δ)approximateHKPR的概率至少是:
在这里插入图片描述
因此,如果我们想要确保这个概率至少是 1 − p f 1-p_f 1pf,我们只需要设在这里插入图片描述因此,这个随机游走需要的时间是在这里插入图片描述
这种方法的问题是开销相当大,为了解释这一点,我们考虑一个点v,这个点有一个很小的 ρ s [ v ] \rho_s[v] ρs[v],但是 ρ s [ v ] / d [ v ] \rho_s[v]/d[v] ρs[v]/d[v]却大于 δ \delta δ,根据要求,我们需要保证 ρ s 1 [ v ] − ρ s [ v ] < = ϵ r ∗ ρ s [ v ] \rho_s^1[v]-\rho_s[v] <= \epsilon_r*\rho_s[v] ρs1[v]ρs[v]<=ϵrρs[v]。因此,这要求随机游走的次数KaTeX parse error: Undefined control sequence: \n at position 1: \̲n̲_r的次数应该很大,否则,到达v的游走的次数将会很小, ρ s [ v ] \rho_s[v] ρs[v]的估计将会不精准。

为了克服这些困难,我们在第4节和第5节提出了两种更高效的HKPR算法,满足以下两个条件:

  1. 以至少 1 − p f 1-p_f 1pf的概率返回一个 ( d , ϵ r , δ ) − a p p r o x i m a t e H K P R (d,\epsilon_r,\delta)-approximate HKPR (d,ϵr,δ)approximateHKPR,其中 p f p_f pf是一个用户定义的参数。
  2. 运行时间是在这里插入图片描述

4 THE TEA ALGORITHM

这一节我们提出了tea算法,tea算法是为了解决上文中说的算法的低效而提出的,tea算法的思想就是:先使用一个快速的算法计算出HKPR的估计值,然后再利用上文中的方法进行精确计算。

4.1 HK-push

在这里插入图片描述算法1展示了粗略估计的伪代码。
基本想法就是开始设一个向量 ρ s \rho_s ρs 只有 ρ s [ s ] = 1 \rho_s[s]=1 ρs[s]=1,其他值都为0。从s开始对G进行遍历,再遍历的过程中更新 ρ s \rho_s ρs。值得注意的是,这个过程不仅返回粗略估计的 q s q_s qs,而且返回 r s ( k ) r_s^{(k)} rs(k)
在上面这个算法中,
ψ ( k ) = ∑ l = k ∞ η ( l ) \psi (k)=\sum_{l=k}^∞ \eta (l) ψ(k)=l=kη(l)

可以发现,在HK-push结束之后,所有的 r s ( k ) r_s^{(k)} rs(k)向量中还保存着一些值,也就是说那些满足 r s ( k ) < = r m a x ∗ d ( v ) r_s^{(k)}<=r_{max}*d(v) rs(k)<=rmaxd(v)的值被保存了下来。这就像是吃鸡柳棒,吃完之后鸡柳棒上面还残存着没吃干净的鸡丝,我们只需要再把鸡丝给撸下来就算是吃完了一根鸡柳棒。

扫描二维码关注公众号,回复: 13431359 查看本文章
引理1

考虑算法1中的迭代,我们令 q s q_s qs r s ( 0 ) , r s ( 1 ) , … r s ( K ) r_s^{(0)},r_s^{(1)},…r_s^{(K)} rs(0),rs(1),rs(K)是粗略估计的向量和剩余向量。我们有:
ρ s [ v ] = q s [ v ] + ∑ u ∈ V ∑ k = 0 K r s ( k ) [ u ] ∗ h u ( k ) [ v ] \rho _s[v]=q_s[v]+\sum_{u \in V} \sum_{k=0}^K r_s^{(k)}[u] * h_u^{(k)}[v] ρs[v]=qs[v]+uVk=0Krs(k)[u]hu(k)[v]
其中 h u ( k ) [ v ] h_u^{(k)}[v] hu(k)[v]表示第k跳在u点,这个随机游走最终会落在v点的概率。
在这里插入图片描述

4.2 Algorithm

基本想法:我们上面提到真实的HKPR向量可以被KaTeX parse error: Expected '}', got 'EOF' at end of input: …),和h_u^{(k)}[v]表示。
回忆一下, q s , r s ( k ) q_s,r_s^{(k)} qs,rs(k)我们已经有了,如果我们可以精确地计算出 h u ( k ) [ v ] h_u^{(k)}[v] hu(k)[v]对于任意给定的u,v,k,那么我们就可以使用上面的公式精确地计算 ρ s \rho _s ρs

引理2:给定G,u,k,对于任意一点v,算法2以概率 h u ( k ) [ v ] h_u^{(k)}[v] hu(k)[v]返回v。
在这里插入图片描述

算法详细内容:
在这里插入图片描述算法3详细说明了TEA的伪代码

  1. 使用HK-push,返回一个粗略的 ρ \rho ρ值和K+1个残存向量。
  2. 使用k-RandomWalk重新计算 ρ \rho ρ
  • 首先计算残存总和 α \alpha α:也就是说 r s ( 0 ) , … … r s ( K ) r_s^{(0)},……r_s^{(K)} rs(0),rs(K)中不为0的数的总和。
  • 计算
    在这里插入图片描述
  • 其中
    在这里插入图片描述
    可以看出 p f ′ p_f^{'} pf在图G被传入的时候就可以计算出来。
  • 给定 ω \omega ω,我们进行k-RandomWalk随机游走的次数定义为 n r = α ∗ ω n_r=\alpha * \omega nr=αω。每一次随机游走k-RandomWalk的参数是随机采样的,采样的概率为 r s ( k ) [ u ] ω \frac{r_s^{(k)}[u]}{\omega} ωrs(k)[u]。在采样时,我们只需要注意剩余向量中不为0的那些元素就好了。每一次随机游走终结于节点v时,TEA算法增加 ρ s 1 [ v ] \rho_s^1[v] ρs1[v],增加了 α / n r \alpha/n_r α/nr

我们观察到TEA算法中的 r m a x r_{max} rmax控制着两个组件的平衡:HK-Push和k-RandomWalk。如果 r m a x r_{max} rmax很小,那么随机游走会变少,但是HK-Push的开销会变大。(其实就是牙缝变小了,鸡柳棒上面剩的的肉丝变少了,但是第一步得啃得比较干净)。相反,HK-Push的开销会变小,但是第二步随机游走的开销会变大。

为了达到这两个算法的平衡,我们设置 r m a x = O ( 1 ω ∗ t ) r_{max}=O(\frac{1}{\omega* t}) rmax=O(ωt1)。这样的话HK-Push的时间复杂度是 O ( ω ∗ t ) O(\omega * t) O(ωt),k-RandomWalk的时间复杂度是 O ( α ω t ) O(\alpha \omega t) O(αωt)

Tea+:

hk-push+:

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/cobracanary/article/details/112135950