3
当n,p都大时,PCA太慢:替代方案?
问题设定 我有高维度(4096)的数据点(图像),我正尝试以2D方式进行可视化。为此,我以类似于以下Karpathy示例代码的方式使用t- sne。 该scikit学习文档,建议使用PCA先降低数据的维度: 如果特征数量非常多,强烈建议使用另一种降维方法(例如,对于密集数据使用PCA或对于稀疏数据使用TruncatedSVD)将尺寸数量减少到合理的数量(例如50个)。 我正在使用Darks.Liu的以下代码在Java中执行PCA: //C=X*X^t / m DoubleMatrix covMatrix = source.mmul(source.transpose()).div(source.columns); ComplexDoubleMatrix eigVal = Eigen.eigenvalues(covMatrix); ComplexDoubleMatrix[] eigVectorsVal = Eigen.eigenvectors(covMatrix); ComplexDoubleMatrix eigVectors = eigVectorsVal[0]; //Sort sigen vector from big to small by eigen values List<PCABean> beans = new ArrayList<PCA.PCABean>(); for (int i = 0; i < eigVectors.columns; i++) { …