探索性数据分析 EDA(Exploratory Data Analysis)是数据分析和挖掘的第一步,主要是对数据集进行了解,包括基本情况、特征情况、特征间关系等等,为进一步的分析和挖掘提供信息。
一个完整的 EDA 过程一般大致包括四步:
- 问题定义:问题定义涉及的主要任务是定义分析的主要目标,定义主要的可交付成果,概述主要角色和职责,获取数据的当前状态,定义时间表以及执行成本/收益分析。
- 数据准备:包括数据源定义、数据 schema 定义、数据特征了解、数据清理、数据转换、数据分割等。
- 数据分析:这是处理描述性统计信息和数据分析的最关键步骤之一。 主要任务包括汇总数据,发现数据之间隐藏的关联和关系,开发预测模型,评估模型以及计算精度。
- 结果展示:以图表、摘要、地图和图表的形式将数据集呈现给目标受众。
本文主要是针对一般机器学习项目的 EDA,侧重于对数据基本情况和特征关系的了解,为下一步的特征工程和模型做准备。
数据来自:零基础入门金融风控-贷款违约预测-天池大赛-阿里云天池
代码 Notebook 在这里:EDA,或用 nbviewer 查看。
总体了解
这一部分主要了解数据集整体的情况,主要包括以下内容:
- 数据集规模
- 有哪些特征
- 不同特征数据类型
- 不同特征样本数
- 不同特征均值、标准差、中位等
- 缺失值
- 唯一值
1 | # 数据规模 |
数据分布
这一部分主要了解不同特征的分布,主要包括:
- 特征在所有 Label 上的分布
- 特征在不同 Label 上的分布
- 特征的数据类型
特征的数据类型一般包括以下几类:
- 数值数据:定量数据
- 离散数据
- 连续数据
- 分类数据:定性数据
度量数据有以下不同方法:
- 标签
- 序数
- 区间
- 比率
数值数据一般可以直接用于模型,但风控时往往要对其进行分桶,对其 WOE 编码后再使用,这里提到过,这其实是一种非线性的思路,能够降低模型复杂度,减少噪声影响,使得模型更加稳定。
分类数据也可以分桶,或直接编码,编码方式有很多种,比如常见的 One-Hot 编码。数值类型中的离散数据也可以用类似的方式编码。
正因为每个特征都有特殊情况,所以,我们最好画出所有特征的分布,然后逐个去分析。
1 | # 特征 unique 值、Sample 等 |
数据关系
这一部分主要了解特征的关系,主要包括:
- 特征和因变量之间的关系
- 特征之间的关系
在此处理特征之间关系前需要先对特征进行一些处理,包括:
- 清理掉唯一值的特征
- 非数值特征能转为数值特征的转为数值特征
1 | # 特征和因变量 |