【问题标题】:Principal component analysis m-by-n matrix implementation主成分分析 m×n 矩阵实现
【发布时间】:2011-12-11 09:59:06
【问题描述】:

有谁知道如何在 matlab 中对 m×n 矩阵进行主成分分析 (PCA) 以进行归一化?

【问题讨论】:

    标签: algorithm matlab normalization pca


    【解决方案1】:

    假设每一列都是一个样本(也就是说,你有 n 样本每个维度 m),并且它存储在一个矩阵 A 中,你首先必须从列中减去意味着:

          Amm = bsxfun(@minus,A,mean(A,2));
    

    然后您想对1/size(Amm,2)*Amm*Amm' 进行特征值分解(如果您想将交互作为无偏协方差矩阵,您可以使用1/(size(Amm,2)-1) 作为比例因子):

          [v,d] = eig(1/size(Amm,2)*Amm*Amm');
    

    v 的列将成为您的 PCA 向量。 d 的条目将是您相应的“差异”。

    但是,如果您的m 很大,那么这不是最好的方法,因为存储Amm*Amm' 是不切实际的。您想改为计算:

          [u,s,v] = svd(1/sqrt(size(Amm,2))*Amm,'econ');
    

    这次u 包含您的 PCA 向量。 s 的条目通过sqrtd 的条目相关。

    注意:如果m 很大,还有另一种方法,即计算eig(1/size(Amm,2)*Amm '*Amm);(注意与上面相比的转置切换)并做一些小技巧,但这是一个更长的解释,所以我不会明白进入它。

    【讨论】:

    • 精彩的分解和解释 +1!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-06
    • 2014-10-18
    • 1970-01-01
    • 2013-11-30
    • 1970-01-01
    相关资源
    最近更新 更多