数据准备(三)-缺失值数据清洗

hello everyone,I miss you so much…

有两周没有更新评分卡系列文章了,因为校长这两周在准备一个大招-全新的系列online courses《菜鸟如何做金融数据分析》,其中的SQL篇就准备了110页的PPT内容,简直是集成了我在金融分析工作中所有常用的SQL,并且做了系统的梳理。看着录制的视频内容,回想起来真的是不易啊。

OK,废话不多说,今天我们来聊聊数据准备的第三个阶段-数据清洗。

其实数据清洗这四个字对于常常做数据分析建模的同学们一定不陌生,不管在实际工作中有没有真正做清洗,我们都会先把这个口号喊出来(Hahaha),数据清洗这块其实我也一直不太愿意拿出来说,因为这种活实在太结合业务理解了,而且还见仁见智,并不是简简单单的三步------缺失值填补、异常值删除、错误值处理。但是做数据建模呢,也不能跳过这步,那我就从操作手法和操作目的两个方面来聊聊我认为怎么做数据清洗。

缺失值

数据缺失引起的原因多种多样,大致可以概括为IT系统原因、前端录入原因和接入征信公司原因。

对于IT系统缺陷导致的数据缺失,在你无能为力的时候请尽快联系IT人员。

对于前端录入数据的缺失,通过逻辑匹配方式可以选择不同手段去填补。

对于接入征信公司原因导致某些第三方数据字段有缺失,那我们要理解这个缺失值的内在含义,有些情况的缺失我们是不能去填补的,就作为missing存在。

在做缺失值填补前,同学们应该先看看有哪些字段是缺失的,缺失比例如何,是否对我们业务和模型有作用。如果这些缺失字段是不必要的,那我们没有必要花功夫去填补它们。

具体操作手法:

1.1 筛选出缺失的数据

google或者baidu上能找到很多关于查找缺失值的小代码,大部分筛选逻辑按照数据类型做分类筛选,运用数组和do循环,具体代码我就不展示在文章里了。黑猫白猫能抓住老鼠的就是好猫。

1.2 查看缺失比例,判断是否必要

对筛选出缺失数据字段的missing数据集,通过观察缺失比例和建模产品的逾期率去判断是否有必要做缺失值填补。

比如,建模产品的逾期率比较高,也就是建模样本里的坏样本比较多,变量分箱的目的是更希望将坏样本分到一个组里,这个时候一个分箱变量的缺失率很高,不论是做特征值替换、线性插值、逻辑匹配填补或者作为MISSING处理,都容易造成分箱组里sample的极端分布不均,这个时候如果你做并组,会造成分箱区分度下降,如果你不做并组,这个分箱变量会有不稳定的潜在隐患。

所以,对于逾期率高的产品建模,缺失比例高的话就不建议进入模型,同比,对于逾期率低的建模产品,缺失率的容忍度就好了很多,具体这个balance的线在哪里,我只能给个我的感觉范围:

如果逾期率大约40%以上,可接受的缺失比例在15%以下;

如果逾期率大约8%以下,可接受的缺失比例在70%以下;

更严谨的做法是每次建模时候根据我上面的逻辑去校验样本可接受缺失比例的balance point,然后判断哪些字段是需要继续操作,哪些字段可以直接舍弃。

1.3 缺失值填补or not

通过第二步我们已经知道哪些字段是可以继续操作下去的,这个时候我们就要选择用什么方法去对缺失数据处理。

统计学上的缺失值处理常用手法有特征值(mean\median…)替换、线性插值等,但实际建模中更常用的是结合业务逻辑匹配,或者作为MISSING不做处理。

举个前面系列文章的例子,如果我们分析产品的业务线前端采集到了用户的身份证照片,这个照片不仅仅可以用来ORC活体检测,身份证里的信息数据可以进行逻辑匹配填补诸如常住地、性别、年龄等这些因为前段录入操作原因造成的数据缺失。

比如我们的age这个字段有数据缺失,但是缺失比例是我们可接受范围内,此时我们就可以通过身份证号的编码规则来推断匹配这个申请客户的年龄,通过这种匹配方法填补的缺失值往往更加能反应客户的真实信息。

对于接入不同征信公司造成的某些关键字段的数据缺失,同样缺失比例是我们可接受范围内,这个时候就需要参考这个字段的衍生逻辑来选择用什么方法来填补,更多的做法是不做缺失值填补,作为MISSING单独一组。

好啦,关于缺失值的数据清洗我根据个人理解简单的总结到这里,如有异议可留言讨论。还是概要为一句话:

数据清洗缺失值,保证比例选逻辑

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20171218G03CK800?refer=cp_1026

扫码关注云+社区