3. 探索性数据分析(EDA):描述性统计、分布可视化、相关性矩阵与热力图
在构建分群评分沙盘模型之前,必须对原始数据进行系统性探查。EDA 阶段的目标是:理解数据形态、识别异常值、检验变量关系、为特征工程与模型选择提供依据。本节围绕三个核心任务展开:描述性统计、分布可视化、相关性分析。
3.1 描述性统计:数据全貌的数值快照
描述性统计通过集中趋势、离散程度与分布形态指标,快速勾勒每个特征的数值轮廓。对于分群评分场景,重点关注 数值型特征的量纲差异与缺失情况。
| 统计量 | 含义 | 分群场景关注点 |
|---|---|---|
| count | 非缺失样本数 | 缺失率 > 30% 的特征需谨慎处理 |
| mean / std | 均值与标准差 | 标准差过大可能暗示存在极端分群 |
| min / max | 极值范围 | 检查是否包含业务上不合理的数值 |
| 25% / 50% / 75% | 四分位数 | 中位数与均值的偏差反映偏态程度 |
| skewness | 偏度 | |skew| > 1 建议做对数或 Box-Cox 变换 |
实操建议:使用
df.describe().T 快速输出统计表,配合 df.isnull().sum() 定位缺失列。对于评分卡模型,缺失值本身可能携带信息,建议单独编码为 -1 或 999。
3.2 分布可视化:单变量形态与异常检测
分布图揭示数据的内在结构——是否多峰、是否长尾、是否存在离群点。对于分群任务,多峰分布往往是潜在群组的自然信号。
- 直方图 + KDE 曲线:观察整体分布形状,判断是否需要离散化。
- 箱线图:标记四分位距(IQR)外的异常点,辅助离群值处理。
- 分位数-分位数图(Q-Q Plot):检验特征是否近似正态分布,影响后续标准化方法选择。
关键判断准则:
- 若分布呈明显双峰或多峰 → 保留该特征,它可能直接对应不同客户群。
- 若分布严重右偏且存在极端值 → 考虑截尾(winsorize)或对数变换。
- 若分布接近均匀 → 该特征对分群的区分度可能较低。
- 若分布呈明显双峰或多峰 → 保留该特征,它可能直接对应不同客户群。
- 若分布严重右偏且存在极端值 → 考虑截尾(winsorize)或对数变换。
- 若分布接近均匀 → 该特征对分群的区分度可能较低。
3.3 相关性矩阵与热力图:变量间的共性与冗余
相关性分析帮助识别 多重共线性 与 冗余特征。在分群评分模型中,高度相关的变量会扭曲距离计算(如 K-Means)或导致权重不稳定(如逻辑回归)。
3.3.1 相关系数选择
| 变量类型对 | 推荐系数 | 阈值参考 |
|---|---|---|
| 连续 vs 连续 | Pearson r | |r| > 0.8 视为强相关,考虑合并或删除其一 |
| 连续 vs 连续(非线性) | Spearman ρ | |ρ| > 0.7 提示单调关联,需进一步检验 |
| 分类 vs 连续 | ANOVA F / 点双列 | p < 0.05 表示有显著区分 |
| 分类 vs 分类 | Cramér's V | V > 0.6 表示强关联 |
3.3.2 热力图解读要点
- 深色方块(高相关):检查是否属于同一业务维度(如“月收入”与“年收入”),若是则保留一个。
- 对角线自相关:恒为 1,用于验证矩阵计算正确。
- 颜色渐变均匀:若大部分相关系数在 [-0.3, 0.3] 之间,说明变量间独立性较好,适合直接用于聚类。
- 负相关集群:可能暗示互补型特征(如“消费频率”与“平均间隔天数”),可构造比值特征。
常见陷阱:不要仅依赖 Pearson 系数。当数据存在明显非线性关系或离群点时,Pearson 系数可能严重失真。建议同时计算 Spearman 秩相关系数作为对照。
3.4 EDA 输出清单与模型影响
完成 EDA 后,应整理以下交付物,直接指导后续建模决策:
- 特征统计表:包含缺失率、均值、标准差、偏度、峰度。
- 分布诊断图集:每个数值特征的直方图+箱线图,标注异常值位置。
- 相关性矩阵:Pearson 与 Spearman 双版本,附带热力图。
- 特征筛选建议:高相关对、高偏度特征、高缺失率特征的初步处理意见。
对分群评分模型的具体影响:
- 若特征间存在强相关(|r| > 0.85),K-Means 会赋予该维度组过高权重,建议 PCA 降维或直接删除冗余特征。
- 若特征分布严重偏态,建议先做分箱(等频或等距)再送入评分模型,避免极端值主导分群边界。
- 若发现某个特征与目标变量(如违约标签)存在 U 型关系,保留该特征并考虑加入平方项。
- 若特征间存在强相关(|r| > 0.85),K-Means 会赋予该维度组过高权重,建议 PCA 降维或直接删除冗余特征。
- 若特征分布严重偏态,建议先做分箱(等频或等距)再送入评分模型,避免极端值主导分群边界。
- 若发现某个特征与目标变量(如违约标签)存在 U 型关系,保留该特征并考虑加入平方项。
# EDA 核心代码片段(Python)
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
# 1. 描述性统计
desc = df.describe(percentiles=[0.01, 0.05, 0.25, 0.5, 0.75, 0.95, 0.99]).T
desc['skew'] = df.skew(numeric_only=True)
desc['missing_pct'] = df.isnull().mean() * 100
# 2. 相关性矩阵
corr_pearson = df.corr(method='pearson')
corr_spearman = df.corr(method='spearman')
# 3. 热力图
plt.figure(figsize=(12, 10))
sns.heatmap(corr_pearson, annot=True, fmt='.2f', cmap='RdBu_r',
center=0, vmin=-1, vmax=1, square=True,
linewidths=0.5, cbar_kws={'shrink': 0.8})
plt.title('Pearson Correlation Heatmap', fontsize=16)
plt.tight_layout()
plt.show()