4、标签体系设计:标签分类、生命周期管理与质量评估
标签体系,说白了就是给每一笔交易、每一个客户贴上一个「身份牌」。
我做了这么多年风控,见过太多团队一上来就堆标签,结果标签库乱得像杂货铺。今天咱们聊聊怎么把标签体系搭得既好用又靠谱。
4.1 标签分类:三种标签,各有各的脾气
我个人习惯把标签分成三大类:规则标签、模型标签、人工标签。这三类标签,就像厨房里的三种刀——用途不同,用法也不同。
4.1.1 规则标签
规则标签是最「直来直去」的。你设定一个阈值,满足条件就贴上。
举个例子:
- 单笔交易金额 > 5万元 → 贴「大额交易」标签
- 同一设备登录超过3个账户 → 贴「设备聚集」标签
- 交易时间在凌晨2点-5点 → 贴「非活跃时段交易」标签
我在项目中遇到过最典型的场景:某支付平台发现凌晨3点突然涌入大量小额充值,规则一查,全是同一IP段。嗯,规则标签第一时间就抓住了它。
缺点: 容易被绕过,需要持续维护阈值。
4.1.2 模型标签
模型标签就聪明多了。它不靠死规则,而是靠机器学习模型算出一个分数,然后根据分数区间贴标签。
比如:
- 模型评分 0-30 → 贴「低风险」标签
- 模型评分 30-70 → 贴「中风险」标签
- 模型评分 70-100 → 贴「高风险」标签
你想想看,模型标签能捕捉到规则标签发现不了的「隐性异常」。比如一个用户的行为模式突然变了,规则可能没触发,但模型能感知到「这家伙不对劲」。
4.1.3 人工标签
人工标签,就是风控专家手动打的标签。这听起来有点「原始」,但其实是最高质量的标签。
常见场景:
- 审核员确认一笔交易是盗刷 → 贴「确认欺诈」标签
- 客服回访发现用户是被诱导转账 → 贴「社交工程欺诈」标签
- 调查后发现是误报 → 贴「误报-正常交易」标签
人工标签虽然成本高,但它是模型训练的「黄金标准」。没有人工标签,模型就是瞎子。
4.2 标签生命周期管理
标签不是贴上去就完事了。它有自己的「生老病死」。
我一般把标签生命周期分成四个阶段:
| 阶段 | 说明 | 我的做法 |
|---|---|---|
| 设计阶段 | 定义标签名称、含义、计算逻辑 | 一定要写文档,不然三个月后自己都看不懂 |
| 上线阶段 | 部署到生产环境,开始打标签 | 先灰度一小批流量,观察效果 |
| 监控阶段 | 持续观察标签的命中率、准确率 | 每天看报表,发现异常立刻排查 |
| 退役阶段 | 标签不再有效,需要下线 | 不要直接删,先标记「废弃」,保留历史数据 |
为什么会这样?因为很多标签是有时效性的。比如「双十一大促期间」的标签,过了双十一就没用了。如果不及时管理,标签库会越来越臃肿。
4.3 标签质量评估
标签质量好不好,不能靠感觉。得用数据说话。
我常用的评估指标有这几个:
- 准确率: 标签打对了的比例。比如「欺诈」标签,实际确实是欺诈的占比多少。
- 覆盖率: 该打标签的交易中,有多少被打上了。覆盖率太低说明标签太保守。
- 命中率: 打了标签的交易中,有多少是真正异常的。命中率太低说明标签太宽松。
- 稳定性: 标签的命中率随时间波动大不大。波动太大说明标签不可靠。
举个例子,我做过一个「异常登录」标签:
# 标签质量评估示例代码
def evaluate_label(df, label_col, ground_truth_col):
"""
df: 数据框
label_col: 标签列名
ground_truth_col: 真实标签列名(人工标注)
"""
tp = len(df[(df[label_col]==1) & (df[ground_truth_col]==1)])
fp = len(df[(df[label_col]==1) & (df[ground_truth_col]==0)])
fn = len(df[(df[label_col]==0) & (df[ground_truth_col]==1)])
precision = tp / (tp + fp) if (tp + fp) > 0 else 0
recall = tp / (tp + fn) if (tp + fn) > 0 else 0
print(f"准确率: {precision:.2%}")
print(f"召回率: {recall:.2%}")
return precision, recall
嗯,这里要注意:准确率和召回率往往是一对矛盾。你追求高准确率,召回率就会下降;反过来也一样。具体怎么取舍,要看业务场景。
4.4 标签体系的核心逻辑图
下面这张图,是我自己总结的标签体系设计框架。你看一眼就能明白整体脉络。
这张图把标签体系拆成了三层:分类是基础,生命周期是过程管理,质量评估是结果检验。三者缺一不可。
公众号:蓝海资料掘金营,微信deep3321