【问题标题】:How to set PageRank and Hits parameters by using JUNG?如何使用 JUNG 设置 PageRank 和 Hits 参数?
【发布时间】:2013-08-11 13:01:47
【问题描述】:

我正在尝试在我从 Wikipedia Dump 构建的 DirectedSparseGraph 上使用 PageRank 和 Hits 算法。该图显然是巨大的,它的节点是字符串,而它的边缘是整数。问题是当我运行这段代码时:

PageRank<String,Integer> pageRank = new PageRank<String,Integer>(w, alpha);
pageRank.initialize();  
pageRank.setTolerance(0.000001);
pageRank.setMaxIterations(200);
pageRank.evaluate();

HITS<String, Integer> hits = new HITS<String, Integer>(w,alpha);
hits.initialize();
hits.setTolerance(0.000001);
hits.setMaxIterations(200);
hits.evaluate();
for(String s: w.getVertices()){
    writer.write(s + "\th:" + hits.getVertexScore(s).hub + "\ta:" + hits.getVertexScore(s).authority + "\tpagerank:" + pageRank.getVertexScore(s));
    writer.newLine();
}

我在文件 txt 上写入的结果对于每个节点总是相同的。 也许我在传递方法的参数上犯了一个错误。我不知道。

【问题讨论】:

    标签: java jung pagerank


    【解决方案1】:

    图表有多大?实际执行了多少次迭代?

    如果值只是 1/n(其中 n 是顶点数),那么这里可能发生的情况是它立即退出(您可以检查)。

    另一个明显的可能性是您在构建图形时犯了一个错误并使其对称,因此分数都是相同的。您应该也可以很容易地检查这一点。

    【讨论】:

    • 第一种情况为什么会立即退出?
    • 该图包含 34308 个节点。它在执行后对 PageRank 执行 200 次迭代,对 Hits 执行 200 次迭代。每个节点的结果接近 1/n,但不完全是 1/n。
    • 如果对变化的容忍度足够高,它可能会立即退出。
    • 您的评论与您的​​原始帖子相矛盾:它指出这些值接近但不完全是 1/n,而原始帖子指出所有节点的值都相同。是哪个?
    • 在我的第一篇文章中,我说过所有节点的值都相同,对吧!我没有说值都是 1/n。现在值接近 1/n 并且都相同。
    猜你喜欢
    • 1970-01-01
    • 2023-03-29
    • 2014-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-20
    • 2011-07-17
    相关资源
    最近更新 更多