大厨下锅前,备料师得先把菜洗干净、把坏叶子择掉、把大小切齐。数据预处理就是这道工序:把原始、混沌的数据,变成干净、规整、模型能高效处理的数据集。它分三步——观察(验货)、清洗(择坏补缺)、整理(统一秤)。
这一篇聚焦「洗」这一段。特征的构建、编码、降维分别在特征构建、特征编码、特征提取与降维里展开。
Table of contents
Open Table of contents
一句话理解
预处理 = 验货 → 择菜 → 切齐。
先系统地把整批货扫一遍找问题(观察),再把坏的挑掉、缺的补上(清洗),最后把不同大小的料切成同一个量纲(整理)。顺序不能乱:没验货就下手清洗,等于蒙着眼睛择菜。
1. 数据观察:系统地把货扫一遍
观察不是随便看看,而是照着一张清单逐项排查,把潜在的质量问题、逻辑错误、冗余信息都揪出来:
| 观察内容 | 目的 | 处理建议 |
|---|---|---|
| 属性判定 | 有没有不合常理的值 | 如「男士买了女士专用发夹」 |
| 组合/统计判定 | 组合属性逻辑真伪 | 如「声称美国用户但 IP 在中国」 |
| 缺失值 | 有没有缺失 | 缺失极多的特征直接去除;否则填充 |
| 离群点 | 有没有明显离群 | 交给清洗阶段处理 |
| 垃圾值 | 全空列 / 乱码 / 异常标点 | 用异常检测算法(聚类、最近邻)排查 |
| 取值变化 | 方差是否过小 | 95% 取值为 1 的二值特征意义不大;100% 为 1 则毫无作用 |
| 量纲 | 是否同一量纲 | 不同量纲需去量纲化(标准化/归一化) |
| 信息冗余 | 特征是否重复/成比例 | 去重 |
| 定量特征 | 是否需要区间划分 | 二值化 / 分箱(考分 → 及格/不及格) |
| 定性特征 | 无法定量的属性 | 转定量,常用独热编码 |
观察阶段的产出,是一张「问题清单」——它直接决定后面清洗和整理动手做什么。
2. 数据清洗:择坏的、补缺的
2.1 异常值(离群点)检测:三把刀
A. 箱线图(Box Plot)——最直观的一把
箱线图基于四分位数,用四分位距 IQR 圈出「正常范围」,范围外的就是嫌疑离群点。以序列 12,15,17,19,20,23,25,28,30,33,34,35,36,37(n=14)为例:
用 Qᵢ = i × (n+1)/4 求分位数:
| 概念 | 值 |
|---|---|
| 下四分位数 Q₁ | 18.5 |
| 中位数 Q₂ | 26.5 |
| 上四分位数 Q₃ | 34.25 |
四分位距 IQR = Q₃ − Q₁ | 15.75 |
上限 Q₃ + 1.5 × IQR | 57.875 |
下限 Q₁ − 1.5 × IQR | −5.125 |
箱线图的价值:① 客观识别异常值(基于分位数,抗极端值);② 判断偏态和尾重(异常集中在一侧 → 左偏/右偏);③ 并排比较多批数据的形状。
B. 切比雪夫定理——一条不挑分布的兜底
P(|X − μ| ≥ kσ) ≤ 1 / k²
含义:不管什么分布,取值都集中在期望 μ 附近。若某值落在 μ ± kσ 之外,就可能异常(k 由你定)。好处是对分布几乎不做假设。
C. 孤立森林(iForest)——海量连续数据的快刀
核心思想一句话:异常 = 容易被孤立的点(分布稀疏、密度低)。
- 随机挑一个维度、一个切割点,反复把空间切成子空间;
- 密度高的簇要切很多刀才能分开,而异常点很早就被单独切出来;
- 用样本在
t棵 iTree 上的平均路径长度打分:路径越短越异常。
| iForest 优点 | iForest 缺点 |
|---|---|
| 线性时间,适合海量数据 | 不适合特别高维(很多维度没被随机选到) |
| 各树独立,可分布式 | 只对全局稀疏点敏感,不擅长局部稀疏 |
2.2 异常值怎么处理
检出之后三选一:删除(移除该记录)、忽略(树模型对异常不敏感可保留)、替换(用中位数/均值/缺省值补回,保住样本量)。
2.3 缺失值:四种补法
| 方法 | 做法 | 代价 |
|---|---|---|
| 删除法 | 删样本或删变量(如 >40% 空值的特征) | 信息浪费、结构变动 |
| 填充法 | 数值型用均值;非数值型用中位数/众数 | 容易得到有偏统计 |
| 插补法 | 回归插补 / 多重插补 | 复杂但更合理 |
| 建模法 | 用其他完整特征预测缺失值(决策树/LR) | 最贵,但保留结构 |
经验:缺失本身有时也是信息。与其粗暴补 0,不如加一个「是否缺失」的标记位——「这人没填收入」这件事,可能比收入的具体数值更有预测力。
3. 数据整理:把料切成同一个量纲
当不同特征取值范围差异巨大(年龄 0100 vs 收入 0100000),基于距离和梯度的模型(KNN、SVM、线性回归、神经网络)会被大数值特征主导。所以要缩放。
| 方法 | 公式 | 适用 / 特点 |
|---|---|---|
| 标准化 (Standardization) | x' = (x − μ) / σ | 分布近正态时;对离群点不敏感 |
| 归一化 (Min-Max) | x' = (x − min) / (max − min) | 图像 / 神经网络;对离群点敏感 |
| 鲁棒缩放 (Robust) | x' = (x − Q₂) / (Q₃ − Q₁) | 有异常值时;高度鲁棒 |
选择口诀:数据干净近正态 → 标准化;要固定到 [0,1] → 归一化;一堆异常值甩不掉 → 鲁棒缩放。
整理阶段还包括分箱、编码、特征组合、降维,但这些更偏「造特征」而非「洗数据」,分别在系列后续几篇里细讲。
TL;DR — 三句话
- 预处理三步不能乱序:观察(照清单验货)→ 清洗(择坏补缺)→ 整理(统一量纲)。
- 异常值三把刀:箱线图(IQR,最直观)、切比雪夫(不挑分布的兜底)、孤立森林(海量连续数据的快刀);缺失值有删/填/插/建模四种补法,别忘了「缺失本身也是信息」。
- 缩放看数据:近正态用标准化、要 [0,1] 用归一化、异常多用鲁棒缩放。
下一篇开始「切配」——特征构建:特征组合(GBDT+LR、交叉特征)、映射到新空间(FFT / 小波 / 数据熵)、以及最吃业务经验的衍生变量。