我们在收集了大量数据和特征衍生后,会发现并不是所有特征都是有效的。有些特征都是零值(没有任何信息),有些特征对模型产生了负面影响,还有一些特征的数值重复度很高,几乎是完全相同的特征。
过多的无效特征会严重影响模型训练的效率,甚至影响模型的训练结果。因此,我们需要进行一轮特征筛选。特征筛选的目的是剔除无效特征,保留有效特征,从而提高模型的训练效率和训练结果。
在特征筛选的初始阶段,我们需要快速剔除那些信息量有限或几乎没有有效信息的特征。判断特征是否有用可以使用两个指标:缺失值比例和单变量方差。
对于某个特征来说,如果它的缺失值比例过高(例如超过90%),除非从业务角度可以用填补方法处理,否则可以认为该特征的信息严重缺失,没有进一步分析的必要,可以直接剔除。
由于数据探查环节已经确认了本案例中的数据集并不存在缺失值,因此跳过这一步。即使存在缺失值比例过高的字段,处理起来也是非常简单的。
对于没有缺失值的特征,我们可以通过计算方差来评估其信息量。通常来说,方差越小,特征包含的信息越少。如果某个特征的方差为0,说明该特征的所有取值都相同,相当于没有任何有效信息,这样的特征也应当被快速识别并剔除。
这个过程可以使用sklearn库中的VarianceThreshold评估器来快速完成。
特征的方差会受到其取值大小的影响。例如,一个特征的取值如果本身较大,那么计算出的方差也会较大。因此,对于连续变量,除非我们很确定所有特征的量纲(单位)一致,否则设置一个阈值来筛选特征意义不大。通常情况下只剔除那些方差为0的特征。
从上表中可以看出,StandardHours
、Over18
、EmployeeCount
这三个特征的方差为0,即这三个特征的所有取值都相同,没有任何有效信息,可以直接剔除。