特征工程一般包含四部分
- 特征使用
- 特征获取
- 特征处理
- 特征监控
本文主要介绍"特征处理"的方法
- 确定标注(或者标记、标签、label)
- 特征选择
- 特征变换 (对值化、离散化、数据平滑、归一化、标准化、数值化、正则化)
- 特征降维
- 特征衍生
确定标注
针对监督学习,确定我们的目标标签、或者目标lable
特征选择
剔除与标注不相关或冗余的特征,减少特征的个数,缩小模型训练的时间。一定程度的减少过拟合,提高模型的精确度。
最终的目的:获得能训练出更好模型的数据。
依靠统计学方法、数据模型、机器学习方法,排序特征对标签影响程度,剔除影响程度小的特征,实现降维。
特征选择3个切入思路
- 过滤思想
- 包裹思想
- 嵌入思想
过滤思想
评价某个特征与标签相关性,如果与标签的相关性很小,就直接去掉。
如下特征与特征相关性表:我们的特也会落入连续型、离散型数据类型:
![2506c4b40dd26f9fb3c8bbe6326ab477.png](https://i-blog.csdnimg.cn/blog_migrate/317a3002f1f60f72a7a9a0f16d7a8e08.jpeg)
包裹思想
特征选择包裹思想:最佳的特征组合是特征的子集(开始选择出几个较大的特征子集)。首先确定一个评价指标,比如准确率。找到准确率评价下,最佳的子集特征。再继续拆分这个子集,直到评价指标降低或低于阈值。
![63406f0f7cd12e59870cb7f7670636e7.png](https://i-blog.csdnimg.cn/blog_migrate/a5e227728571054e041715a375c3d309.jpeg)
包裹思想最经典的算法是RFE算法: 递归式特征消除:Recursive feature elimination(RFE):
分3步:
- 列出特征结合X: {x1,x2...xn}
- 构造简单模型进行训练,根据训练得到的系数,剔除较弱的特征
- 余下的特征重复这个过程,直到评价指标下降较大、或低于阈值,停止递归特征消除。
嵌入思想
嵌入的主体是特征,被嵌入的实体是一个简单的模型。 也就是说,根据一个简单的模型来分析特征的重要性,最常见的是使用正则化的方式来做特征选择。
比如:
1. 我们有n个特征,通过一个回归模型对标注进行回归,得到一些w权重系数,对w权重系数进行正则化/正规化,转换为一个[0,1]之间的数,这也反应了特征的重要性,重要性小的特征可以剔除。
![b4fa2c9dea9e76a144a8cb8e6d18b7c5.png](https://i-blog.csdnimg.cn/blog_migrate/5f6f792a4f62c2bc3e51415ee8c6bb63.jpeg)
比如正则化后提出w_2对应的特征
![30f7ef2852f4915dc5a323e394172656.png](https://i-blog.csdnimg.cn/blog_migrate/7c0cf97ecf349f7a989abc24652ae0b7.jpeg)
风险:
嵌入特征是有风险的,模型选择不当,可能会丢弃一些好的特征。所以模型要尽可能选择与最终做预测的模型关联性强的模型。比如:都是用线性模型、都用分布形式一致的,图形分布一致的函数等。