【问题标题】:How to check for Page Rank convergence?如何检查页面排名收敛?
【发布时间】:2015-01-29 21:19:24
【问题描述】:

我正在编写一个小代码(顺序)来计算适度数据集的页面排名(尽管并非完全微不足道)。

算法是这样的:

while ( not converged ) {
   // Do a bunch of things to calculate PR
}

除了“收敛”标准之外,我对算法很清楚。检查算法是否收敛的最佳方法是什么?我应该:

检查我保留了一次迭代中所有单个节点的 PR 的副本,并检查下一次迭代中所有节点的 PR 是否相同?

这对我来说似乎效率很低。这是正确的做法吗?

【问题讨论】:

  • 为什么感觉效率低下?它实际上只是每个顶点的另一个float,与图的结构相比,这算不了什么。对于计算,您只需计算两个 floats 之间的差异,因此与您需要做的其余数学相比,这也算不了什么;)
  • 每次迭代(用于 PR 比较)在两个单独的 HashMap 中迭代每个节点似乎是我可以优化的东西。
  • 您可以在计算页面排名时计算差异(这已经需要一次迭代)
  • 是的!你说的对。我想到了。谢谢 ! :)

标签: algorithm graph pagerank


【解决方案1】:

对于每个节点,获取当前迭代与上一个迭代之间的分数差异,如果此错误低于某个阈值,则图已收敛。

TextRank 的论文描述得很好:

从分配给图中每个节点的任意值开始,计算迭代直到达到低于给定阈值的收敛。

当图中任何顶点的错误率低于给定阈值时,就实现了收敛。一个顶点的错误率定义为顶点S(Vi)的“真实”得分与迭代kS计算的得分之差^K(Vi) .由于实际分数是先验未知的,因此该错误率近似为两次连续迭代计算的分数之间的差异:S^(k+1)(Vi)+S^(k)(Vi)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-16
    • 1970-01-01
    • 2013-06-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多