特征选择
2021-9-5
| 2023-8-6
0  |  阅读时长 0 分钟
type
status
date
slug
summary
tags
category
icon
password
Property
 

特征的来源

在做数据分析的时候,特征的来源一般有两块:一块是业务已经整理好各种特征数据,需要去找出适合问题需要的特征;另一块是从业务特征中去寻找高级数据特征。
当业务已经整理好各种特征数据时,此时特征数可能成百上千,哪些才是需要的呢?
第一步是找到该领域懂业务的专家,让他们给一些建议。假如需要解决一个药品疗效的分类问题,那么先找到领域专家,向他们咨询哪些因素(特征)会对该药品的疗效产生影响,较大影响的和较小影响的都要。这些特征就是我们的特征的第一候选集。
 
这个特征集合有时候也可能很大,在尝试降维之前,有必要用特征工程的方法去选择出较重要的特征结合,这些方法不会用到领域知识,而仅仅是统计学的方法。
特征选择方法有很多,一般分为三类:
  • 第一类过滤法比较简单,它按照特征的发散性或者相关性指标对各个特征进行评分,设定评分阈值或者待选择阈值的个数,选择合适特征,方差筛选就是过滤法的一种;
  • 第二类是包装法,根据目标函数,通常是预测效果评分,每次选择部分特征,或者排除部分特征;
  • 第三类嵌入法,稍微复杂一点,它先使用某些机器学习的算法和模型进行训练,得到各个特征的权值系数,根据权值系数从大到小来选择特征,类似于过滤法,但是它是通过机器学习训练来确定特征的优劣,而不是直接从特征的一些统计学指标来确定特征的优劣。
 

寻找高级特征

在拿到已有的特征后,还可以根据需要寻找到更多的高级特征。比如有车的路程特征和时间间隔特征,可以得到车的平均速度这个二级特征。根据车的速度特征,就可以得到车的加速度这个三级特征,根据车的加速度特征,就可以得到车的加加速度这个四级特征.........。也就是说,高级特征可以一直寻找下去。
在Kaggle之类的算法竞赛中,高分团队主要使用的方法除了集成学习算法,剩下的主要就是在高级特征上面做文章。所以寻找高级特征是模型优化的必要步骤之一。当然,在第一次建立模型的时候,可以先不寻找高级特征,得到以后基准模型后,再寻找高级特征进行优化。
 
寻找高级特征最常用的方法有:
  • 若干项特征加和: 假设希望根据每日销售额得到一周销售额的特征,可以将最近的7天的销售额相加得到
  • 若干项特征之差: 假设已经拥有每周销售额以及每月销售额两项特征,可以求一周前一月内的销售额
  • 若干项特征乘积: 假设有商品价格和商品销量的特征,那么可以得到销售额的特征
  • 若干项特征除商: 假设有每个用户的销售额和购买的商品件数,那么得到该用户平均每件商品的销售额
 
当然,寻找高级特征的方法远不止于此,它需要你根据业务和模型需要而得,而不是随便的两两组合形成高级特征,这样容易导致特征爆炸,反而没有办法得到较好的模型。
 

补充

工程经验是,聚类的时候高级特征尽量少一点,分类回归的时候高级特征适度的多一点
很多聚类算法无法识别高相关性,会重复计算高相关性特征,并夸大了其影响,比如K均值。
特征选择时特征与特征之间的相关性不需要分析吗?还有怎样检测,处理多重共线性特征呢?
如果是做监督学习,一般是不需要的,非监督需要考虑。
如果是特征太多了,相关性是一个较次要一些的因素。可以通过相关系数之类的方法来检测特征相关性,并去除部分共线性相关特征,但是大多数时候只在聚类的时候有些用处。
 
 
  • Scikit-Learn
  • 爬山测试集特征选择 Filter
    目录