前 言
在机器学习中,数据能够决定模型效果的上线,模型只是在这之上锦上添花。因此数据特征的优劣对于最终的效果至关重要。本文乃是对于个人多年工作和学习所得的一点总结和认识,如果有什么不足和理解不到位之处,希望可以和业内大佬们一起讨论和交流。
概念篇
特征 define1:人或事物可供识别的特殊的象征或标志。
特征:在机器学习上解释是建立在原始数据之上的特定表示,它是一个单独的可度量属性,通常用结构化数据集中的一列表示。
特征工程:将原始数据转化为特征的过程,使得特征可以很好地测量或描述输入输出之间的内在关系
特征开发
开发流程
特征开发流程复杂且繁琐,包含以下多个流程(实际工作中可能仅仅使用部分步骤)。
- 数据探索
- 数据清洗
- 数据归一化/标准化
- 特征处理
- 特征抽取
- 特征选择
1.数据探索
数据探索是通过分析和统计方法,发现新特征的过程,我们在样本分析时通常会用到各类数据统计分析的方法,以下汇总了当前使用到的分析方法。
数据描述方法:趋势分析,分布分析,图分析
统计方法:假设检验,方差分析,相关性分析,回归分析,因子分析
2. 数据清洗
数据清洗主要针对数据中的脏数据的清理,缺失数据补全,错误数据的修正等
处理方式有:
- 缺失数据处理
- 确定缺失值范围
- 去除不需要字段
- 填充内容: 平均值\众数\最大最小值\随机值\模型预测\不处理\特殊值填充\热卡填充\近邻填充\
- 格式清洗
- 日期
- 类型不一致
- 特殊字符过滤
- 错误数据清洗
- 重复数据删除
- 不合理值修正
- 矛盾内容修正
- 删除缺失、错误严重的字段
- 关联性验证
3. 数据归一化、标准化
标准化: 将数据转化为均值为0, 标准差为1的分布(不一定符合正态分布)
归一化:将数据转化到一个小的区间内, 通常[0, 1] ,广义上可以时任意区间
相同点:两者都是对数据进行缩放,并不改变原数据的顺序
不同点:标准化对数据敏感,均值,方差改变,缩放比就变了,归一化对最值差值敏感,差值变,缩放比就边了。
4. 特征处理
这部分是需要根据不同业务场景,根据不同数据类型,处理差异较大的数据处理方式汇总。
- 对于id,离散类型特征处理
- 序号编码:处理有序类型数据
- one-hot编码:处理离散数据
- 二进制编码:先序号编码,再转二进制,压缩编码空间(对比one-hot)
- 组合特征:组合特征目的是在通过把离散特征两两组合,构成高阶组合特征以挖掘出新的非线性信息,提升模型学习能力,增强模型的泛化能力。
- 高维组合特征:常见于推荐业务场景,主要涉及用户维度过高或推荐物料维度过高,使得采用原本的方式会导致特征过于稀疏并且维度过高,存储需求过高,节点无法负载。
- 解决:矩阵分解(OR, LU, SVD, JorDan)
5. 特征抽取
- 文本数据处理
- 图像特征处理