主成分分析(PCA)在超大稀疏数据集上

我有大约1000个维度为50000的向量x_i,但它们非常稀疏;每个向量只有大约50-100个非零元素。我想在MATLAB中对这个数据集进行PCA,以减少数据的极端维度。

不幸的是,由于需要从所有样本中减去均值,我不知道有什么方法可以不通过中间完整矩阵来实现这一点。当然,一个1000×50000的矩阵太大,无法装入内存(实际上,当我尝试时,它会使我的整个电脑崩溃)。MATLAB内置的princomp函数在我尝试使用时也会使我的电脑崩溃。

所以我的问题是:有没有一种方法可以在不生成一个巨大的非稀疏矩阵作为中间步骤的情况下,对这些数据进行PCA?


回答:

你不需要形成完整的数据矩阵来减去均值,或者计算协方差矩阵。只需迭代地计算1000×1000的协方差矩阵(遍历数据向量)。一旦你形成了协方差矩阵,你可以通过中心化协方差矩阵来隐式地减去均值。请参阅这篇关于核PCA的论文末尾的部分,解释如何中心化一个核矩阵。只要将核矩阵基本视为与协方差矩阵相同即可。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注