【问题标题】:Calculating eigen values of very large sparse matrices in python在python中计算非常大的稀疏矩阵的特征值
【发布时间】:2015-11-18 00:44:34
【问题描述】:

我有一个非常大的稀疏矩阵,它表示马尔可夫链中的一个转换矩阵,即矩阵的每一行之和等于 1,我有兴趣找到第一个特征值及其对应的小于 1 的向量.我知道特征值在 [-1, 1] 部分有界,它们都是实数(非复数)。
我正在尝试使用 python 的 scipy.sparse.eigs 函数计算值,但是,函数的参数之一是要估计的特征值/向量的数量,并且每次我增加要估计的参数数量时,特征值的数量这也是一个成长的。
不用说,我使用带有值 'LR'which 参数来获得 k 个最大特征值,其中 k 是要估计的值的数量。
有谁知道如何解决这个问题(找到小于 1 的第一个特征值及其对应的向量)?

【问题讨论】:

  • 您可能需要研究底层 ARPACK 代码的文档。
  • @hpaulj,我已经这样做了,没有太大帮助
  • 您是否理解问题和矩阵,足以知道是否有多个eigs 具有此值?换句话说,这是矩阵的真实属性,还是代码中的错误?
  • 您可能首先将您的链拆分为强连接的组件(参见stackoverflow.com/questions/21308848/…),然后计算每个组件的第二大特征值。 IIUC,您正在寻找的答案是其中最大的一个。 (对于一般矩阵,这样的问题在数值上是相当困难的,但是矩阵的马尔可夫链结构使它变得容易得多。)
  • 也许你应该向 scipy 报告一个错误。

标签: python scipy sparse-matrix eigenvector eigenvalue


【解决方案1】:

我同意@pv。如果您的矩阵S 是对称的,您可以将其视为矩阵I - S 的拉普拉斯矩阵。 I - S 的连通分量的数量是该矩阵的零特征值的数量(即与 S 的特征值 1 相关联的空间的维数)。您可以检查相似度矩阵为I - S*S' 的图形的连通分量的数量,例如scipy.sparse.csgraph.connected_components

【讨论】:

  • 如果矩阵不对称怎么办?
猜你喜欢
  • 2012-10-23
  • 1970-01-01
  • 2012-12-17
  • 2012-02-23
  • 2015-11-28
  • 2022-01-25
  • 2015-01-10
  • 1970-01-01
  • 2013-09-25
相关资源
最近更新 更多