Open CristianoYang opened 4 years ago
文章里面说在采样时间内计算pi(u,w)*dw(w)的乘积,而不是单独计算。 但是程序中,计算pi(v,w)使用的backSearch,计算pi(u,w)使用了fora算法,相当于提前计算了; 然后sampleD也是估算的dw; 最后三者相乘得到answer,和论文中不一样。 想请教一下原因,谢谢。
我们没有提前计算pi(u,w),而是对pi_l(u,w)ita(w)进行整体估计。在代码中,我们使用FORA算法(Forward Push+Monte-Carlo)计算出\hat{pi_l}(u,w),再用n_r*\hat{pi_l}(u,w)得到需要从节点w处产生的随机游走对数,用这些随机游走对里不曾相遇的数量占n_r的比例作为pi_l(u,w)ita(w)的估计值。 上述过程与论文中的描述等价,论文里用Monte-Carlo采样的方式描述了pi_l(u,w)的概率含义,代码里使用FORA算法对pi_l(u,w)进行估计,二者没有本质区别。
FORA算法:
Wang S, Yang R, Xiao X, et al. FORA: simple and effective approximate single-source personalized pagerank[C]//Proceedings of the 23rd ACM SIGKDD International Conference on Knowledge Discovery and Data Mining. 2017: 505-514.
文章里面说在采样时间内计算pi(u,w)*dw(w)的乘积,而不是单独计算。 但是程序中,计算pi(v,w)使用的backSearch,计算pi(u,w)使用了fora算法,相当于提前计算了; 然后sampleD也是估算的dw; 最后三者相乘得到answer,和论文中不一样。 想请教一下原因,谢谢。