StandardScaler之后的PCA方法产生的结果不佳

时间:2018-03-21 11:03:01

标签: machine-learning

我尝试使用scikit-learn库对问题进行分类。我得到10000x10维数据,我发现非常奇怪的现象(对我而言)。

pca = PCA(n_components = 2)
ss = StandardScaler()
X = pca.fit_transform(X) # explained_variance_ratio_ = 0.8
X = ss.fit_transform(X)

在这种情况下,我得到了一个很好的explain_variance_ratio_几乎99%。但是当我首先应用缩放时,突然PCA的性能大幅下降,explain_variance_ratio降低到20%。

pca = PCA(n_components = 2)
ss = StandardScaler()
X = ss.fit_transform(X)
X = pca.fit_transform(X) # explained_variance_ratio_ = 0.2

是什么让这个与众不同?标准缩放器只是重新缩放过程,所以我认为没有信息丢失。我可以在申请PCA之前实现方便性吗?或者我必须为数学保险选择标准化?

1 个答案:

答案 0 :(得分:0)

假设您有两个测量距离的功能 A B ,两者都以米为单位。与功能 B 相比,功能 A 具有更大的数字范围(假设为1 - 1000),其具有范围(假设为1-10)。 然后,与 B 相比,功能 A 将在数据中捕获更大的方差,因此扩展功能不是一个好主意在这种情况下 。  但是,如果功能有两个不同的单位(例如,公斤和米),那么扩展功能将是明智的。

P.S: PCA 会保留那些有最大值的组件。的方差