风险建模,缺失值怎么处理?
The following article is from 风控建模 Author 小溪1005
相信每个做过风险建模如评分卡模型的小伙伴都遇到过缺失值的问题。从小编使用过的工具或算法包来看,只有xgboost等少量的算法包支持包含缺失值的数据集,其他的绝大多数算法包或工具是不支持的。
另一方面,从小编接触过的大量数据集来看,绝大部分的数据都存在缺失值的情况。
所以我们在风险建模的过程中是无法避免地要处理缺失值的。
缺失值的分类
一般先要分析缺失值的原因,区分缺失值的类型,缺失值通常可以分成三种类型:
1.完全随机缺失
变量x是否缺失和自身取值无关,也和其他变量的取值无关。
2.随机缺失
变量x是否缺失和自身取值无关。
3.非随机缺失
变量x是否缺失与自身取值有关。
缺失处理方式
接下来谈下怎么处理缺失值,主要有以下几种:
1. 删除有缺失值的记录
从数据集中删除全部有缺失值的记录。这种方式适合缺失记录比例很少且是完全随机缺失类型的情况。一般实际工作中很少采用这种方法。尤其是缺失记录较多而样本本身较少时,效果会很不理想,建议慎用此方式。
2. 删除有缺失值的变量
不直接删除记录,只删除有缺失值的变量,适用于随机缺失或完全随机缺失类型。这种方式同样比较简单粗暴,当数据集维度较少或变量获取较珍贵的情况下,不建议使用。
3. 保留缺失值纳入到模型
不删除变量,将缺失值进行编码(如woe编码)纳入到模型(如逻辑回归)。这是大部分评分卡模型中的处理方式,可以有效保留变量。
4. 使用统计建模方法填补缺失值
通过使用各种统计建模方法对数据集中变量的缺失值进行填补,适用于完全随机缺失或随机缺失,缺失比例较少的情况。常用的几种填补方法有:
数值型使用均值、中位数填补;字符型变量使用众数填补
使用模型,如回归方程、回归树、神经网络填补
根据含义进行填补:比如最近三个月夜间消费次数为null,根据变量实际含义可以用0来填补。
当然在实际应用中,可以根据不同情况使用不同的处理方式。如对缺失超过80%的变量删除,对缺失超过80%的记录删除,对缺失很少的变量进行填补,对非随机缺失变量的做woe编码等。具体还是要对缺失值进行分析,使用合适的处理方式。
来源|风控建模
作者|小溪1005
更多精彩,戳这里: