数据清洗:缺失值,异常值,重复值的处理
一、数据列缺失的4种处理办法
1.丢弃
直接删除带有缺失值的行记录或列记录,减少缺失数据记录对总体数据的影响。以下场景不宜采用此办法:
(1)数据集总体中存在大量的数据记录不完整情况且比例较大(超过10%),删除会损失许多有用信息
(2)带缺失值的数据记录大量存在着明显的数据分布规律和特征,例如:带缺失值的数据的目标标签集中在某一类或某几类, 删除会导致模型过拟合或分类不准确
2、补全
(1)统计法:对于数值型的数据,使用均值,加权均值,中位数等方法补全,对于分类型数据,使用类别众数最多的值补足
(2)模型法:如果带有缺失值的列是数值变量,采用回归模型补全,如果是分类变量,采用分类模型补全
(3)专家补全:对于少量且有重要意义的数据记录,专家补足是重要办法
(4)其他:随机法,特殊值法,多重填补
3、真值转换法
把数据缺失也看作一种规律
例:很多数据库无法对会员的性别进行补足,又舍不得将其丢弃,可将男、女、未知从一个变量的多个值分布状态转换为多个变量的真值分布状态。
转换前:性别(男,女,未知)
转换后:性别_男(值域1或0),性别_女(值域1或0),性别_未知(值域1或0)
4、不处理
这种思路主要看后期的数据分析和建模应用,很多模型对缺失值有容忍度或灵活的处理方法,常见的能自动处理缺失值的模型包括:KNN,决策树,随机森林,神经网络,朴素贝叶斯等
处理思路:
(1)忽略,确实值不参与距离计算,例如KNN
(2)将缺失值作为分布的状态,并参与到建模过程,例如各种决策树及其变体
二、不要轻易抛弃异常数据
异常数据是数据分布的常态,处于特定分布区域或范围之外的数据通常被定义为异常或“噪音”,产生噪音的原因很多,例如业务运营操作,数据采集问题,数据同步问题,对异常数据处理之前要分辨哪些是真正的异常数据,数据异常的状态看分为两种:
(1)“伪异常”,是由于业务特定运营动作产生,其实是正常反映业务状态,而不是数据本身的异常规律
(2)“真异常”,客观的反映了数据本身分布异常的个案
以下几种情况下,无需对异常值做抛弃处理
1、异常值反映了业务运营结果
例如:公司的A商品正常情况下日销量为1000台左右,由于昨日促销导致总销量达到10000台,由于备货不足导致今日销量下降到100台,这种情况下,10000和100都正常反映了业务运营的结果,而非异常数据
2、异常检测模型
异常检测模型针对整体样本中的异常数据进行分析和挖掘以便找到其中的异常个案和规律,这种数据应用围绕异常值展开,因此不能抛弃。异常检测模型常用于客户异常识别,信用卡欺诈,药物变异识别,恶劣气象预测,流量作弊检测,网络入侵检测等,这种情况下,异常数据本身是目标数据,如果处理掉将损失关键信息。
3、包容异常值的数据模型
如果数据算法和模型对异常值不敏感,那么不处理也不会对模型造成负面影响,例如在决策树中,异常值本身就可以作为一种分裂节点。
三、数据重复就需要去重吗
数据集中的重复值包括以下两种情况:
(1)数据值完全相同的多条数据记录
(2)数据主体相同但匹配到的唯一属性值不同
一下几种情况,不建议去重:
1、重复的记录用于分析演变规律
2、重复的记录用于样本不均衡处理
3、重复的记录用于检测业务规则问题