【问题标题】:Eigenvector in directed graph有向图中的特征向量
【发布时间】:2017-03-08 07:24:15
【问题描述】:

我想使用 igraph 包测量 R 中 262000 个节点和 1M 条边的有向图的特征向量中心性。当我运行命令时出现此错误:

> ev<-evcent(amazon,directed=TRUE)

.Call("R_igraph_eigenvector_centrality", graph,directed, scale, : At arpack.c:1174 : ARPACK 错误, 达到最大迭代次数 De plus : 警告消息: In .Call("R_igraph_eigenvector_centrality", graph,定向,缩放,:在 arpack.c:776:ARPACK 求解器未能收敛(1001 次迭代,0/1 特征向量收敛)

不知道这个错误是什么意思???

【问题讨论】:

  • 特征向量中心性在有向图和非对称矩阵中可能存在问题。 (注意?eigen_centrality 中的警告!)关于方式的简短讨论是here。考虑其他有向图的中心性度量,例如 Katz 或页面排名。

标签: r igraph graph-theory directed-graph eigenvector


【解决方案1】:

错误的意思是:Maximum number of iterations reached

您可以增加最大迭代次数。这是一个可重现的示例:

先做个图表:

> g <- make_ring(1000, directed=FALSE)

然后将默认的迭代次数设置为一个小数字:

> arpack_defaults$maxiter = 10

将其传递给 eigen_centrality 并得到您的错误:

> e = eigen_centrality(g, options=arpack_defaults)
Error in .Call("R_igraph_eigenvector_centrality", graph, directed, scale,  : 
  At arpack.c:944 : ARPACK error, Maximum number of iterations reached
In addition: Warning message:
In .Call("R_igraph_eigenvector_centrality", graph, directed, scale,  :
  At arpack.c:776 :ARPACK solver failed to converge (11 iterations, 0/1 eigenvectors converged)

所以让我们尝试更多的迭代:

> arpack_defaults$maxiter = 1000

看看这是否有效:

> e = eigen_centrality(g, options=arpack_defaults)

没有错误!

我不知道您的图表需要多少次迭代,或者需要多长时间。只需不断添加零,直到它收敛并正确返回,或者您放弃,因为它花费的时间太长。

【讨论】:

  • 我添加了arpack_defaults$maxiter=10000 的值,但仍然有同样的问题,为什么当我们在同一个数据集中以 directed 运行 eigen_centralityFALSE 我们在同一秒内得到响应,而当 directed=TRUE 时,大约需要 1 小时才能得到错误。
  • 帮助(arpack)中有一条说明,如果输入矩阵是对称的,则可以加快计算速度。如果directed=FALSE,那么邻接矩阵必须是对称的,所以这可能是报告的加速。建议您使用较小的图表进行调查以了解此问题。
猜你喜欢
  • 1970-01-01
  • 2015-06-30
  • 2013-05-11
  • 2023-03-08
  • 2016-10-24
  • 2011-03-26
  • 1970-01-01
  • 2014-05-11
  • 2019-04-16
相关资源
最近更新 更多