我正在编写代码以计算Classical Multidimensional Scaling(缩写为MDS)的n
一个非常大的n
矩阵,在我的示例中为n = 500,000
。
在MDS的一个步骤中,我需要通过n
矩阵计算n
的最高三eigenvalues and their corresponding eigenvectors。该矩阵称为B
矩阵。我只需要这三个特征向量和特征值。计算大矩阵的特征向量和特征值的常用方法需要很长时间,而且我不需要非常准确的答案,所以我正在寻找特征向量和特征值的估计。
一些参数:
B
矩阵为symmetric,real,且非常dense B
的特征值分解应始终产生实数。 我的问题:是否有快速估算如此大B
矩阵的三个最高特征向量和特征值的方法?
我的进步:我找到了method of approximating the highest eigenvalue of a matrix,但我不知道是否可以将它推广到最高的三个。我也找到this paper written in 1996,但这对我来说非常技术性和难以阅读。
答案 0 :(得分:8)
-G。 Golub和C.F Van Loan矩阵计算第9章第2条说明Lanczos算法是一个选择(除了矩阵理想地应该是稀疏的 - 它显然也适用于非稀疏矩阵)
答案 1 :(得分:2)
您可以获得B
的最高特征向量,然后使用该特征向量将数据转换为B'
。然后弹出B'
的第一列并获取B''
,这样您就可以获得B''
的最高特征向量:它足以构成B
合理的第二高特征向量。然后是第三个。
关于速度:您可以随机将该巨大数据集采样为N
个项目的数据集。如果您只获得三个维度,我希望您也可以摆脱大部分数据以获得特征向量的概述。你可以称之为:'选举民意调查'。我无法帮助您测量错误率,但我会尝试多次采样1k项,并查看结果是否大致相同。
现在你可以得到几个'民意测验'的平均值来建立'预测'。
答案 2 :(得分:0)