【发布时间】:2017-04-04 21:53:54
【问题描述】:
我正在使用 PCA 来降低 N 维数据集的维数,但我想增强对大型异常值的鲁棒性,因此我一直在研究 Robust PCA 代码。
对于传统的 PCA,我使用了 python 的 sklearn.decomposition.PCA,它很好地将主成分作为向量返回,然后我可以将我的数据投影到上面(需要说明的是,我还使用 SVD 编写了我自己的版本,所以我知道该方法是如何工作的)。我发现了一些预编码的 RPCA python 代码(如https://github.com/dganguli/robust-pca 和https://github.com/jkarnows/rpcaADMM)。
第一个代码基于 Candes 等人。 (2009)方法,并返回数据集 D 的低秩 L 和稀疏 S 矩阵。第二个代码使用矩阵分解的 ADMM 方法(Parikh, N., & Boyd, S. 2013)并返回 X_1、X_2、X_3 矩阵.我必须承认,我很难弄清楚如何将这些连接到标准 PCM 算法返回的主轴。任何人都可以提供任何指导吗?
具体来说,在一个数据集 X 中,我有一个由 N 个 3-D 点组成的云。我通过 PCA 运行它:
pca=sklean.decompose.PCA(n_components=3)
pca.fit(X)
comps=pca.components_
这 3 个组件是 3-D 向量,定义了我将所有点投影到的新基础。使用稳健的 PCA,我得到矩阵 L+S=X。然后运行 pca.fit(L) 吗?我原以为 RPCA 会给我返回特征向量,但在构建协方差矩阵或执行 SVD 时有内部步骤来抛出异常值。
也许我认为的“强大的 PCA”不是其他人使用/编码的方式?
【问题讨论】:
-
如果您能解释将这些矩阵连接到标准 PCM 算法的向量的问题是什么,我认为这会有所帮助。
-
我添加到问题中是为了更清楚。