【问题标题】:How do I obtain the eigenvalues of a huge matrix (size: 2x10^5)如何获得一个巨大矩阵的特征值(大小:2x10^5)
【发布时间】:2011-08-07 08:26:12
【问题描述】:

我有一个大小为 200000 X 200000 的矩阵。我需要找到它的特征值。直到现在我一直在使用 matlab,但是由于 matlab 无法处理矩阵的大小,我已经转移到 perl,现在甚至 perl 是无法处理这个巨大的矩阵,它说内存不足。我想知道我是否可以使用其他可以处理如此庞大数据的编程语言找出这个矩阵的特征值。元素大多不是零,所以没有选择稀疏矩阵的选择。请帮我解决这个问题。

【问题讨论】:

  • 在双精度中,仅存储密集的 200000x200000 矩阵将是大约 300GB 的内存。问题很可能不是您使用的编程语言,而是您正在使用的计算机的 RAM 和交换空间。
  • 您知道矩阵的性质吗?如果它是一个随机高斯矩阵(或者如果你可以将你的数据近似为这样),我可以提供几个分析结果来告诉你特征值的分布(渐近地)。对于这种大小的矩阵,如果您使用渐近结果,您几乎不会出错,而且我敢打赌,来自该分布的 200000 点样本将非常接近实际特征值。如果不是这样,你知道你的要求是不是很小?例如,您需要最大的特征值还是全部?
  • 进一步沿着 yoda 的思路:如果你在做统计工作(包括很多所谓的数据挖掘和机器学习),你真的需要使用完整的数据集还是较小的(~1e4)样本就足够了吗?您可能会考虑提供有关此矩阵背后问题的一些详细信息,可能会有更好的方法来获得您所追求的。

标签: perl matlab matrix


【解决方案1】:

我认为您可能仍然对 MATLAB 感到满意。看看他们的distributed computing toolbox。你需要某种并行环境,一个计算集群。

如果您没有计算集群,您可以研究可在Amazon EC2 or similar 上使用的分布式特征值/向量计算方法。

还有关于并行特征值计算方法here 的讨论,这可能会指导您使用比 Perl 更好的库和编程方法。

【讨论】:

    猜你喜欢
    • 2019-04-29
    • 2021-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-17
    • 2016-04-11
    • 1970-01-01
    • 2019-06-09
    相关资源
    最近更新 更多