我正在使用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个三维点云。我对其进行PCA处理:
这3个组件是3D向量,定义了新基准,我将所有点投影到该基准上。使用Robust PCA,我得到矩阵L+S=X。那么是否需要运行pca.fit(L)?我本以为RPCA会给我返回特征向量,但在构建协方差矩阵或执行SVD的过程中,它有内部步骤来排除异常值。
也许我所谓的“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个三维点云。我对其进行PCA处理:
pca=sklean.decompose.PCA(n_components=3)
pca.fit(X)
comps=pca.components_
这3个组件是3D向量,定义了新基准,我将所有点投影到该基准上。使用Robust PCA,我得到矩阵L+S=X。那么是否需要运行pca.fit(L)?我本以为RPCA会给我返回特征向量,但在构建协方差矩阵或执行SVD的过程中,它有内部步骤来排除异常值。
也许我所谓的“Robust PCA”并不是其他人使用/编码的方式?