如何解决如何为一次迭代实现pagerank?
我正在尝试为单次迭代实现 pagerank 算法。 Based on my colab here 公式定义为:
??=∑?→??????+(1−?)1?
我试图实现为:
r1 = (beta * (r0/degi)) + ( (1 - beta) * 1/node_count)
但是,在与 networkX 实现交叉检查时,我得到了不同的值。 nx source code 有点难以理解,因为它适用于具有悬空值的多次迭代。
我的代码(最好在 colab 上查看)
def one_iter_pagerank(G,beta,r0,node_id):
# TODO: Implement this function that takes a nx.Graph,r0 and node id.
# The return value r1 is one interation PageRank value for the input node.
# Please round r1 to 2 decimal places.
degi = G.degree[node_id]
node_count = G.number_of_nodes() # correct?
r1 = (beta * (r0/degi)) + ( (1 - beta) * 1/node_count)
print('r1:',r1)
# crosscheck
# alpha == beta? (without= 0.128,with=)
r2 = nx.pagerank(G,max_iter=1,tol=0.1)[node_id]
r3 = nx.pagerank(G,tol=0.1,alpha=beta)[node_id]
print('r2:',r2,'\nr3:',r3)
beta = 0.8
r0 = 1 / G.number_of_nodes() # assign base value?
node_id = 0
print('r0:',r0)
r1 = one_iter_pagerank(G,node_id)
返回多个值:
r0: 0.029411764705882353 # base value?
r1: 0.007352941176470587 # my calculation
r2: 0.13427287581699343 # nx calc with no alpha
r3: 0.12810457516339868 # nx calc with alpha
那么我的实现在哪里错误/与 nx 结果如此不同?
colab 基于 Stanford CS224W course CS224W: Machine Learning with Graphs here
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。