TT Lab
开始
学习 学习路径 课程

保险领域进阶

规则容易做 — 卡住的是阈值

在 TT Lab 中继续学习

一句话总结

欺诈检测中困难的不是想出规则,而是决定在哪里切分分数。阈值是在精确率与召回率之间做取舍的旋钮,而真正转动这个旋钮的不是模型,而是调查人员每天的处理量。

为什么需要它

检测规则会议大多是类似的流程。“合同签订后一个月内出事故就可疑”“受理比事故晚两个多月就可疑”这样的话接连冒出来,大家都点头。把规则写成代码也不难。然后一运行,400 笔索赔中有 190 笔被命中。而调查团队本季度只能看 10 笔。

真正的工作从这里开始。要用数字衡量每条规则有多大用处,决定在哪里切分分数,并且能说清这个选择会给谁留下什么样的成本。跳过这个过程的规则集,只剩下“抓出可疑对象”这句话,实际上却让调查员的时间耗在误报上。

先把一件事讲清楚。本实验涉及的是构建检测器的一方。不讲解某种手法如何逃过检测,而是专注于利用合成数据中预先植入的答案表来选择阈值。保险欺诈调查与报告的权限和程序由法律规定(《保险业法》),数据团队产出的不是判断,而是调查对象清单及其依据。

工作原理

首先为每条规则给出成绩。统计一条规则命中了多少笔、其中有多少笔是确认的事故,就得到该规则单独的精确率。在实际工作中,这个数字通常令人失望。单独超过一半的规则很少见。所以不用单条规则来判定,而是加上权重求和。权重同时反映该规则单独的精确率和业务负责人的判断。

然后是混淆矩阵。确定阈值后,索赔分入四个格子:被命中且确实是事故(TP),被命中但不是(FP),没被命中但其实是事故(FN),没被命中且确实不是(TN)。由此得到三个指标。

정밀도(precision) = TP / (TP + FP)     걸린 것 중 맞은 비율   -> 조사역의 헛수고
재현율(recall)    = TP / (TP + FN)     사고 중 잡은 비율     -> 새어 나간 손해
F1               = 2PR / (P + R)      둘의 조화평균

scikit-learn 的模型评估文档整理得很好,对这些定义有清楚的说明。本实验镜像中没有这个库,但计算只是几次除法,用 statistics 模块和基本算术就足够了,金额这类必须精确的值用 decimal 处理。需要分组汇总或累计计算时,SQLite 的窗口函数值得熟悉。

把阈值从 1 分开始逐步提高并制成表,一眼就能看出两个指标反向变动。这里基础比率起决定性作用。如果 400 笔中有 24 笔是事故,基础比率就是 6%。阈值降到 1 分时,召回率几乎接近 1,但精确率会跌到 10% 左右。这意味着每 10 笔被命中的案件中,有 9 笔是白费功夫。在基础比率低的问题上,精确率会迅速变差,这不是规则不好,而是算术。

最后是限额。F1 最高的点往往并不是该用来运营的点。如果调查团队本季度只能看 10 笔,选项就只有命中笔数不超过 10 笔的阈值。在其中选出最好的点,并同时写下如果没有限额,最佳点在哪里。这个差距就是日后申请增加人力时的依据。

在现场相遇的样子

第一,群体偏倚。如果某个渠道或地区被命中得特别多,有两种可能:该群体的事故比例确实更高,或者规则捕捉到了与欺诈无关的运营特征。电话受理柜台因为材料到得晚,延迟受理很常见;而网点客户则有把小额索赔分成多次提交的习惯。两者都会同样被规则命中。只看命中率就会造成歧视,必须把命中率与该群体的基础比率并排放在一起,才能做出判断。

第二,误报的成本看不见。一笔误报在表里只是数字 1,对客户来说却是补充材料的要求和赔付延迟。如果把精确率仅仅理解为“准确率”,这个成本就消失了。

第三,可重现性。阈值会随数据变化而移动。如果不给规则集标上版本号和数据指纹,两个月后就回答不了“当时那个判定是用哪套规则得出的”。

实际工作中真正重要的事

下一项实验要做什么

你将亲自创建 400 笔合成索赔,按规则给出五条规则的成绩。把分数合并,生成判定清单,并在最初提出的阈值下手工计算混淆矩阵和三个指标。从 1 分开始逐步提高阈值并制成表,把各渠道的命中率与基础比率并排放置,检查是否存在偏倚,再在调查人力的限额之内选出用于运营的阈值。最后输出带有版本号和数据指纹的规则集,以及供人阅读的报告。