具有相关特征和异常值的主成分分析

时间:2018-03-26 17:48:34

标签: python scikit-learn statistics pca

我正在使用Python 3中的scikit learn在形状300,1500的数据集上执行PCA。 在scikit学习和普遍接受的方法中,我在PCA实施的背景下有以下问题。

1)在进行PCA之前,我是否删除高度相关的列?我有67列具有相关性> 0.9。 PCA是否自动处理这种相关性而忽略它们?

2)我是否需要在执行PCA之前删除异常值?

3)如果我必须删除异常值,最好如何处理这个问题。当我尝试移除异常值时,使用每列的z分数(z-score> 3)我只剩下15个观察值。这似乎是错误的做法。

4)最后是我应该用来选择P分量的理想累积解释方差量。在这种情况下,大约150个组件给我90%的解释方差

1 个答案:

答案 0 :(得分:1)

关于使用PCA,PCA将发现数据中差异最大的轴。因此:

  1. 不,您无需删除相关功能。

  2. 您不应该因任何与PCA相关的先验原因而删除异常值。也就是说,如果您认为他们可能会操纵您的结果进行分析或预测,您可以考虑将其删除,尽管我不认为它们本身就是PCA的问题。

  3. 这可能不是正确的做法。首先,您首先要查看数据并查找异常值。此外,我不会假设您的数据分布并应用基本的z分数。一些关于删除异常值的标准的Google搜索在这里很有用。

  4. 人们使用PCA有各种截止点。 99%可能很常见,但我不知道是否存在严格的规则。如果你的目标是预测,那么速度和预测的准确性之间可能存在折衷。您需要找到适合您需要的截止值。