参考:《数据科学手册》–Field Cady
特征工程在实际业务中的应用 -Datawhale
这篇特征工程的文章–全网最通透 -kaggle竞赛宝典
特征工程定义
寻找基本特征,构建组合特征有些区分不同label的样本。
建模就是从数据中学习到insights过程,需要经过数据表达,模型的学习两步
特征提取思路
标准特征
- 是否确实
- 分类变量
- 类别很多情况下,有些类别可能很少见,此时通常选择一些阈值
- 训练数据和测试数据需要提取相同的特征,此时需要 协议处理训练数据中 不存在的条目。
1.排序(成本很高,会泄露测试数据信息给训练数据。解决:给每个测试数据点提供它在训练数据中的排名,但是代价很高)
2.分箱 会消除百分位数级别获得的高分辨率)
3.log转换(抑制异常值,增加小值的显著性)
有关分组的特征
几个指标:
- 行数
- 特定列mean,max,min,median
- 如果列是非数字的,则它包含不同条目的数量
- 如果列是非数字的,则是与最常用条目相同的条目数量
- 两个不同列相关性
预览更复杂的特征
- PCA,适用于时间序列数据或传感器测量的数值阵列。如果数据点是图像,可以提取某些与其他图像类似程度的度量。
- 对数据聚类,并且类别作标签
- 如果数据是文本,可以提取每个单词的频率,问题是特征太多需要压缩
定义待预测指标
举例
- 用户流失,区分流失和用户在一段时间内不需要服务
- 基于时间序列数据预测事件时,定义即将发生的将来会有多远
请教业务专家
了解业务知识:
1.有的放矢,提高建模效率(降低试错成本)和保证模型效果下限
2.避免特征过多拟合
银行贷款申请–风控专家访谈
线上推荐–运营人员访谈过去推荐商品的规则信息
道 术
特征工程最擅长工业界异质表格数据
在知识学习上其党的模型,不复杂引入过多噪声,不简单不足支撑。
机器学习使用特征的过程,是人脑把数据经过处理,精炼后得到更接近结果的表达,更直白的得到预测目标
特征变量提取方法
特征变量相关性
1.计算相关系数
data.corr()
2.画出相关性热力图
sns.heatmap()
3.根据相关系数筛选特征变量(适用于判别线性相关)
corr.nlargest(k,‘target’)[‘target’].index
寻找K个与target变量最相关的特征变量(K)
然后找出与target变量的相关系数大于0.5的特征变量
4.使用树模型的特征重要性选择
5.Box-Cox变换
由于线性回归是基于正态分布的,因此在进行统计分析时,需要将数据转换使其符合正态分布
BoxˉCox变换是统计建模中常用的_种数据转换方法°在连续的响应变量不满足正态分布时,可以使用BoxˉCox变换’这一变换可以使线性回归模型在满足线性、正态性、独立性及方差齐性的同时,又不丢失信息°在对数据做BoxˉCox变换之后’可以在_定程度上减小不可观测的误差和预测变量的相关性,这有利于线性模型的拟合及分析出特征的相关性°在做BoxˉCox变换之前’需要对数据做归_化预处理°在归一化时’对数据进行合并操作可以使训练数据和测试数据_致°这种方式可以在线下分析建模中使用’而线上部署只需采用训练数据的归一化即可。
缺失值处理
sklearn.impute.SimpleImputer
数据转换
sklearn.preprocessing.FunctionTransformer