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

保险领域进阶

用五条规则做出评分表,再选定阈值

在 TT Lab 中继续学习

目标

在索赔数据上建立规则评分表,并根据混淆矩阵亲自计算精确率、召回率和 F1。逐步移动阈值并制成表,检查群体偏倚,然后在调查人力的限额之内选出用于运营的阈值,输出带有版本号和数据指纹的规则集。

为什么重要

想出检测规则并不难。困难的是决定在哪里切分分数,并说清这个选择会给谁留下什么样的成本。在基础比率低的问题上,阈值只要稍微降低一点,精确率就会迅速崩溃。而且 F1 最高的点很少恰好就是用来运营的点。调查团队能看的笔数才是真正的约束。 本实验只涉及构建检测器的一方。不涉及真实的欺诈手法或其规避方式。数据全部是合成的,机构名称也是虚构的,答案表(label_fraud)是为了选择阈值而预先植入的。 评分器会在你创建的数据库上重新计算期望值并核对。小数要写到第四位,整数栏必须完全一致。

步骤

  1. 创建并运行 /root/fraud/make_claims.py,在 /root/fraud/claims.db 中写入 200 份合同和 400 笔索赔(确认的欺诈 24 笔)。
  2. 在 /root/fraud/rules.py 中汇总五条规则和权重,并把每条规则的成绩写入 /root/fraud/rules.csv。
  3. 把分数合并,将 1 分以上的索赔连同命中了哪些规则一起写入 /root/fraud/scores.csv。
  4. 在最初提出的阈值 4 分下,把混淆矩阵和三个指标写入 /root/fraud/confusion.json。
  5. 把阈值从 1 分到 11 分的各项指标写入 /root/fraud/sweep.csv。
  6. 以阈值 4 分为基准,把各渠道的命中率和基础比率写入 /root/fraud/fairness.csv,把被命中最多的群体和精确率最低的群体写入 /root/fraud/fairness.json。
  7. 在调查人力限额 10 笔之内选择阈值,连同依据写入 /root/fraud/threshold_choice.json。
  8. 把规则集输出到 /root/fraud/rulebook.json,把供人阅读的整理输出到 /root/fraud/fraud_report.md。

参考

创建合成索赔数据

创建并运行 /root/fraud/make_claims.py,在 /root/fraud/claims.db 中写入 policy 200 行和 claim 400 行(label_fraud 为 1 的有 24 笔)。

使用种子值 20260917 的 random.Random,合同从 P0001 开始编号,索赔从 C0001 开始编号。受理日期用事故日期加上延迟天数生成。评分器连金额合计都会核对。

给五条规则打出成绩

把规则和权重汇总在 /root/fraud/rules.py 中,并把每条规则的 hits、fraud_hits、precision 写入 /root/fraud/rules.csv。

表头是 rule_id,weight,hits,fraud_hits,precision,按 R1 到 R5 的顺序写。precision 是 fraud_hits 除以 hits 的值。单独精确率低并不意味着规则错了——只是说明它单独不足以作为依据。

合并分数,生成判定清单

把 1 分以上的索赔写入 /root/fraud/scores.csv,按分数降序排列,分数相同则按 claim_id 升序。

rules 栏中,把命中的规则按 R1 起的顺序用“+”连接写入。只有分数的清单,调查员无法复核——必须同时有因什么被命中。

计算混淆矩阵和三个指标

在阈值 4 分下,把 TP、FP、FN、TN 以及精确率、召回率、F1 写入 /root/fraud/confusion.json。同时放入 total、positives、base_rate、flagged。

TN 是从全部笔数中减去被命中的笔数和漏掉的笔数得到的值。精确率是被命中的案件中判对的比例,召回率是事故中被抓到的比例。先看基础比率是多少,再解读精确率。

逐步移动阈值并制成表

把阈值从 1 分到 11 分各自的 flagged、tp、fp、fn、tn、precision、recall、f1 写入 /root/fraud/sweep.csv。

阈值越低,召回率越高,精确率越低。请亲自看看,在基础比率为 6% 的数据中,降到 1 分时精确率会降到多少。只计算一个点,就不知道放弃了什么。

并排查看各群体的命中率和基础比率

以阈值 4 分为基准,把各渠道的 claims、fraud、base_rate、flagged、flag_rate、tp、precision 写入 /root/fraud/fairness.csv,把被命中最多的群体和精确率最低的群体写入 /root/fraud/fairness.json。

只看命中率,无法知道哪个群体受了冤枉。必须把它与该群体的确认欺诈比例并排放置,才能区分“确实更多”与“规则捕捉到了运营特征”。渠道按 group 名称升序书写。

在调查人力限额内选择阈值

把调查团队本季度能看的 10 笔作为约束来选择阈值,并连同依据写入 /root/fraud/threshold_choice.json。同时保留没有限额时的最佳选择。

在不超过限额的阈值中,选出 f1 最高的一个。同时写出如果没有限额,最佳点在哪里,在申请增加人力时才能把这个差距当作依据。

连同版本号和指纹一起输出规则集

在 /root/fraud/rulebook.json 中放入 version、threshold、capacity、rules、dataset(含指纹)、metrics,并在 /root/fraud/fraud_report.md 中分四节整理。

报告的四个小节标题均为韩文,依次意为“规则集与依据”“阈值是如何选出的”“分群检查”“局限与后续”。指纹的计算方式写在实验说明的参考中。局限一节要用数字写出基础比率低时精确率会怎样。