终于写完了 花了快一周 累 拖延症的无奈
然后 发现 知识点好多 害啪
回想一下 现在ML领域逐渐走向交叉态势 不应该再拘泥于一个小方向
还是要多学习
关键词:PPR
TopPPR
Chernoff bound
Alias Method
Multi-armed Bandit
本文预计需要20-30min
首先我们应该对什么是PageRank有了一定概念 没有的话请点?
P R ( u ) = α ∑ v ∈ N i n ( u ) N 1 N o u t ( v ) P R ( v ) + ( 1 − α ) 1 n PR(u) =\alpha \sum\limits_{v \in N_{in}(u)}^N \dfrac{1}{N_{out}(v)}PR(v) + (1-\alpha) \dfrac{1}{n} PR(u)=αv∈Nin(u)∑NNout(v)1PR(v)+(1−α)n1
P R ⃗ l ⋅ T = α l P R ⃗ 0 ⋅ T P l + 1 − α n 1 ⃗ T ( α l − 1 ⋅ P l − 1 + ⋅ ⋅ ⋅ + α P + I ) \vec{PR}^{l \cdot T}=\alpha ^l\vec{PR}^{0\cdot T}P^l+\dfrac{1-\alpha}{n}\vec{1}^T(\alpha^{l-1}\cdot P^{l-1}+\cdot \cdot \cdot+\alpha P + I) PRl⋅T=αlPR0⋅TPl+n1−α1T(αl−1⋅Pl−1+⋅⋅⋅+αP+I)
PageRank相当于站在上帝视角进行评价所有节点的重要程度值
必须遍历所有网络上的节点才能进行计算
实际上我们并不知道互联网有多大 也没法从全局的视角评价所有节点
当然也是为了更个性化的评价
于是就有学者提出PPR
跟我念 PPAP
PPAP
PPR
PPR = Personal Page Rank value
以个人节点出发 计算PageRank值
P P R s ( u ) = α ∑ v ∈ N i n ( u ) N 1 N o u t ( v ) P P R s ( v ) + ( 1 − α ) 1 n PPR_s(u) =\alpha \sum\limits_{v \in N_{in}(u)}^N \dfrac{1}{N_{out}(v)}PPR_s(v) + (1-\alpha) \dfrac{1}{n} PPRs(u)=αv∈Nin(u)∑NNout(v)1PPRs(v)+(1−α)n1
PPR的公式和PR的没什么区别 只是PPR的值都是基于某一个节点s 这样的话就对PPR的研究就可以分为两个维度
- 给定一个Source S, 返回所有节点关于s的PPR值
- 给定一个Source S, 返回Top-K节点关于s的PPR值
- 当然最笨的办法就是先把所有节点的值都算一遍 然后再排序 当然 想效率高一点一般不这么做
- 对于这种问题 如果PPR值比较小,那么对它的估计误差 就不是特别重要(当然不能误差到Top-K)
- 很显然这个问题在实际生产过程中更具有价值
在计算PPR的时候 还是需要进行递归计算的
递归就需要停止边界
-
∣ π ~ ( s , t ) − π ( s , t ) ∣ ≤ ϵ π ( s , t ) |\tilde{\pi}(s,t)-\pi(s,t)|\le\epsilon\pi(s,t) ∣π~(s,t)−π(s,t)∣≤ϵπ(s,t)
-
π ( s , t ) ≤ δ \pi(s,t)\le\delta π(s,t)≤δ (一般而言 δ = O ( 1 / n ) \delta = O(1/n) δ=O(1/n))
-
举个栗子, 在选Top-3的时候
π ( s , v 1 ) = 0.45 , π ( s , v 2 ) = 0.2 , π ( s , v 3 ) = 0.18 , π ( s , v 4 ) = 0.17 , ϵ = 0.1 , δ = 0.01 \pi(s,v_1)=0.45 ,\pi(s,v_2)=0.2, \pi(s,v_3)=0.18, \pi(s,v_4)=0.17, \epsilon=0.1, \delta=0.01 π(s,v1)=0.45,π(s,v2)=0.2,π(s,v3)=0.18,π(s,v4)=0.17,ϵ=0.1,δ=0.01
在 π ~ ( s , v 1 ) = 0.45 , π ~ ( s , v 2 ) = 0.2 , π ~ ( s , v 4 ) = 0.18 \tilde{\pi}(s,v_1)=0.45,\tilde{\pi}(s,v_2)=0.2, \tilde{\pi}(s,v_4)=0.18 π~(s,v1)=0.45,π~(s,v2)=0.2,π~(s,v4)=0.18时,有
∣ π ~ ( s , v 4 ) − π ( s , v 4 ) ∣ ≤ 0.1 π ( s , v 4 ) , ∣ π ( s , v 4 ) − π ( s , v 3 ) ∣ ≤ 0.1 π ( s , v 3 ) |\tilde{\pi}(s,v_4)-\pi(s,v_4)|\le0.1\pi(s,v_4), |\pi(s,v_4)-\pi(s,v_3)|\le0.1\pi(s,v_3) ∣π~(s,v4)−π(s,v4)∣≤0.1π(s,v4),∣π(s,v4)−π(s,v3)∣≤0.1π(s,v3)分别为收敛性和相似性
不再care top-K后面的排序和值是否是对的
PPR的有极强的工业应用场景 (就是给的钱多)
比如说鹅厂王者荣耀的好友推荐就是基于PPR的 (一般人我不跟他说)
A厂主营业务TB的『千人千面』
算法
还比如说实体消歧 (消除歧义 我第一次听见这个名词的时候也是一脸懵逼的)
还有社交网络的关系查询 羡慕 这么好找工作的实验室
当然PPR复杂度较高 所有有一些对它的近似估计算法 下面就来大致介绍一下?
Monte Carlo Method
[Andersen et al. 2007]
那什么是蒙特卡洛 简单来说 蒙特卡洛就是一类随机算法
一般把蒙特卡洛和拉斯维加斯放在一起比较
蒙特卡罗
算法:采样越多,越近似最优解拉斯维加斯
算法:采样越多,越有机会找到最优解
举个很经典的?
蒙特卡洛
就是: 从100个?s中挑最大的,拿一个在手上,再随机挑一个,选二者最大的,除非遍历到最后一个,否则只能给出一个近似最优解拉斯维加斯
就是: 从100把?中找到能开门的钥匙,不能保证一定找得到解,但找到了肯定是最优解
那么这里的MC算法
就是以随机游走的概率估计PPR值 (其实相同的方法我们在PageRank的计算中也提到过)
那么这样的估计就是一个无偏估计 每次Random walk都是对所有点的无偏估计!
可以感觉出来Random walk越多估计的就越准
对固定一个点 每次Random Walk的结果之间都是独立的
那么就可以利用Chernoff bound(切尔诺夫界限)
你可以把它理解为一个大数定理一样的东西
- 对任意 x i ∈ [ 0 , 1 ] ( i ∈ [ 1 , n x ] ) {x_i}\in[0,1](i\in[1,n_x]) xi∈[0,1](i∈[1,nx]), 均值为 μ \mu μ的随机变量, 有 P r { ∣ ∑ i = 1 n x x i − n x μ ∣ ≥ n x ϵ } ≤ e x p ( − n x ˙ ϵ 2 2 ϵ / 3 + 2 μ ) Pr\left\{|\sum\limits_{i=1}^{n_x}x_i-n_x\mu|\ge n_x\epsilon\right\}\le exp(-\dfrac{n_x\dot{}\epsilon^2}{2\epsilon/3+2\mu}) Pr{∣i=1∑nxxi−nxμ∣≥nxϵ}≤exp(−2ϵ/3+2μnx˙ϵ2)
假设Random walk的次数 ≥ O ( ln n ϵ 2 ) \ge O(\dfrac{\ln{n}}{\epsilon^2}) ≥O(ϵ2lnn)
那么达到停止条件 ∣ π ~ ( s , t ) − π ( s , t ) ∣ ≤ ϵ |\tilde{\pi}(s,t)-\pi(s,t)|\le \epsilon ∣π~(s,t)−π(s,t)∣≤ϵ的概率至少 1 − 1 n 1-\dfrac{1}{n} 1−n1
则带入Chernoff bound
得到
e
x
p
(
−
n
x
˙
ϵ
2
2
ϵ
/
3
+
2
μ
)
<
O
(
1
n
)
=
δ
exp(-\dfrac{n_x\dot{}\epsilon^2}{2\epsilon/3+2\mu})< O(\dfrac{1}{n})=\delta
exp(−2ϵ/3+2μnx˙ϵ2)<O(n1)=δ
则推出Random walk
实验次数
n
>
−
c
ϵ
2
log
δ
=
O
(
log
n
)
n>-\dfrac{c}{\epsilon^2}\log{\delta}=O(\log{n})
n>−ϵ2clogδ=O(logn)
然后这个过程也算是一个PAC过程
PAC =Probably Approximately Correct
达到0误差是非常困难 而且没有必要的 所以需要争取误差比较小 ≤ ϵ \le \epsilon ≤ϵ 得到近似正确的概率比较大 ≥ 1 − δ \ge 1-\delta ≥1−δ
Forward Search
[FOCS’06]
每个node包含
Reserve
: π f ( s , v ) \pi_f(s,v) πf(s,v)随机游走到v,且停在vResidue
: r f ( s , v ) r_f(s,v) rf(s,v)随机当前游走到v,不停- 在递归过程中 r f ( s , v ) r_f(s,v) rf(s,v)代表着未分配的概率值
举个? ,如图 每个节点转移出去的概率为 1 − α 1-\alpha 1−α, 留在节点的概率为 α \alpha α, 则
- 第一个节点没分配的时候 π f ( s , s ) = α \pi_f(s,s)=\alpha πf(s,s)=α, r f ( s , s ) = 1 − α r_f(s,s)=1-\alpha rf(s,s)=1−α
- 当分配到第二轮的时候 π f ( s , s ) = α \pi_f(s,s)=\alpha πf(s,s)=α, r f ( s , s ) = 0 r_f(s,s)=0 rf(s,s)=0, r f ( s , v i ) = ( 1 − α ) / 3 r_f(s,v_i)=(1-\alpha)/3 rf(s,vi)=(1−α)/3
则有 π ( s , t ) = π f ( s , t ) + ∑ v ∈ V r f ( s , v ) ˙ π ( v , t ) \pi(s,t)=\pi_f(s,t)+\sum\limits_{v\in V}r_f(s,v)\dot{}\pi(v,t) π(s,t)=πf(s,t)+v∈V∑rf(s,v)˙π(v,t)
当 r f ( s , t ) r_f(s,t) rf(s,t)很小的时候,运算就没必要再进行下去了
其时间复杂度为 O ( 1 r m a x ) O(\dfrac{1}{r_{max}}) O(rmax1)
Backward Search
[WAW’07]
有Forward
很容易想到是不是有Backward
此时 π b ( v , t ) , r b ( v , t ) \pi_b(v,t), r_b(v,t) πb(v,t),rb(v,t)的定义和Forward基本一致
Reserve
: π b ( v , t ) \pi_b(v,t) πb(v,t)从v出发,运行到t, 且停在tResidue
: r b ( v , t ) r_b(v,t) rb(v,t)从v出发, 当前走到t,不停
同样可以推出 π ( s , t ) = π b ( s , t ) + ∑ v ∈ V r b ( v , t ) ˙ π ( s , v ) \pi(s,t)=\pi_b(s,t)+\sum\limits_{v\in V}r_b(v,t)\dot{}\pi(s,v) π(s,t)=πb(s,t)+v∈V∑rb(v,t)˙π(s,v)
当然可以吧Forward Backward结合在一起通过并行加快计算效率
FORA
[Wang et.al, KDD’17]
由上述可知
- Forward 精确解代价太高 可以较早的停止,但尾项不能保证近似解
- MC 可以保证得到的是近似解 但效率低下
就有学者把这两者结合在一起
在计算较大 π f \pi_f πf时使用Forward 当Forward进入停止迭代尾项的时候 使用MC进行计算 以提高精度
MC那么精确 那为啥不一开始就用MC呢
Forward的cost大概在MC的 1 − α 1-\alpha 1−α倍左右, 举个栗子 还是Forward那张图
- C o s t f = ( 1 − α ) w / α + d o u t Cost_f=(1-\alpha)w/\alpha+d_out Costf=(1−α)w/α+dout
- C o s t M = w / α Cost_M=w/\alpha CostM=w/α
这在数据量较大的情况下 差距还是比较可观的
Alias Method
现在插播一个算法
Alias Method 是一种大图中经常会用到的带权采样算法
一开始看见这个算法名字的时候觉得很眼熟
然后我同学提醒我~/.zshrc
中有 (尴尬不失礼貌的微笑)
直译过来就是别名采样算法 (别问我采样怎么译出来的)
考虑一个问题:一个随机事件包含四种情况, 每种情况发生的概率分别为: 1 2 \dfrac{1}{2} 21, 1 3 \dfrac{1}{3} 31, 1 12 \dfrac{1}{12} 121, 1 12 \dfrac{1}{12} 121, 问怎么产生符合这个概率的采样方法
一个很简单的思路就是产生一个 x ∈ [ 0 , 1 ] x\in[0,1] x∈[0,1]的随机数 然后根据x检索到详情的具体情况, 这样就转变为搜索问题, 用BST可以达到 O ( log n ) O(\log{n}) O(logn)的复杂度
那有没有复杂度更好的算法呢?(我觉得
O
(
log
n
)
O(\log{n})
O(logn)挺好的了 尴尬不失礼貌的微笑)
Naïve Alias Method
把所有情况排成一列 掷两次骰子 第一次决定列 第二次决定采样是否成功
如图,先掷一次骰子, 先确定是四种情况中的哪一种,如果是A,则100%采样A; 如果是B, 则 2 3 \dfrac{2}{3} 32概率为B, 1 3 \dfrac{1}{3} 31概率重试
我们来考虑下复杂度, 最好的情况,一次就结束 O ( 1 ) O(1) O(1),不好的情况一直一直迭代下去,平均复杂度 O ( n ) O(n) O(n)
Alias Method
回顾刚才的过程 可以发现 我们在重试的过程中可能会出现反复重试的情况 这样消耗太多 有没有什么办法能减少重试次数呢
如果我们能保证第二次掷骰子?的时候 不是当前类就是其他类 那么就不需要重试了吧
想法很好 究竟如何来实现呢 给出了下图的一个方法
通过拼接来实现 保证第二次掷骰子的时候 不是A就是B
但要注意这个拼接是有条件的:
- 满足一块中只能
最多两个
拼接而成 - 第 i i i块必须包含第 i i i块的一部分
当然就会产生一个疑问 到底 是不是都会存在这种拼接
事实上可以证明Alias 拼接的存在性 具体参考?
为什么突然提到ALias
采样算法?
回想一下FORA算法 第二步MC算法是在第一步达到停止条件之后的随机游动
在随机游走模拟初始化的时候就需要使用判别采样的类别
考虑下FORA
的时间复杂度
MC: O ( n ln n ϵ 2 ) O(\dfrac{n\ln{n}}{\epsilon^2}) O(ϵ2nlnn)
则Radom Walk: O ( r s u m n ln n ϵ 2 ) = O ( m r m a x n ln n ϵ 2 ) O(r_{sum}\dfrac{n\ln{n}}{\epsilon^2})=O(mr_{max}\dfrac{n\ln{n}}{\epsilon^2}) O(rsumϵ2nlnn)=O(mrmaxϵ2nlnn), 其中 r s u m = ∑ v ∈ V r ( s , v ) ≤ ∑ v ∈ V d o u t ( v ) r m a x = m r m a x r_{sum}=\sum\limits_{v\in V}r(s,v)\le \sum\limits_{v\in V}d_{out}(v)r_{max}=mr_{max} rsum=v∈V∑r(s,v)≤v∈V∑dout(v)rmax=mrmax
则Total: O ( 1 r m a x + m r m a x n ln n ϵ 2 ) O(\dfrac{1}{r_{max}}+mr_{max}\dfrac{n\ln{n}}{\epsilon^2}) O(rmax1+mrmaxϵ2nlnn)
令 r m a x = ϵ 1 n m ln n r_{max}=\epsilon \sqrt{\dfrac{1}{nm\ln{n}}} rmax=ϵnmlnn1
则: O ( T o t a l ) = O ( 1 ϵ m n ln n ) O(Total)=O(\dfrac{1}{\epsilon}\sqrt{mn\ln{n}}) O(Total)=O(ϵ1mnlnn)
Top-K single source PPR
事实上 在很场景下 我们并不关心所有的PPR值
大部分时候只对Top-K感兴趣
如何精准的估计前K个 或者说 第K个 PPR值 成了关键问题
解决Top-K的一个简单的想法就是利用迭代
- 给定初始值 δ = 1 k \delta = \dfrac{1}{k} δ=k1
- Run FORA
- Test solution
- 通过上下限来评估PPR值
- 如果没满足精度,则 δ / = 2 \delta /= 2 δ/=2, 重复第二步
- 如果满足精度则输出
Multi-armed Bandit
然后再插播一个问题?(还是算法) 傻傻分不清?
假如说你进到一个赌场 有n台老虎机? 看起来这n台老虎机没啥区别
但事实上 每台老虎机都有自己的概率分布 那么如何制定策略尝试 从而在最小的代价下获得最大的利益
这就是多臂老虎机MAB
问题
其实这是一个在Reinforcement learning, RL领域很火的问题
也拥有极强的应用场景
推荐系统 中 EE(Exploit-Explore)和冷启动是两个经典的问题
EE
直译就是利用与探索,到底是应该利用目前为数不多的数据进行分析 还是应该再做探索拿到很多的信息
冷启动
,主要针对的是用户第一次进入系统,在对用户一无所知的情况下,如何更有效的进行推荐
解决这两个问题的一个有效途径就是MAB
算法
A/B test
最简单的一种思路就是每台老虎机?尝试n次 记录回报值 哪台老虎机平均回报最大 就选哪台
A/B test的核心就是控制变量
- 每台老虎机在相同条件下尝试相同的次数n
- 然后根据这 n × m n×m n×m的结果,对老虎机收益进行估计
但很显然这样的算法 要达到一定精准度 需要较大的代价
ϵ \epsilon ϵ-Greedy
直译就是贪婪算法 (很贪婪了)
这个算法有点像前面说的Naïve Alias Method, 通过随机结果估计样本情况
- 指定一个 ϵ ∈ ( 0 , 1 ) \epsilon \in (0, 1) ϵ∈(0,1)
- 每轮结束的时候,以概率 ϵ \epsilon ϵ决定探索, 在所有老虎机中选一个作为下一个尝试项
- 以概率 1 − ϵ 1-\epsilon 1−ϵ 决定利用, 选择当前获取的样本中最好的老虎机作为下一个尝试项
这是一个online过程,随着尝试次数n的增大,所得到的结果就越接近真实值
且随着 ϵ \epsilon ϵ值的增大,收敛速度越快 (越激进越有可能发现真理 所以同学们 要保持对这个世界的怀疑)
但 ϵ \epsilon ϵ-Greedy 忽略了可能已经表征出来的特征 从始至终的都是随机筛选 可能会花费过多的时间才能收敛
当然 ϵ \epsilon ϵ-Greedy 也有很多变种
- 比如说一开始尝试概率高 之后概率慢慢减小
- 通过预筛选 先框定小范围 再进行 ϵ \epsilon ϵ-Greedy
SoftMax
大致思路就是 根据现有的信息进行估计 选择最可能的情况
- 根据之前的情况计算每一台老虎机的 p k = e μ ˉ k / k ∑ e μ ˉ k / k p_k=\dfrac{e^{\bar\mu_k/k}}{\sum e^{\bar\mu_k/k}} pk=∑eμˉk/keμˉk/k 值
- 选择 p k p_k pk值最大的作为下一阶段选择的老虎机
好像和前面的没啥区别 都是根据现有的信息 来估计分布
实际上 SoftMax的最大特点就是通过一个变量T,Temperature来控制估计范围的力度
T-温度,直观的感受,随着时间的增大,T随之减小 那么在分母的T导致现有的样本权值变高 越来越占主导地位
另外SoftMax也有一些变体,比如说 p k = ( 1 − γ ) w k ( t ) ∑ j = 1 K w j ( t ) + γ K p_k=(1-\gamma)\dfrac{w_k(t)}{\sum \limits_{j=1}^K w_j(t)}+\dfrac{\gamma}{K} pk=(1−γ)j=1∑Kwj(t)wk(t)+Kγ, 其中 w j ( t + 1 ) = w j ( t ) e x p ( γ r j ( t ) p j ( t ) K ) w_j(t+1)=w_j(t)exp(\gamma \dfrac{r_j(t)}{p_j(t)K}) wj(t+1)=wj(t)exp(γpj(t)Krj(t))
UCB
虽然SoftMax
已经有一种感觉 越多估计越可用 但它没有考虑到置信区间的问题 UCB则从置信区间出发
UCB = Upper Confidence Bound
- 先对每一个老虎机都进行一次测试
- 计算 p k = μ ˉ k ( t − 1 ) + 2 ln t − 1 T j , t − 1 p_k=\bar{\mu}_k(t-1)+\sqrt{\dfrac{2\ln{t-1}}{T_{j,t-1}}} pk=μˉk(t−1)+Tj,t−12lnt−1, 其中 T j , t − 1 T_{j,t-1} Tj,t−1为截止到第t轮j这台老虎机试验次数
- 选择 p k p_k pk值最大的作为下一阶段选择的老虎机
和SoftMax相比 只是 p k p_k pk计算方法略有区别 然后还多了一次预操作处理
仔细观察 p k p_k pk式子,其中包含了试验次数
随着试验次数的增大后面那项值越小,均值占得比重越大; 而试验次数较小的时候,后项值较大,均值占比较小
从而减少 因为采样次数较少造成的错误估计
本质上 后一项是均值的标准差
那么 为何叫做上置信区间算法呢?其实这个式子是从置信区间推出来的
根据上置信区间公式可得 P ( μ ˉ ≥ ϵ ) ≤ e x p ( − n ϵ 2 / 2 ) P(\bar{\mu}\ge\epsilon)\le exp(-n\epsilon^2/2) P(μˉ≥ϵ)≤exp(−nϵ2/2), 令右侧= δ \delta δ, 则有 P ( μ ˉ ≥ 2 n log 1 δ ) ≤ δ P(\bar{\mu}\ge\sqrt{\dfrac{2}{n}\log{\dfrac{1}{\delta})}}\le \delta P(μˉ≥n2logδ1)≤δ
则其 均值估计就为 μ ˉ i ( t − 1 ) + 2 T i ( t − 1 ) log 1 δ \bar{\mu}_i(t-1)+\sqrt{\dfrac{2}{T_i(t-1)}\log{\dfrac{1}{\delta}}} μˉi(t−1)+Ti(t−1)2logδ1
当然 UCB还有很多改进版本 在这就提出一个最朴素的思想
Thompson sampling
之前UCB是从置信度的角度出发考虑问题
而Thompson sampling
则是站在贝叶斯的角度 通过维护一个beta概率分布用先验估计后验
- 对每台老虎机维护一个tuple(winner, lose), 里面存放着历史成功、失败数,其中winner,lose为beta分布的参数
- 每轮,每台老虎机的beta分布随机产生一个值 p k p_k pk
- 选择 p k p_k pk值最大的作为下一阶段选择的老虎机
相对而言Thompson sampling的计算量会更小
实际使用效果也和UCB不相上下 基本上是目前使用比较多的一个算法
Top-K arm indentification
刚才我们分析都是选择收益最大的老虎机
实际上我们的需求不一定有那么强 可能只需要知道一个Top-K的集合就行了
比如说我们这个问题 只需要知道Top-K的PPR值
Naïve Solution
选择实验结果的第i大老虎机 ϵ \epsilon ϵ范围内的老虎机
MC solution
好 我们回到前面讲的Top-K single source PPR
想必 很多人 已经忘记我们这片blog的主题了 (连我自己也觉得我就是在讲?)
好跟我念 PPAP
PPAP
PPR
好 回到我们的Top-K PPR
利用Chernoff bound
估计所有点的UB LB且所有点的
U
B
−
L
B
UB-LB
UB−LB均相等
则带入Top-K single source PPR 根据停止条件 UB LB进行MC迭代
然后根据前面说的banbit
算法估计前k个PPR
TopPPR algorithm
[Wei et.al., SIGMOD 18]
MC的实际精度表现的比较低,于是又学者考虑把FORA 和Backward结合在一起
利用Backward search改善精度,得到了TopPPR algorithm
π ( s , t ) = π f ( s , t ) + ∑ u ∈ V r f ( s , u ) π b ( u , t ) + ∑ u , v ∈ V r f ( s , u ) π ( u , v ) r b ( v , t ) \pi(s,t)=\pi_f(s,t)+\sum\limits_{u\in V}r_f(s,u)\pi_b(u,t)+\sum\limits_{u,v\in V}r_f(s,u)\pi(u,v)r_b(v,t) π(s,t)=πf(s,t)+u∈V∑rf(s,u)πb(u,t)+u,v∈V∑rf(s,u)π(u,v)rb(v,t)
但问题是Backward必须知道目标点 对Top-K而言 就是需要给出一个候选集
于是我们大致把候选集分为三个集合 一定是Top-K的
可能是
不可能是
反复迭代 通过Empirical Bernstein
不等式计算置信区间
注意在迭代过程中 每个点的采样次数不同 UB LB的差也不同
回顾下刚才的UB-LB算法 可以发现在第k大PPR附近的点 很容易被误采样进样本中
好 到这里大致把PPR的图搜索算法讲完了
另外PPR的矩阵计算 最近几年也得到不错的成果
虽然目前工业界主流采用图搜索算法 (毕竟复杂度 1 − α 1-\alpha 1−α倍)
Reference
- The PageRank citation ranking: Bringing order to the web
- Towards scaling fully personalized pagerank: Algorithms, lower bounds, and experiments
- Local graph partitioning using pagerank vectors
- Local computation of PageRank contributions
- FORA: simple and effective approximate single-source personalized pagerank
- Topppr: top-k personalized pagerank queries with precision guarantees on large graphs
- Chernoff bound
- Darts, Dice, and Coins: Sampling from a Discrete Distribution
- Vermorel, Joannes, and Mehryar Mohri. “Multi-armed bandit algorithms and empirical evaluation.” European conference on machine learning. Springer, Berlin, Heidelberg, 2005.
- The Upper Confidence Bound Algorithm