7,特征的选择

2020-07-17 17:37:34 浏览数 (1)

一,特征工程

有这么一句话在业界广泛流传:数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。根据特征使用方案,有计划地获取、处理和监控数据和特征的工作称之为特征工程,目的是最大限度地从原始数据中提取特征以供算法和模型使用

特征工程包括特征的提取,特征的预处理,特征的选择和特征的监控等内容。

本文我们聚焦如何使用sklearn中的feature_selection库来进行特征选择。即如何从多个特征中选择出若干有效的特征。

二,特征选择概述

当数据预处理完成后,我们需要选择有意义的特征输入机器学习的算法和模型进行训练。通常来说,从两个方面考虑来选择特征:

  • 特征是否发散:如果一个特征不发散,例如方差接近于0,也就是说样本在这个特征上基本上没有差异,这个特征对于样本的区分并没有什么用。
  • 特征与目标的相关性:这点比较显见,与目标相关性高的特征,应当优选选择。除方差法外,本文介绍的其他方法均从相关性考虑。

常见的特征选择方法有以下两种:

  • Filter:过滤法,按照发散性或者相关性对各个特征进行评分,设定阈值或者待选择阈值的个数,选择特征。
  • Embedded:嵌入法,先使用某些机器学习的算法和模型进行训练,得到各个特征的权值系数,根据系数从大到小选择特征。类似于Filter方法,但是是通过训练来确定特征的优劣。

三,Filter过滤法

1,方差选择法

使用方差选择法,先要计算各个特征的方差,然后根据阈值,选择方差大于阈值的特征。

2,相关系数法

使用相关系数法,先要计算各个特征对目标值的相关系数。

用feature_selection库的SelectKBest类结合相关系数来选择特征的代码如下:

3,卡方检验

经典的卡方检验是检验定性自变量对定性因变量的相关性。假设自变量有N种取值,因变量有M种取值,考虑自变量等于i且因变量等于j的样本频数的观察值与期望的差距,构建统计量:

这个统计量的含义简而言之就是自变量对因变量的相关性。用feature_selection库的SelectKBest类结合卡方检验来选择特征的代码如下:

4,互信息法

经典的互信息也是评价定性自变量对定性因变量的相关性的。相关系数,卡方检验,互信息法选择特征的结果常常是类似的。

四,Embedded嵌入法

1,基于惩罚项的特征选择法

使用带惩罚项的基模型,除了筛选出特征外,同时也进行了降维。使用feature_selection库的SelectFromModel类结合带L1惩罚项的逻辑回归模型,来选择特征的代码如下:

2,基于树模型的特征选择法

树模型中GBDT也可用来作为基模型进行特征选择,使用feature_selection库的SelectFromModel类结合GBDT模型,来选择特征的代码如下:

0 人点赞