3. 数据采集与预处理:实时数据源与特征工程

实时风险拦截模型的核心挑战在于“快”与“准”。数据从产生到进入模型推理,延迟必须控制在毫秒级。本章聚焦实时数据流的接入、清洗、特征构造与质量保障,构建从原始日志到可用特征的完整管道。

3.1 实时数据源:埋点、API 与消息队列

保险实时风险场景的数据源主要分为三类:客户端埋点、业务系统 API 以及消息队列中间件。下表对比了各自特点与适用场景:

数据源类型 典型数据 延迟要求 可靠性 适用场景
客户端埋点 点击流、页面停留、设备指纹 < 1s 中(可能丢包) 欺诈行为识别、异常操作检测
业务系统 API 保单信息、核保结果、支付状态 < 200ms 高(同步调用) 实时决策、黑白名单查询
消息队列 承保流水、理赔事件、风控日志 < 100ms(端到端) 极高(持久化+ACK) 高吞吐异步处理、削峰填谷
实战建议:在保险核心链路中,建议采用“API 同步 + 消息队列异步”的双通道模式。高风险操作(如大额支付)走 API 实时拦截,非关键行为(如页面浏览)走消息队列做离线补充分析。

下图展示了实时数据采集的典型三层架构:

实时数据采集三层架构 客户端埋点 SDK / 设备指纹 业务系统 API 保单 / 核保 / 支付 消息队列 Kafka / RocketMQ 实时数据接入层 Flume / Logstash / DataX 实时通道 实时计算引擎 Flink / Spark Streaming 在线特征存储 Redis / HBase / TiKV

3.2 数据清洗:实时流中的脏数据处理

实时数据流中常见的脏数据包括:字段缺失、格式异常、时间乱序、重复消息。清洗策略必须兼顾低延迟与准确性。

  • 字段缺失处理:对关键字段(如用户ID、保单号)采用“丢弃”策略;对非关键字段(如设备型号)采用“默认值填充”。
  • 格式标准化:统一时间戳为毫秒级 Unix 时间戳;金额字段统一为分(整数)存储,避免浮点精度问题。
  • 去重机制:基于消息唯一 ID(如 traceId)在窗口内(通常 5 秒)做幂等去重,防止重复计算特征。
  • 乱序处理:设置 watermark 延迟容忍度(如 10 秒),超出窗口的迟到数据直接丢弃或发往死信队列。
代码示例:Flink 实时清洗算子(伪代码)
DataStream<RawEvent> cleanedStream = rawStream
    // 过滤空事件
    .filter(event -> event.getUserId() != null && event.getPolicyNo() != null)
    // 标准化时间戳
    .map(event -> {
        event.setTimestamp(convertToMillis(event.getTimestamp()));
        return event;
    })
    // 基于 traceId 去重(5秒滚动窗口)
    .keyBy(event -> event.getTraceId())
    .process(new DeduplicateFunction(5000L))
    // 处理乱序:允许 10 秒延迟
    .assignTimestampsAndWatermarks(
        WatermarkStrategy.<RawEvent>forBoundedOutOfOrderness(Duration.ofSeconds(10))
            .withTimestampAssigner((event, timestamp) -> event.getTimestamp())
    );

3.3 特征工程基础:从原始日志到风险特征

实时特征工程的目标是在毫秒级时间内,将原始数据转化为模型可用的数值化特征。保险场景下,特征通常分为三类:

特征类别 示例 计算方式 存储要求
统计聚合特征 过去 1 小时该用户投保次数 滑动窗口计数 / 求和 Redis 计数器 + TTL
序列行为特征 最近 5 次操作的时间间隔 维护定长队列,计算差分 Redis List / 本地缓存
交叉特征 设备指纹 + IP 归属地组合 预计算字典映射 本地 HashMap / 布隆过滤器

下图展示了实时特征工程的计算流程:

实时特征工程计算流程 原始事件流 滑动窗口统计 序列特征提取 字典映射/交叉 特征向量拼接 维度:128 ~ 256 模型推理
避坑提醒:实时特征计算中,务必为每个特征设置 TTL(过期时间)。例如“过去 1 小时投保次数”的 Redis 计数器应设置 3600 秒过期,防止内存泄漏。同时,特征版本管理不可忽视——模型上线后,特征逻辑变更必须同步更新存储结构,否则会导致线上推理错误。

3.4 数据质量监控:实时管道的“体检”体系

数据质量是实时模型的命脉。必须建立覆盖全链路的监控体系,确保“脏数据不进、特征不丢、延迟不超”。

核心监控指标如下:

监控维度 指标 告警阈值 处理动作
数据完整性 字段缺失率 > 5% 触发熔断,切换降级模型
数据时效性 端到端延迟(P99) > 500ms 扩容消费线程,排查瓶颈
数据准确性 特征值分布漂移 PSI > 0.1 回滚特征版本,通知算法团队
数据吞吐量 QPS / TPS 低于基线 30% 检查上游数据源是否异常
监控实现要点:
  • 使用 Prometheus + Grafana 实时展示管道健康度仪表盘。
  • 每个特征计算节点输出“处理记录数”和“异常记录数”两个计数器。
  • 设置“静默告警”机制:连续 3 个窗口触发阈值才真正告警,避免抖动误报。
  • 关键特征(如用户历史欺诈标签)必须做“非空校验”,空值直接拒绝本次推理请求。