稳健PCA,就是一种通过构造稳健的均值向量和稳健的协方差矩阵的主成分分析方法,其目标是从输入矩阵中去除稀疏缺失并获得低秩近似,可以有效消除数据集中异常值的影响和提高寻找大型数据集中关键主成分的能力
data(iris)
X <- iris[,1:4]
library(matrixStats)
colVars(as.matrix(X))#方差跨度不大,可以不进行scale
#0.6856935 0.1899794 3.1162779 0.5810063
稳健PCA(传统用法)
pc.rob <- princomp(X, covmat= MASS::cov.rob(X))
#协方差矩阵或是由stats::cov.wt和MASS::cov.xxx返回的协方差列表。
#如果提供了,用这个代替x的协方差矩阵。
factoextra::fviz_pca_ind(X = pc.rob,
col.ind = iris[,5],
repel = T,
addEllipses = T)
稳健PCA
常规PCA
pc <- princomp(X)
factoextra::fviz_pca_ind(X = pc,
col.ind = iris[,5],
repel = T,
addEllipses = T)
常规PCA
PS: 似乎没太大差异,原因在于原数据集比较小且无异常值,记录在此,以后慢慢研究
除此之外,还有一些专门用来做robust PCA的包,包括pcaPP(通过投影追踪),rpca(包括“稳健稀疏PCA”)和rospca包
网友评论