1. 缺失值篇
在做算法之前,免不了进行数据前置处理。如果置数据预处理重中之重,那么对模型的精度提升将有不可缺少的作用。
数据清理中有一个重要模块为缺失值处理。主要流程如下:
Step 1. 发现拔缺失值
Step 2. 缺失值模式
Step 3. 删除缺失值
Step 4. 填补缺失值
1.1 发现缺失值: NA, NAN , Inf,-Inf
缺失值不仅仅是该取值为空,也有可能存在错误值。首先判断该缺失值是否有业务含义,若是,进行转化(不应忽略)。
栗子:1.银行信用卡信息中开卡日期和激活日期的缺失值 à 填补操作
2.电商购物用户表中用户年龄出现2岁或者99岁;性别出现男女之外的第三值à 转化把不合理数据编码为缺失值。
1.2 缺失值模式
对缺失值进行观察,寻找一定的规律性,如社交网络哪一群人不喜欢晒照片。
1. 完全随机缺失 Missing Completely At Random
缺失的数据与其他数据无关系,而与本身没关系。
2. 随机缺失
缺失的数据与其他数据有关系,而与本身没关系。
3. 非随机缺失
缺失的数据与其他数据有关系,而与本身也有关系。如收入与年龄段有关系,与自身的收入层次也有关系。
缺失值模式的识别,很大一部分依赖于业务分析师的经验。
当然有也开源的工作可以使用,如VIM 包中的aggr函数,可以图形化展示缺失值分布, mice包等。
根据缺失值模式,采取不同策略:删除和填充。
1.3 删除缺失值
对于完全随机缺失的模式,若无法提供有用信息或者是少量缺失(看作是大样本的随机抽样产生),就可以简单的删除。
删除方式有行删除, 配对删除等。调用函数的时候,注意表明用哪种方式删除
1. 4 填充缺失值
A. 简单抽样填补(已有数据简单抽样) 。
B. 以均值,中位数,众数插补 填充 。
C. 以同类数据的均值和中位数插补。
如果职业是教师,收入缺失,一般以教师的均值/中位数来插补。
D.最可能的值进行插补,使用回归,决策树或者贝叶斯模型等(找到与其他变量的关系)
2. 噪声处理篇
数据集成
原因: 来自多个系统的数据,造成数据不一致,有偏差。
需要解决:1. 实体匹配
2. 去除冗余数据(检测相关性:离散数据用卡方检测,连续数据用协方差检测)
数据规约
在可控的信息损失下,以较小的数据对原始数据的另一种表达。
内容包括:1. 维度规约:降维,减少特征数量, PCA,小波变换
2. 数量规约:压缩数据(有损压缩:音频视频; 无损压缩:字符串压缩)
常用方法:1. 规范化
2. 构造特征(构造面积特征 = 长* 宽)
3. 概念分层 (街道=> 泛化到行政区,城市,就对城市级别进行分析)
4. 离散化(年龄=> 青年,中年,老年,然后可以进行进一步分层泛化,比如建立用户画像,针对 产品是 青年+中年)