【发布时间】:2017-04-10 01:22:45
【问题描述】:
我正在编写代码来计算一个非常大的n 通过n 矩阵的Classical Multidimensional Scaling(缩写为MDS),在我的示例中为n = 500,000。
在 MDS 的一个步骤中,我需要通过 n 矩阵计算 n 的最高三个 eigenvalues and their corresponding eigenvectors。该矩阵称为B 矩阵。我只需要这三个特征向量和特征值。计算大矩阵的特征向量和特征值的常用方法需要很长时间,并且我不需要非常准确的答案,所以我正在寻求对特征向量和特征值的估计。
一些参数:
-
B矩阵是symmetric,real,相当dense - 理论上
B的特征值分解应该总是产生实数。 - 我不需要完全精确的估计,只需要快速估计。我需要它在几个小时内完成。
- 我用 python 和 C++ 编写
我的问题:有没有快速的方法来估计如此大的B 矩阵的三个最高特征向量和特征值?
我的进步:我找到了一个method of approximating the highest eigenvalue of a matrix,但不知道能不能概括到前三名。我也找到了this paper written in 1996,但它非常技术性很强,我很难阅读。
【问题讨论】:
-
在给定 64 位浮点条目的情况下,该矩阵需要超过 1 TB 的存储空间。忘记特征向量——即使是做一个矩阵向量乘法看起来很痛苦。
-
但是不需要存储原始矩阵!它是在 MDS 算法中间接给出的,您可以使用它来执行矩阵向量乘法,而无需先计算矩阵。
-
您是否查看过用于大数据的近似 MDS?例如。见pike.cs.ucla.edu/~weiwang/paper/CIMCV06.pdf
标签: python c++ algorithm matrix eigenvalue