【问题标题】:How to do the PCA on huge sparse dataset如何在庞大的稀疏数据集上进行 PCA
【发布时间】:2022-01-11 03:35:49
【问题描述】:

我的稀疏数据集包含 43600 个特征和 414800 个样本。 我只想将维度减少到 50 个特征。数据将以 414800*50 作为输出,还将获得 PCA 的系数、分数和 mu。 我不能使用常规的 PCA matlab 函数,因为它是稀疏数据集,我不能使用 for 或 parfor 循环手动执行它,因为它很耗时并且没有完成运行。

【问题讨论】:

    标签: matlab sparse-matrix pca dimensionality-reduction


    【解决方案1】:

    计算输入数据集的协方差矩阵,并将其转换为密集矩阵,在您的情况下为 43600 * 43600 矩阵。假设 S 是您输入 414800 * 43600 稀疏矩阵,这将是:

    Smul=full(S.'*S);
    Sm=full(mean(S));
    Sm2=414800 *Sm.'*Sm;
    Scov=Smul-Sm2; 
    

    对协方差矩阵应用eigs函数,得到前50个主要特征向量,

    [V,D] = eigs(Scov,50);
    

    并通过将零中心矩阵投影到特征向量上得到pcs,

    Sr=(S-Sm)*V; 
    

    Sr 是 S 的降维版本。

    【讨论】:

      猜你喜欢
      • 2012-11-05
      • 2012-09-23
      • 2012-05-29
      • 2012-08-02
      • 2012-11-15
      • 1970-01-01
      • 2016-02-09
      • 2016-07-31
      • 2020-12-30
      相关资源
      最近更新 更多