参保意愿预测5-标签定义与时间切分——一个模型最容易被忽略的两个坑
模型上线后数字对不上业务预期,最常见的两个根源不在模型——在标签定义和时间切分。“最终参保"还是"当年参保”、随机切分还是时间切分——这两个决定比选RF还是GBDT重要一百倍。这篇用参保预测项目的实际取舍讲透这两个坑。
文章目录
- 参保意愿预测5-标签定义与时间切分——一个模型最容易被忽略的两个坑
- 一、标签定义:你以为在预测A,其实模型学的是B
- 1.1 三种参保路径混在一个标签里
- 1.2 混合路径带来的解读陷阱
- 1.3 如果业务要的是"上门转化率"
- 1.4 "不限期"的时间口径
- 二、时间切分:随机划分的隐性风险
- 2.1 现状:分层随机划分
- 2.2 问题:随机切分在时间敏感数据上是乐观偏差
- 2.3 为什么这个项目没用时间切分
- 2.4 随机切分的风险量化
- 三、这两个坑的通用教训
- 3.1 标签定义三问
- 3.2 时间切分的适用判断
- 3.3 妥协要写在明处
一、标签定义:你以为在预测A,其实模型学的是B
1.1 三种参保路径混在一个标签里
扩面动员的参保转化有三条路径:
①经办员上门调查 → 当场/事后参保 ②协管员通知 → 本人自行去办 ③完全自主 → 无人触达自己参保我们的标签是路径无关的:LABEL = 名单生成时未参保,后续任一路径参保 = 1。
这个定义的语义后果:模型分数的含义是"这个人最终会不会参保"——不是"上门动员这个人会不会转化"。
1.2 混合路径带来的解读陷阱
自主参保的人(路径③)可能本来就要参保——没人动员他也缴。这些人被标成LABEL=1进了训练集——模型学到的部分规律是"谁本来就想缴"而不是"谁被动员后会缴"。
如果动员策略团队拿着分数问"Top15%的人上门转化率能有多少"——答不了。分数98%的人群里混着"不用动员也会缴"的人,上门转化的边际贡献没法从总分数里剥离。
MODEL_CARD的限制第3条把这个写死了:“分数含义是参保概率,不是上门动员转化率”。
1.3 如果业务要的是"上门转化率"
需要重建标签:只保留被上门动员过的人(路径①),label=上门后是否参保。这要求动员台账记录触达方式和触达结果——当前数据只有最终参保状态。
这就是"标签定义受限于数据生产"的典型——你想要的最优标签,数据经常不支持。妥协方案(路径无关标签)要先想清楚妥协的代价:分数能用于排序资源投放,不能用于评估单路径效果。
1.4 "不限期"的时间口径
LABEL=1:名单生成后,到数据导出日为止,任何时候参保都算问题:导出日之前跨了多久?如果第一批名单是三年前的——三年里陆续参保的人都算正样本。而业务要的是"今年动员、今年参保"。
“不限期最终参保"的命中率天然高于"当年参保”——我们的Top15%命中率98%是"不限期"口径。如果按年度任务量解读——MODEL_CARD主动写明可能高估10-20个百分点。
二、时间切分:随机划分的隐性风险
2.1 现状:分层随机划分
train_test_split(...,stratify=LABEL,random_state=42)# train 17,628 / val 3,777 / test 3,778分层保证三集正负比一致——统计上干净。
2.2 问题:随机切分在时间敏感数据上是乐观偏差
假设2023年名单和2025年名单的人群结构不同(政策变了、经济变了、上一轮动员把容易转化的都转走了)——随机切分把2023和2025的数据混在一起,test集里混着train集同时期的"邻居样本"。
模型在test上的表现被同时期相似性抬高——上线面对2027年的全新名单时,真实性能可能低于test指标。
时间切分(早期训练、后期验证)模拟的是真实上线场景:模型永远在预测"未来"的数据。它给出的指标更接近线上真实表现。
2.3 为什么这个项目没用时间切分
数据里没有参保日期字段(INSURE_DATE) ——无法按时间排序,无法定义"早期"和"后期"立项要求写了时间切分,数据不支持——随机分层是有记录的妥协(MODEL_CARD 2.3节),不是疏忽。改进方向第一条(★★★)就是"补INSURE_DATE改时间切分"。
2.4 随机切分的风险量化
这个项目里随机vs时间的差异有多大——不知道,因为没法测(没日期字段)。但可以预判方向:
- 政策环境15年稳定(城居保执行期)→ 时间漂移可能不大
- 名单是"历年扫尾剩余" → 每年人群结构有累积变化(容易转化的逐年减少)
两个力方向相反——真实偏差要等有日期数据后重切分才能量化。当前文档的处理是诚实标注风险而非假装没有。
三、这两个坑的通用教训
3.1 标签定义三问
给任何监督学习项目定标签前先问:
①这个标签在业务上等于什么动作的结果? ②预测时点之后、标签发生之前的中间过程,有没有模型不该知道的信息混进去? ③标签的时间窗口是什么——和业务的考核窗口一致吗?参保项目的答案:①三条路径混合的结果;②收入等调查信息在标签发生前产生(泄漏源);③不限期vs当年的错位(高估10-20pp)。
3.2 时间切分的适用判断
不是所有数据都需要时间切分——判断依据是样本间有没有时间相关性:
| 场景 | 时间切分 |
|---|---|
| 截面数据(同一时段的独立个体) | 随机即可 |
| 跨年度累积的名单/日志 | 必须时间切分 |
| 有明显政策/环境变化点 | 时间切分+变化点前后分段评估 |
扩面名单是跨年度累积——属于第二类。没切是因为数据缺字段,不是不需要。
3.3 妥协要写在明处
这两个坑这个项目都没有完美解决——标签口径妥协了(路径混合+不限期)、时间切分妥协了(随机分层代替)。
关键是妥协全部写在MODEL_CARD里,标注了影响方向和量级(高估10-20pp)、绑定了修复依赖(下次导数加INSURE_DATE)。
"知道自己的模型哪里不可信"比"模型多准"更重要——这不是谦逊,是政务ML的生存技能。审查答辩时,主动说"这个数有10-20pp的高估风险、原因是标签口径、修复方案是补字段"——比被审查员问出来强一百倍。
✅ 亮点:标签路径混合与"不限期"口径的高估量化、随机切分在跨年度名单上的乐观偏差机理、妥协三要素(写明处/标量级/绑依赖)的方法论。适合做任何跨时段数据建模的人。扩展方向:主篇完整落地、MODEL CARD方法论。