3、数据预处理与可视化:缺失值处理、标准化/归一化、使用箱线图和散点图初步识别异常值

在正式进行异常值检测之前,原始数据通常包含噪声、缺失值以及量纲不一致的问题。本章将系统讲解数据预处理的三大核心步骤,并借助可视化手段初步定位异常值,为后续建模奠定干净、可靠的数据基础。

3.1 缺失值处理

缺失值会破坏统计分布、影响模型训练,甚至导致异常检测算法失效。处理策略需根据缺失比例、数据重要性及业务场景综合选择。

处理策略 适用场景 方法说明 注意事项
直接删除 缺失比例 < 5%,且随机缺失 删除含缺失值的行或列 可能丢失有效信息,需谨慎
均值/中位数填充 数值型特征,数据分布对称或偏态 用该列均值或中位数替换缺失值 会降低方差,影响异常检测灵敏度
众数填充 分类型特征 用该列出现频率最高的值填充 可能引入偏差,适合类别均衡场景
前向/后向填充 时间序列数据 用前一个或后一个有效值填充 假设数据具有时间连续性
插值法 连续型数据,缺失值较少 线性插值、多项式插值、KNN插值 计算成本较高,需验证插值合理性
模型预测填充 缺失值较多或特征间关系复杂 用回归、随机森林等模型预测缺失值 避免过拟合,需独立验证集
实践建议:异常检测场景下,优先使用中位数填充(对异常值鲁棒)或插值法;避免在缺失比例超过 30% 时直接删除,应评估特征重要性后决定是否保留。

3.2 标准化与归一化

不同特征往往具有不同的量纲和数值范围。距离度量(如欧氏距离)和基于方差的算法(如 PCA、孤立森林)对尺度敏感,因此必须进行标准化或归一化处理。

3.2.1 标准化(Z-score)

将数据转换为均值为 0、标准差为 1 的分布,适用于数据近似正态分布或存在异常值的场景。

from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
# 转换后:mean ≈ 0, std ≈ 1

3.2.2 归一化(Min-Max)

将数据缩放到 [0, 1] 区间,适用于数据有明确边界且不包含极端异常值的场景。

from sklearn.preprocessing import MinMaxScaler

scaler = MinMaxScaler()
X_scaled = scaler.fit_transform(X)
# 转换后:min = 0, max = 1
方法 公式 输出范围 对异常值敏感度 推荐算法
标准化 (Z-score) z = (x - μ) / σ 无固定范围(通常 -3 ~ 3) 中等(受异常值影响均值与标准差) KNN、LOF、孤立森林、PCA
归一化 (Min-Max) x' = (x - min) / (max - min) [0, 1] 高(异常值会压缩正常值区间) 神经网络、距离聚类(需无极端异常)
鲁棒缩放 (RobustScaler) x' = (x - median) / IQR 无固定范围 低(使用中位数和四分位距) 含明显异常值的数据集
关键提醒:异常检测中,标准化比归一化更常用,因为异常值会严重扭曲 Min-Max 的 min 和 max,导致正常数据被压缩到极窄区间。若数据本身包含大量异常值,优先使用 RobustScaler。

3.3 使用箱线图初步识别异常值

箱线图(Box Plot)基于五数概括(最小值、Q1、中位数、Q3、最大值)可视化数据分布,并通过四分位距(IQR)定义异常值边界。

  • IQR = Q3 - Q1
  • 下边界 = Q1 - 1.5 × IQR
  • 上边界 = Q3 + 1.5 × IQR
  • 落在边界之外的点被标记为潜在异常值
箱线图异常值识别原理 异常值 上边界 (Q3 + 1.5×IQR) Q3 中位数 Q1 下边界 (Q1 - 1.5×IQR) 异常值 IQR = Q3 - Q1 异常值判定标准 1.5×IQR 规则
箱线图优势:无需假设数据分布,直观展示偏态和离群点;适用于单变量或多变量分别检测。缺点是无法识别局部异常或高维空间中的异常点。

3.4 使用散点图初步识别异常值

散点图(Scatter Plot)通过二维或三维坐标展示数据点的分布模式,异常值通常表现为远离主体簇的孤立点或偏离趋势线的点。

  • 二维散点图:选择两个关键特征,观察远离主簇的点。
  • 三维散点图:适用于三个特征,可旋转视角观察空间离群点。
  • 颜色编码:按类别或时间顺序着色,辅助识别异常模式。
  • 配对散点图矩阵:同时观察多个特征两两关系,快速定位多变量异常。
散点图异常值识别示意 特征 A 特征 B 异常值 异常值 异常值 异常值 正常数据点聚集在主簇 异常点远离主簇 距离越远,异常可能性越高
可视化技巧:对于高维数据,可先使用 PCA 或 t-SNE 降维至 2D/3D 后再绘制散点图;同时结合颜色映射(如按异常得分着色)可增强识别效果。散点图适合发现全局异常,但对局部密度变化不敏感。

3.5 预处理与可视化流程总结

将上述步骤整合为一条标准流水线,确保数据在进入异常检测算法前经过充分清洗与探索。

  1. 数据加载与概览:查看数据形状、列类型、基本统计量。
  2. 缺失值诊断:计算每列缺失比例,绘制缺失值矩阵或热力图。
  3. 缺失值处理:根据缺失比例和特征重要性选择删除、填充或插值。
  4. 标准化/归一化:优先使用 StandardScaler 或 RobustScaler。
  5. 箱线图分析:对每个数值特征绘制箱线图,标记 IQR 边界外的点。
  6. 散点图分析:选择关键特征对绘制散点图,观察离群簇。
  7. 记录潜在异常:将可视化发现的异常点索引保存,供后续算法验证。
核心原则:预处理阶段的目标不是“消除所有异常”,而是让数据变得干净、可比、可探索。箱线图和散点图提供的只是初步线索,最终异常判定需结合领域知识和后续检测算法综合决策。