评分模型切分时的样本选择问题¶
学习使用,请参阅原文。
最近工作中碰到的一个实际问题,在进行模型迭代的时候,为了保证对线上影响尽可能小,我们一般会开一个灰度,同分布去切阈值,然后再对比迭代后的效果。这里的同分布切阈值,应该是基于什么样本上去同分布切呢?
多数情况下,会基于 申请样本 进行同分布切阈值,那什么情况下会在 申请通过 样本上或者 放款 样本上切阈值?本文结合结合自己的一些思考和实践,浅谈关于模型切分时样本选择的一些注意点。
首先,简单介绍下背景,线上已有一个分数,用于提额环节,最初上线时切分 bin 的方式,是在放款样本上基于 IV 最优分箱的结果,分成了 4 个 bin,分别对应不同的提额系数。然后,现在迭代了一个新的分数,希望开 50% 灰度进行测试。有以下几种方案:
-
在放款样本上,对新的分数进行最优分箱选定切分阈值
这种情况由于最优分箱结果未知,大概率和之前的分数的分布不一致,所以需要调整每个 bin 的提额系数,以保证控制组和测试组的额度基本可以打平。这种方法调整起来略烦琐,甚至可能最优分箱 bin 个数和之前也会不一样,适合时间充足且需要对提额方式进行重大迭代的时候。
-
和线上分数保持同分布,对新分数切阈值
操作起来比较简单,不需要对系数进行调整。问题是在成交样本上同分布切,还是在通过样本上同分布切,也就是本文要探讨的问题(这里排除了申请样本,主要是因为该分数用于提额)。下面用一个例子,说明在不同样本是切分的区别和影响。
假设有 100 个样本,为了简单操作,假设原始线上分数最优分箱为等切,不同 bin 上的提额系数和额度使用率如下:
bin | 提额系数 | 额度使用率 |
---|---|---|
1 | 4 | 70% |
2 | 3 | 80% |
3 | 2 | 90% |
4 | 1 | 100% |
申请通过人群上,bin1-4 的分布为 3:3:2:2,动支率(1) 为随机假设,基础额度 1000,提额后额度为 2700。
- 动支率 为基于客户授信申请时点前一段时间的相关风控数据构建的模型,用来预测客户授信通过后短时间内发生支用的概率,即预测客户的资金“饥渴”程度。
申请通过的客群
模型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 呢?欢迎感兴趣的读者留下自己的答案和思考。