近似大型对称矩阵的最高3个特征值和特征向量的快速方法
Fast methods for approximating the highest 3 eigenvalues and eigenvectors of a large symmetric matrix
我正在编写代码来计算n
Matrix,n = 500,000
的非常大的n
的经典多维缩放(缩写为MDS)。
在MDS的一个步骤中,我需要计算n
矩阵n
的最高三个特征值及其相应的特征向量。该矩阵称为B
矩阵。我只需要这三个特征向量和特征值。计算大型矩阵的特征向量和特征值的常见方法需要很长时间,而且我不需要非常准确的答案,因此我正在寻求估计对向量和特征值的估计。
一些参数:
-
B
矩阵是对称的,真实的,相当密集的 - 理论上
B
的特征值分解应始终产生实数。 - 我不需要完全精确的估计,只是一个快速的估计。我需要在几个小时内完成。
- 我在python和c 中写
我的问题:是否有快速的方法来估计如此大的B
矩阵的三个最高特征向量和特征值?
我的进度:我找到了一种近似矩阵的最高特征值的方法,但是我不知道我是否可以将其推广到最高三个。我还发现了这篇论文于1996年写的,但是我很难阅读它。
g。Golub和C.F Van Loan Matrix Computations在第9章中的第2个指出,兰斯佐斯算法是一个选择(除了矩阵理想情况下应该稀疏 - 它显然也适用于非Sparse的算法)
https://en.wikipedia.org/wiki/lanczos_algorithm
您可以获得B
的最高特征向量,然后使用该特征向量将数据转换为B'
。然后弹出B'
的第一列并获取B''
,以便您可以获得B''
的最高特征向量:足以组成B
的合理的第二高特征向量。然后是第三个。
关于速度:您可以随机对该巨大数据集进行随机对N
项目的数据集。如果您只得到三个维度,我希望您还可以摆脱大多数数据,以获取特征向量的概述。您可以称其为"选举民意调查"。我无法帮助您测量错误率,但是我将尝试几次对1K项目进行采样,看看结果是否或多或少相同。
现在您可以获得几个"民意调查"的平均值来构建"预测"。
在此线程中查看建议
C
中最大的特征值(以及相应的特征向量)所建议的您可以使用具有C 接口的Arpack软件包。
- 如何声明特征矩阵,然后通过嵌套循环初始化它
- 特征::矩阵<双精度,1,3> 结构类型函数中的返回类型函数
- 有没有一种方法可以通过"typedef"为重新定义的基本类型定义特征和强制转换运算符
- 特征命名访问向量段
- 将特征矩阵的向量设置为0
- 特征:模板函数中矩阵的平面图
- basic_string的前导/尾部不区分空格的特征
- 特征 3 类的模板专用化
- 特征 c++:复矩阵的面积双曲正切(atanh)
- C++ 中的特征向量计算
- 根据C++标准的定义实现"is_similar"类型特征
- 计算数组的特征值/向量,而不是使用特征 3 计算矩阵
- C++ 查找矩阵的特征值和特征向量
- 使用python在非阳性组件中使用python与cpp中的特征库来计算特征值
- 近似大型对称矩阵的最高3个特征值和特征向量的快速方法
- C++ 中的特征库给出错误 C2660:"特征::矩阵基<Derived>::特征值":函数不接受 2 个参数
- 特征库中Schur因子分解中的重排序特征值
- GPU上计算特征值和特征向量的性能较差
- 特征向量和 Matlab 中的不同特征向量和特征值可能会产生错误
- 如何在OpenCV中找到最低特征值对应的特征向量