Appearance
数据与任务建模
AI 项目的第一步不是选模型,而是把现实目标转换成可计算的问题。任务定义越模糊,模型越容易得到一个离线分数漂亮、实际无法使用的结果。
先定义决策,再定义预测
预测本身不产生价值,预测改变决策才产生价值。设计任务时先回答:
- 谁会使用结果?
- 在什么时刻使用?
- 使用结果后会采取什么行动?
- 错判一次的代价是什么?
- 多久后能够知道预测是否正确?
例如“预测销量”过于笼统。更可执行的定义是:“每天 20:00,根据截至当前的销售、价格、库存和活动信息,预测每个仓库未来 7 天的 SKU 日销量,用于补货。”
样本是什么
样本是一次完整观测。它应对应一个清晰的时间点和对象。
| 场景 | 样本单位 | 输入 | 目标 |
|---|---|---|---|
| 信贷风控 | 一次贷款申请 | 申请时可见资料 | 90 天内是否逾期 |
| 商品质检 | 一张工位照片 | 图像像素 | 缺陷类别和位置 |
| 客服分类 | 一次用户消息 | 文本和会话上下文 | 工单分类 |
| 推荐排序 | 用户与候选商品对 | 用户、商品、上下文 | 是否点击或购买 |
样本边界不清会造成重复统计、标签错位和训练推理不一致。
特征和标签
特征是预测时能够获得的信息,标签是希望模型学习的目标。
设计特征时检查三件事:
- 可获得:线上预测时真的能拿到。
- 时间正确:只使用预测时刻之前的信息。
- 含义稳定:字段定义不会频繁变化。
标签也不是天然存在的。退款、流失、违规、优质客户都需要明确业务定义。标签规则变化后,旧训练数据可能不能直接复用。
观察窗口和目标窗口
时间相关任务必须画出时间边界:
text
过去 30 天行为 预测时点 未来 14 天结果
|-------------------------|------------------|
观察窗口 T 目标窗口如果把目标窗口中的信息放进特征,就发生了数据泄漏。典型例子包括:
- 使用贷款审批后才生成的字段预测是否批准。
- 使用退货完成状态预测用户是否会退货。
- 随机切分时间序列,让训练集看到了测试时期的未来模式。
数据质量的六个维度
| 维度 | 检查问题 |
|---|---|
| 完整性 | 关键字段是否大量缺失 |
| 准确性 | 数值、标签和时间是否正确 |
| 一致性 | 不同系统对同一字段定义是否相同 |
| 唯一性 | 是否存在重复样本或重复实体 |
| 及时性 | 数据到达是否满足预测时效 |
| 代表性 | 训练数据是否覆盖真实人群和场景 |
数据清洗不是简单删除空值。缺失本身可能具有业务意义,例如“用户没有填写职业”可能与风险相关,处理方式应进入模型设计和评估。
数据切分
随机切分适合样本相对独立、分布稳定的任务。以下场景需要特殊切分:
- 时间预测:按时间先后切分。
- 用户行为:同一用户尽量不要跨训练集和测试集。
- 医疗数据:同一患者的多次记录不能泄漏到不同集合。
- 文档问答:同一来源的高度相似片段要避免跨集合污染。
类别不平衡
欺诈、故障和严重投诉往往比例很低。此时准确率可能完全失真:如果正样本只占 1%,全部预测为正常也有 99% 准确率。
需要结合:
- Precision:报出的异常里有多少是真的。
- Recall:真实异常中找出了多少。
- PR-AUC:观察不同阈值下精确率与召回率的整体关系。
- 业务成本:漏掉一次和误报一次分别损失多少。
数据治理
生产数据还要处理权限、隐私和版本:
- 只采集完成任务所必需的数据。
- 对个人信息做脱敏和访问控制。
- 记录数据来源、字段定义、更新时间和负责人。
- 训练数据、特征逻辑和标签规则要可追溯。
- 删除请求应能影响训练和索引流程,而不只是业务数据库。
任务定义模板
text
业务决策:
预测对象与时刻:
输入数据及可用时间:
输出形式:
标签定义:
观察窗口与目标窗口:
主要指标:
误报和漏报成本:
数据权限:
上线后的反馈来源:先把这张表填完整,再讨论模型和框架,项目成功率会高得多。
