我想对由大约 40 000 个样本组成的数据集执行主成分分析,每个样本显示大约 10 000 个特征。
使用 Matlab princomp 函数需要很长时间......最快的算法是什么?i7 双核 / 4GB Ram 需要多长时间?
谢谢你的支持
我想对由大约 40 000 个样本组成的数据集执行主成分分析,每个样本显示大约 10 000 个特征。
使用 Matlab princomp 函数需要很长时间......最快的算法是什么?i7 双核 / 4GB Ram 需要多长时间?
谢谢你的支持
交叉发布: https ://scicomp.stackexchange.com/questions/1681/what-is-the-fastest-way-to-calculate-the-largest-eigenvalue-of-a-general-matrix/7487#7487
最近对此进行了一些很好的研究。新方法使用“随机算法”,只需读取少量矩阵即可在最大特征值上获得良好的准确性。这与需要多次矩阵向量乘法才能达到高精度的幂迭代形成对比。
您可以在此处阅读有关这项新研究的更多信息:
http://math.berkeley.edu/~strain/273.F10/martinsson.tygert.rokhlin.randomized.decomposition.pdf
http://arxiv.org/abs/0909.4061
此代码将为您完成:
http://cims.nyu.edu/~tygert/software.html
https://bitbucket.org/rcompton/pca_hgdp/raw/be45a1d9a7077b60219f7017af0130c7f43d7b52/pca.m
http://code.google.com/p/redsvd/
https://cwiki.apache.org/MAHOUT/stochastic-singular-value-decomposition.html
如果您选择的语言不在其中,您可以很容易地滚动您自己的随机 SVD;它只需要矩阵向量乘法,然后调用现成的 SVD。