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)或对数变换。
- 若分布接近均匀 → 该特征对分群的区分度可能较低。
单变量分布可视化流程 原始数值特征 直方图 + KDE 曲线 箱线图(IQR 异常检测) Q-Q 正态性检验 综合判断:分布形态 + 异常 + 正态性 决策输出:保留 / 变换 / 截尾 / 离散化 / 剔除 (依据:多峰→保留;右偏→变换;极端离群→截尾)

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 秩相关系数作为对照。
相关性热力图解读框架 特征相关性热力图(示意) 热力图解读决策树 1. 识别 |r| > 0.8 的深色块 → 检查业务语义是否重复 → 是:保留解释性更强的一个 → 否:构造交互特征或保留 2. 观察颜色集群模式 → 正相关集群:同向变化,可能冗余 → 负相关集群:互补关系,可做比值 3. 检查对角线与背景色 → 对角线恒为 1(自相关) → 背景色均匀 → 变量独立性好

3.4 EDA 输出清单与模型影响

完成 EDA 后,应整理以下交付物,直接指导后续建模决策:

  1. 特征统计表:包含缺失率、均值、标准差、偏度、峰度。
  2. 分布诊断图集:每个数值特征的直方图+箱线图,标注异常值位置。
  3. 相关性矩阵:Pearson 与 Spearman 双版本,附带热力图。
  4. 特征筛选建议:高相关对、高偏度特征、高缺失率特征的初步处理意见。
对分群评分模型的具体影响:
- 若特征间存在强相关(|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()