我正在使用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%的解释方差
答案 0 :(得分:1)
关于使用PCA,PCA将发现数据中差异最大的轴。因此:
不,您无需删除相关功能。
您不应该因任何与PCA相关的先验原因而删除异常值。也就是说,如果您认为他们可能会操纵您的结果进行分析或预测,您可以考虑将其删除,尽管我不认为它们本身就是PCA的问题。
这可能不是正确的做法。首先,您首先要查看数据并查找异常值。此外,我不会假设您的数据分布并应用基本的z分数。一些关于删除异常值的标准的Google搜索在这里很有用。
人们使用PCA有各种截止点。 99%可能很常见,但我不知道是否存在严格的规则。如果你的目标是预测,那么速度和预测的准确性之间可能存在折衷。您需要找到适合您需要的截止值。