碧沼

V1

2023/01/01阅读:35主题:橙心

MVP缺失值填补

缺失值插补方法——MVP

前言

对于缺失值的处理,常见的方法主要是插补和剔除两种,插补的思想往往采用数字特征或者模型的方法进行填补,或者直接将缺失值视为一个类别。但对于缺失值的分析还有一种思路,缺失值模式(missing value pattern),即缺失值的出现也如果也存在某种规律,应该想办法刻画出这种规律性。本文参考《数据准备——从获取到整理》书中的内容,对MVP处理缺失值的方法进行简单探究。

如果您对我的内容感兴趣,欢迎后台私信进行交流。

1.MVP分析思路

提取缺失值的模式有两种思路,从变量入手和从样本入手。

从变量入手,那就是直接建立多个标注缺失值的虚拟变量。但这种方法会增加模型的复杂度。

从样本入手则是构建一个变量,这个变量标识了一个样本在所有变量上的缺失情况。优点是对模型的复杂度影响不大,如果我们建模的目的是预测,那么以样本入手一般就可以。

2.变量的缺失值模式

本文使用的数据是某比赛的一个数据集。构建变量缺失值模式的代码如下所示:

miss_mark = pd.DataFrame()
miss_df = data.isna().sum()
for i in miss_df.index:
    if miss_df[i]>0:
        miss_mark['missing_%s'%i] = data[i].isna().astype(int)
miss_mark
图1 变量的缺失值模式
图1 变量的缺失值模式

有缺失值为1,无缺失值为0,构造的5个缺失值的虚拟变量。

3.样本的缺失值模式

关于样本的缺失值模型,一个最典型的应用是在信贷风控问题以及相关的竞赛中,如果有一些一个样本有意隐瞒一些信息,那么代表了潜在可能存在的一种欺诈行为。更可能违约。

样本缺失值模式的构建是通过将变量的缺失值虚拟变量连接得到的,类似于二进制表达模式'010',我们可以将其转变为十进制下的结果,得到模式2。代码和思想如下所示。

下表展示了样本缺失值模型的例子。

变量信息 缺失信息 样本缺失值信息
A B C A B C pattern1 pattern2
样本1 20 30 0 0 1 001 1
样本2 33 1 0 1 101 5
样本3 45 30 0 1 0 010 2
miss_pattern1 = miss_mark.astype(str)
miss_pattern1 = miss_pattern1.apply(lambda x: x.str.cat(),axis=1)
miss_pattern2 = miss_pattern1.apply(lambda x: int(x,2))
data['miss_pattern1'] = miss_pattern1
data['miss_pattern2'] = miss_pattern2
图2 二进制MVP
图2 二进制MVP
图3 十进制MVP
图3 十进制MVP

欢迎在后台进行交流。

分类:

人工智能

标签:

人工智能

作者介绍

碧沼
V1