实际开发中的特征选择方法

1. 特征选择定义

特征选择是从现有特征中,选出与标签预测最为相关的特征,以减小特征规模的方法,其目的是去除无效或低效特征。其中,对无效特征和低效特征的筛选策略还有所差别

  • 无效特征是指对模型预测基本没有贡献的输入特征,它对模型预测无益且会浪费计算资源,应必须滤除

  • 而低效特征是指对模型预测贡献较少的输入特征,它的存在对减小模型预测误差意义不大,但对减小模型的预测方差还十分有意义(有助于增强模型鲁棒性,提高泛化性能),所以在计算速度可接受的情况下应尽量保留低效特征,只有在需要提升模型(线上)预测速度时,才应考虑滤除(部分或全部)低效特征

2. 特征选择方法

目前,主流的特征选择方法主要有以下三类:

  1. 过滤法(Filter)
  2. 包装法(Wrapper)
  3. 嵌入法(Embedded)

过滤法(Filter)通过统计学方法进行特征选择,具体又可细分成相关性特征选择(Correlation)和单变量特征选择(Univariate feature selection);相关性特征选择(Correlation)是根据特征与特征之间和特征与标签之间的相关性1,来进行特征选择的方法;单变量特征选择(Univariate feature selection)是通过线性回归和假设检验等来进行特征选择的方法,大多数情况下,实际效果并不如相关性特征选择那么好。

包装法(Wrapper)是通过穷举训练所有可能的特征组合的子集,根据训练效果来进行特征选择的方法。

嵌入法(Embedded)是利用树模型训练后产生的特征重要性列表,来进行特征选择的方法,常用的树模型有随机森林、XGBoost 和 LightGBM 等。

威斯康星乳腺癌(诊断)数据集上,上述特征选择方法的实测效果如下表所示

在这里插入图片描述

其中,效果最好的是遍历所有可能特征组合的包装法,这一结论也与理论直觉一致。同时不容忽视的是,过滤法中的相关性特征选择方法的效果与最优结果几乎一致(F1分数仅低于最高分 1 e − 6 1e^{-6} 1e6),同时考虑到相关性过滤法较包装法巨大的时间成本优势,所以不妨说它是默认首选的特征选择方法。

3. 实际开发中的特征选择经验

实际开发中,我们常采用相关性过滤法+人工干预包装法特征组合尝试的策略来进行特征选择,这可在最小的计算成本下取得满足任务需求的效果(这可能不是能达到的最优效果,但实际开发注重一个快赢和费效比的问题,所以在项目规定的时间内以最低的成本达到满足任务需求的效果即可)。

实际操作方法是:

  1. 先用根据(特征与特征之间的和特征与标签之前的)相关性矩阵确定一批与标签相关性较低的低效特征(特征与标签低相关性的判断阈值是一个超参数,可根据具体数据情况人工选定),和两两间相关性过高的自相关特征对(特征间相关性过高判断阈值也是一个超参数,一般取相关性系数大于 0.2,也可根据实际情况具体调整);

  2. 然后去除自相关特征对中与标签相关性较低的那一项,然后训练模型并评估模型在验证集上的表现是否出现显著下降(去除自相关特征对神经网络等线性模型十分重要2,一般去除自相关特征后,不会出现模型效果下降的情况);

  3. 最后对低效特征按与标签的相关性从小到大排列,逐个(或逐几个一组)去除后训练模型并评估其在验证集上的效果,若未出现明显下降且模型预测速度仍不满足任务需求则重复此过程,直到满足业务需求效果或全部低效特征均已去除为止。


  1. 仅计算特征与特征之间的相关性,过滤法是一种无监督特征选择方法,不需输入标签信息;
    若增加计算特征与标签之间的相关性后,过滤法是一种有监督特征选择方法,需要输入标签信息。 ↩︎

  2. 而对于随机森林等树模型,可以不考虑自相关特征的影响 ↩︎

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值