在scikit-learn中,有一个叫做PCA的方法。这个方法接受一个百分比参数。这个网站对该参数的解释如下:
请注意下面的代码中,组件数量参数设置为.95。这意味着scikit-learn选择最小的主成分数量,使得保留了95%的方差。
> from sklearn.decomposition import PCA> # 创建模型实例 > pca = PCA(.95)
我对这个解释的理解有点模糊。假设PCA的输出如下:
- PC1解释了完整方差的70%
- PC2解释了完整方差的15%
- PC3解释了完整方差的10%
- PC4解释了完整方差的4%
- PC5解释了完整方差的1%
那么,语句PCA(0.71)会返回PC1和PC5(因为它们解释了正好71%的方差),还是会返回PC1和PC2?如果我想获取0.5%的方差,即语句PCA(0.005)会返回哪个PC?
回答:
你提出了一个更普遍的问题,尽管在实践中经常使用,但很少在教程和介绍性文章中明确提到。这样的问题虽然我自己从未想过,但从初学者的角度来看是完全合理的(初学者通常不受一些惯例的约束,而这些惯例是更有经验的从业者认为理所当然的,他们甚至可能没有注意到这些惯例…)。
通常,当我们选择主成分的数量时(例如用于降维、可视化等),我们选择一个数字k
,隐含的意思是从PC1开始,按顺序继续,直到(并包括)PCk。这是R语言中caret
包的preProcess
函数背后的原则(可以说也是所有执行类似任务的函数背后的原则,无论是在哪个软件包中)。
换句话说,至少据我所知,在你描述的情况下,我们从不通过挑选来选择PC’s(例如,选择PC2、PC4和PC5)。相反,我们总是选择一个k < n
(这里n=5
),然后我们继续取前k
个PC,即从PC1开始。