特征筛选的原理与实现

特征工程又包含了Feature Selection(特征选择)、Feature Extraction(特征提取)和Feature construction(特征构造)等子问题,本章内容主要讨论特征选择相关的方法及实现。

在实际项目中,我们可能会有大量的特征可使用,有的特征携带的信息丰富,有的特征携带的信息有重叠,有的特征则属于无关特征,如果所有特征不经筛选地全部作为训练特征,经常会出现维度灾难问题,甚至会降低模型的准确性。因此,我们需要进行特征筛选,排除无效/冗余的特征,把有用的特征挑选出来作为模型的训练数据。

特征选择介绍

1.特征按重要性分类

  • 相关特征:
    对于学习任务(例如分类问题)有帮助,可以提升学习算法的效果;
  • 无关特征:
    对于我们的算法没有任何帮助,不会给算法的效果带来任何提升;
  • 冗余特征:
    不会对我们的算法带来新的信息,或者这种特征的信息可以由其他的特征推断出;

特征类型筛选

示例代码

# 数字特征(包括int,float)
df.select_dtypes(include=[np.number])
# 数字特征(bool)
df.select_dtypes(include='bool')
# 数字特征(float64)
df.select_dtypes(include='float64')
# 数字特征(不包括float64)
df.select_dtypes(exclude='float64')
# 类型特征
df.select_dtypes(include=[np.object])

2.特征选择的目的

对于一个特定的学习算法来说,哪一个特征是有效的是未知的。因此,需要从所有特征中选择出对于学习算法有益的相关特征。而且在实际应用中,经常会出现维度灾难问题。如果只选择所有特征中的部分特征构建模型,那么可以大大减少学习算法的运行时间,也可以增加模型的可解释性。

猜你喜欢

转载自blog.csdn.net/qq_39974560/article/details/107927707