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
- 落在边界之外的点被标记为潜在异常值
箱线图优势:无需假设数据分布,直观展示偏态和离群点;适用于单变量或多变量分别检测。缺点是无法识别局部异常或高维空间中的异常点。
3.4 使用散点图初步识别异常值
散点图(Scatter Plot)通过二维或三维坐标展示数据点的分布模式,异常值通常表现为远离主体簇的孤立点或偏离趋势线的点。
- 二维散点图:选择两个关键特征,观察远离主簇的点。
- 三维散点图:适用于三个特征,可旋转视角观察空间离群点。
- 颜色编码:按类别或时间顺序着色,辅助识别异常模式。
- 配对散点图矩阵:同时观察多个特征两两关系,快速定位多变量异常。
可视化技巧:对于高维数据,可先使用 PCA 或 t-SNE 降维至 2D/3D 后再绘制散点图;同时结合颜色映射(如按异常得分着色)可增强识别效果。散点图适合发现全局异常,但对局部密度变化不敏感。
3.5 预处理与可视化流程总结
将上述步骤整合为一条标准流水线,确保数据在进入异常检测算法前经过充分清洗与探索。
- 数据加载与概览:查看数据形状、列类型、基本统计量。
- 缺失值诊断:计算每列缺失比例,绘制缺失值矩阵或热力图。
- 缺失值处理:根据缺失比例和特征重要性选择删除、填充或插值。
- 标准化/归一化:优先使用 StandardScaler 或 RobustScaler。
- 箱线图分析:对每个数值特征绘制箱线图,标记 IQR 边界外的点。
- 散点图分析:选择关键特征对绘制散点图,观察离群簇。
- 记录潜在异常:将可视化发现的异常点索引保存,供后续算法验证。
核心原则:预处理阶段的目标不是“消除所有异常”,而是让数据变得干净、可比、可探索。箱线图和散点图提供的只是初步线索,最终异常判定需结合领域知识和后续检测算法综合决策。