如何检查信用评分?分析与代码一并附上

在评分卡模型的模型评估中,除了计算基本的技术指标之外,检查信用分的实际分布是个关键性的步骤。

比如分数分段,看总体分布,逾期分布,分数对比这些。我总结了下这些分析的常规代码,供参考。

首先我们把数据排列成如下的结构,方便后续的分析:

分数分段uid是用户编号,month是月份,可以拓展成任何其他需要分析的维度,score是我们关注的信用分,label是好坏用户标签,True表示用户有逾期,是坏客户,False表示用户无逾期,是好客户。

分数分段的方法

分析分数第一步是把分数进行分段,一般常用三种切分方式:

  • 等频分段
  • 等距分段
  • 给定切分点分段

我们使用一个python包和toad完成上述功能:

(https://toad.readthedocs.io/en/latest/),可以使用pip install toad来安装这个。

1等频分段

使用上面的代码对pandas的dataframe来操作。需要明确两个列:score和label,然后method设置成quantile表示等频分段,n_bins=10表示分十段,计算好使用transform来保存分段的结果,记录在dataframe的bin列中。

切分出的结果如下:

既然是等频分段,我们把每一段的人数一数,看看是否相等:

可以看出每段人数基本上是差不多的。

如果需要把这个分段信息应用在其他地方,我们可以使用export()方法把分段的切分点信息导出,然后使用后面介绍的按给定切分点分段方法进行分段。

2等距分段

代码其实和等频分段基本一样,只是把method改为step,就变成等距分段了。

切分出的结果如下:

可以看下每个分数段的人数,很明显在等距的情况下,不同分数段的人数是有比较大的差异的。

3、按给定切分点分段

我们使用toad里combiner的update方法把combiner内置的切分点信息修改成我们需要的数值。

比如我们要把score列按照[300, 350, …, 800, 850]来切分,那我们就是把combiner里的记录切分点的字典改成{‘score’: [300, 350, …, 800, 850]}就好了,然后update方法就是帮我们做这件事情。

分段后的数据如下,可以看出按指定分数段切的bin比较的规整,不会那么多小数点看着闹腾。

我们同样用groupby看下各个分数段上的人数分布:

分数段指标统计


1、分数段人数统计

其实groupby用好可以简化很多操作,像计算各个分数段上的用户总量,好坏用户个数和逾期率都可以一个groupby搞定,见下面的代码:

计算出的总人数,好人个数,坏人个数和逾期率如下:

如果要更详细的统计指标,像累计人数,累计分布和分数段上的KS数值,可以用下面的一段代码获得:

展示的数据结果如下:

2、逐月分数段统计

上面我们看来不同分数段的总体情况,我们很多时候想看分维度的分数分布,尤其是各个月份的变化趋势。

这时候我们就要在上面的groupby的语句里增加一个month的维度来做聚合,聚合完了再用pivot把month的维度从行转成列,就能把逐月的分布计算出来,其他的维度做法和month类似。

我们从上面的代码能拿到四个重要的dataframe:

  • 逐月的总用户数的分布 df_total
  • 逐月坏用户数的分布 df_bad
  • 逐月总用户人数比例 df_ratio
  • 逐月逾期率分布 df_rate

我们看下总用户的比例:

可以用下面的画图语句把逐月的人数比例画成堆积图:

逐月的逾期率数据df_rate如下:

同样给出画图的代码:

3、两个分数交叉比较

我们除了分析单个分数的性能之外,还会把两个分数做比较。一个比较重要的做法就是做矩阵交叉。

为了演示,我们随机生成一个信用分,并按20分一段做分数段的统计。

然后把我们原来的信用分和随机生成的信用分做分数交叉。这里使用到一个pandas自带的函数pd.crosstab来生成交叉矩阵。

上面这个矩阵要怎么解读呢?

我们首先按行来看,每一行里的逾期率在随机分的分数段(每一列)中逾期率是没有顺序的,说明随机信用分在原有信用分上没有额外的区分度。

然后我们按列来看,每一列的逾期率从上到下是从大到小有序排列的,说明在随机分的基础上,原有信用分有额外的区分度,这就说明原有信用分对好坏用户的区分度好于随机分。

当然,这在我们这个例子下是显而易见的,但如果是两版真实模型生成的信用分,这样的顺序性是没有这么明显的。

总结

我们总结了分数分段的方法和在分数段中的几个统计量的常用代码,包括:

  • 分数分段方法:等频,等距,给定切分点
  • 统计量的代码计算:基本统计,逐月统计,分数交叉

如果你喜欢、想要看更多的干货类型的文章,可以关注公众号【数据科学应用研院】并设为星标,顺便转发分享~


感谢您看到这里微信公众号【数据科学应用研院】对话框回复“礼包”,领取粉丝专属干货资料包。