3. 特征缺失定义与分类:完全缺失、部分缺失、延迟到达、空值、异常值等缺失类型
在实时特征流中,特征缺失并非单一现象。不同缺失类型对下游模型推理、特征回填策略和回放验证逻辑的影响截然不同。本章从实时流处理视角出发,对特征缺失进行系统分类与精确定义,为后续检测与回放方案奠定基础。
3.1 缺失类型全景
实时特征流中的缺失可归纳为五大类:完全缺失、部分缺失、延迟到达、空值与异常值。下表从定义、典型场景、对模型影响三个维度进行对比:
| 缺失类型 | 定义 | 典型实时场景 | 对模型影响 |
|---|---|---|---|
| 完全缺失 | 某实体在时间窗口内所有特征均未产出 | 新用户首次请求,画像特征尚未生成 | 模型无法推理,需降级或默认值 |
| 部分缺失 | 特征向量中部分维度有值,部分维度无值 | 实时聚合特征已产出,但离线标签特征未同步 | 模型输入维度不完整,推理精度下降 |
| 延迟到达 | 特征值在预期时间窗口之后才到达 | Kafka 分区积压,特征到达时间超过 SLA | 使用旧值推理,时效性敏感场景失效 |
| 空值 | 特征存在但值为 null、NaN 或空字符串 | 数据库字段未填充,或上游数据源缺失 | 模型内部处理空值可能引发异常或偏差 |
| 异常值 | 特征值超出合理范围或统计分布 | 传感器故障、数据采集异常导致数值突变 | 模型输出剧烈波动,甚至导致系统崩溃 |
实践要点:在实时特征流中,延迟到达与完全缺失的边界往往由 SLA 定义。例如,若特征在事件发生后 500ms 内未到达,系统应将其标记为“延迟到达”;若超过 5s 仍未到达,则升级为“完全缺失”。这种分级定义是回放验证中时间戳对齐的关键。
3.2 缺失类型关系与演进路径
五种缺失类型并非孤立存在,在实时流中常呈现时序演进关系。例如,一个特征值可能先被标记为“延迟到达”,随后因超时被判定为“完全缺失”。下图展示了缺失类型在实时流中的典型演进路径:
3.3 各缺失类型的检测特征
在实时特征流中,每种缺失类型都有其独特的可观测特征。下表列出了各类型的关键检测指标,这些指标将直接用于后续章节的检测器设计:
| 缺失类型 | 检测指标 | 典型阈值/判断逻辑 | 回放验证关注点 |
|---|---|---|---|
| 完全缺失 | 特征存在性标志位 | 窗口内特征计数 = 0 | 时间窗口边界是否准确 |
| 部分缺失 | 特征向量维度覆盖率 | 覆盖率 < 100% 且 > 0% | 缺失维度是否被正确标记 |
| 延迟到达 | 事件时间 vs 处理时间差值 | 差值 > SLA 阈值(如 500ms) | 时间戳对齐与时钟偏差 |
| 空值 | 值类型检查 + 特殊值匹配 | 值为 null / NaN / "" / "N/A" | 空值语义是否与业务一致 |
| 异常值 | 统计分布偏离度 | Z-score > 3 或 IQR 外点 | 历史分布窗口是否合理 |
3.4 缺失类型在回放验证中的映射
回放验证的核心目标之一是模拟并验证上述缺失类型在历史数据流中的表现。每种缺失类型在回放场景中都有对应的注入与验证策略:
- 完全缺失回放验证:在回放数据流中随机删除某实体的全部特征记录,验证下游模型是否触发降级逻辑。
- 部分缺失回放验证:在回放数据流中随机删除特征向量的部分维度,验证特征拼接与填充逻辑是否正确。
- 延迟到达回放验证:在回放数据流中人为调整部分特征的时间戳,使其晚于预期窗口,验证延迟检测与重排逻辑。
- 空值回放验证:在回放数据流中将部分特征值替换为 null 或 NaN,验证空值处理管道是否健壮。
- 异常值回放验证:在回放数据流中注入超出统计分布的值,验证异常检测器是否准确捕获。
关键设计原则:回放验证的缺失注入必须可追溯。每个注入的缺失事件都应携带唯一 ID 和原始值快照,以便在验证阶段对比模型输出与预期行为。缺失注入的覆盖率应至少达到 80% 的已知缺失类型组合。
3.5 缺失类型组合与优先级
在实际实时流中,特征缺失往往以组合形式出现。例如,一个特征可能同时是“延迟到达”且“空值”。系统需要定义缺失类型的优先级,以决定最终的处理策略:
3.6 缺失定义在实时系统中的落地要点
- 统一缺失标记协议:所有特征缺失事件必须使用统一的枚举类型标记(如
MISSING_TYPE_COMPLETE、MISSING_TYPE_LATE),避免字符串散乱。 - 时间戳精度对齐:延迟到达的判断依赖事件时间与处理时间的精确对齐,建议使用毫秒级时间戳,并考虑时钟漂移补偿。
- 业务语义绑定:空值的定义必须与业务字段的语义一致。例如,用户年龄字段的 0 值可能是有效值,而收入字段的 0 值可能是空值。
- 异常值动态阈值:异常值的检测阈值应基于滑动窗口动态计算,而非固定值,以适应数据分布的时变特性。
常见陷阱:将“延迟到达”与“完全缺失”混为一谈。在回放验证中,若未区分这两种类型,将导致回填策略错误——延迟到达的特征应等待后回填,而完全缺失的特征应直接使用默认值。务必在检测阶段明确区分。