跳转至

​评分模型切分时的样本选择问题

学习使用,请参阅原文

最近工作中碰到的一个实际问题,在进行模型迭代的时候,为了保证对线上影响尽可能小,我们一般会开一个灰度,同分布去切阈值,然后再对比迭代后的效果。这里的同分布切阈值,应该是基于什么样本上去同分布切呢?

多数情况下,会基于 申请样本 进行同分布切阈值,那什么情况下会在 申请通过 样本上或者 放款 样本上切阈值?本文结合结合自己的一些思考和实践,浅谈关于模型切分时样本选择的一些注意点。

首先,简单介绍下背景,线上已有一个分数,用于提额环节,最初上线时切分 bin 的方式,是在放款样本上基于 IV 最优分箱的结果,分成了 4 个 bin,分别对应不同的提额系数。然后,现在迭代了一个新的分数,希望开 50% 灰度进行测试。有以下几种方案:

  1. 在放款样本上,对新的分数进行最优分箱选定切分阈值

    这种情况由于最优分箱结果未知,大概率和之前的分数的分布不一致,所以需要调整每个 bin 的提额系数,以保证控制组和测试组的额度基本可以打平。这种方法调整起来略烦琐,甚至可能最优分箱 bin 个数和之前也会不一样,适合时间充足且需要对提额方式进行重大迭代的时候。

  2. 和线上分数保持同分布,对新分数切阈值

    操作起来比较简单,不需要对系数进行调整。问题是在成交样本上同分布切,还是在通过样本上同分布切,也就是本文要探讨的问题(这里排除了申请样本,主要是因为该分数用于提额)。下面用一个例子,说明在不同样本是切分的区别和影响。

假设有 100 个样本,为了简单操作,假设原始线上分数最优分箱为等切,不同 bin 上的提额系数和额度使用率如下:

bin 提额系数 额度使用率
1 4 70%
2 3 80%
3 2 90%
4 1 100%

申请通过人群上,bin1-4 的分布为 3:3:2:2,动支率(1) 为随机假设,基础额度 1000,提额后额度为 2700。

  1. 动支率 为基于客户授信申请时点前一段时间的相关风控数据构建的模型,用来预测客户授信通过后短时间内发生支用的概率,即预测客户的资金“饥渴”程度。

申请通过的客群

模型bin 用户数 动支率 基础额度 提额后额度
1 30 67% 1000 4000
2 30 67% 1000 3000
3 20 100% 1000 2000
4 20 100% 1000 1000
总计 100 80% 1000 2700

放款成功人群上,bin1-4 为等比例分布(线上原始切 bin 方式),上面假设了放款样本上最优分箱后为等频分箱。

筛选动支客群(是否动支=1)

模型bin 用户数 平均放款金额 放款金额总和
1 20 2800 56000
2 20 2400 48000
3 20 1800 36000
4 20 1000 20000
总计 80 2000 160000

1. 在放款样本上同分布切

这是最容易想到的切法,最开始在放款样本上怎么切的,这次和上次分布保持一致。假设切完后用户的动支率和额度使用率均保持不变,那么在放款样本上,情况应该和上面一致(理想情况下)。

而在申请通过样本上,由于每个 bin 挑选的人不一样,所以虽然整体动支率不变,但是各个 bin 上的动支率会和之前不同,所以会导致各 bin 上的分布、整体额度有所变化。

模型bin 用户数 动支率 提额后平均额度
1 28 71% 4000
2 26 77% 3000
3 24 83% 2000
4 22 91% 1000
总计 100 80% 2600

可以看到,在放款上同分布切 bin, 在不调整系数的情况下,整体额度无法和之前打平。主要原因在于,同 bin 下的人由于动支率的差异,在放款分布打平的情况下,有额分布无法和之前打平

可以想象一个极端点的情况,头部 bin1 挑出来的人原动支率只有 25%,放款 bin1 上等比例的话需要有 20 个样本,那就要有 80 个通过样本,这种情况下通过样本上前后的分布差异会很大,导致整体额度相差很大。而且,各个 bin 的人在新额度下的动支率变化其实是未知的,该种做法也不能保证放款样本上依然可以做到等频分布,所以这种做法是不可取的。

2. 在申请通过样本上同分布切

即在有额样本上,按照 3:3:2:2 的切分方式切 bin,保证有额上的分布是一致的。虽然同 bin 下的人确认率仍会有差异,但是在不调整系数的情况下,可以保证整体额度打平。

模型bin 用户数 动支率 提额后平均额度
1 30 93% 4000
2 30 70% 3000
3 20 65% 2000
4 20 90% 1000
总计 100 80% 2700

到放款样本上,由于动支率的问题,放款金额和之前会有所差异,控制组和测试组在额度持平的情况下,放款金额的差异是相对可比的,金额存在差异是因为测试组上,把额度更多地给到了高动支意愿的人。

筛选动支客群(是否动支=1)

模型bin 用户数 平均放款金额 放款金额总和
1 28 2800 78400
2 21 2400 50400
3 13 1800 23400
4 18 1000 18000
总计 80 2128 170200

所以,在通过样本上,同分布切 bin 更为合理,可以保证两个组别的额度打平,然后才能对比两个组别的动支率、放款金额、风险的差异。

3. 进一步思考

在通过样本上切 bin 更合理的主要原因,在于这个模型分用在了提额环节中,所以要保证迭代前后/两个灰度上额度可以打平,即使最初决定如何分箱时是在放款样本上用最优分箱进行切 bin 的。这个分数在什么环节、什么人群上应用,同分布替换时要回到相应的人群上进行同分布切 bin,这样做的目的是在该分数作用的人群上,影响最小。

最后留一个同样的小问题,比如一个分数用于审批中,最开始也是在放款样本上进行了最优分箱的操作,现在迭代了一个新的分数,想要快速替换原分数进行 AB 测试,这个时候是应该在放款样本、通过样本、申请样本上进行同分布地切 bin 呢?又或者最开始是在申请通过样本上进行最优分箱,同分布替换时应该在申请通过、申请样本上进行切 bin 呢?欢迎感兴趣的读者留下自己的答案和思考。