为什么进行特征筛选时前要先用相关性筛一遍再进行降维?
首先,特征筛选时筛掉相关性高的特征是任何建模过程都绕不开的步骤,是基础中的基础。而降维则不是,降维只在某些特定场合用得上,比如每个基因作为一个特征有几万个,或每个像素作为一个特征有成千上万个像素。
所以一个是普遍的做法,一个是不普遍的做法,任何情况下先使用普遍的做法才是正常人的反应。
但这道题真正想问的是:如果不用相关性先筛一遍特征而直接降维,会有什么弊端吗?
结论(以PCA为例):降维的时候,把多个特征融合成一个特征,这其间必然伴随信息的提炼和损失,那么提炼什么?损失什么呢?我们很自然而然地推测:权重高的信息会被留下,权重低的则会被损失。即是说,由于高相关性的特征重复出现,这些特征会被赋予本不属于它的高权重,降低其他特征所蕴含的信息。
举个例子,如果一共有100个(99个 A i A_i Ai和1个B)特征,这99个 A i A_i Ai都高度相关,它们蕴含的信息其实只相当于1个特征蕴含的信息,也就是说这100个特征其实只相当于2个特征A和B,如果让人类来做特征筛选,最后只会剩下1个A和1个B。但是如果让PCA来降维会怎样呢?结果必然是B的信息几乎损失完,只留下A的信息,因为A有99个,B只有1个。
以下是测试:
import numpy as np
import pandas as pd
from sklearn.decomposition import PCA
对照组
# 实例化PCA,n_components=1意思是让它降到1维
pca = PCA(n_components=1)
# 测试用数据,可以看出特征0是个具有单调性的特征,而特征1是个周期特征
test1 = pd.DataFrame([[1,2,3,4,5,6], [1,6,1,6,1,6]]).T
test1