信贷评分卡模型基础知识

丶灬走出姿态 提交于 2020-03-17 08:07:52

一、模型输出概率转化为分数

风控模型(XGB模型、LGB模型或LR模型)直接输出的是客户逾期概率,在评分卡应用场景中,需要将此概率转化为对客户的评分,转化方式如下。设p表示客户逾期概率,将bad/good的比例记:
odds=p1p odds = \frac{p}{1-p}
评分卡分数可表示为下式:
score=ABlog(odds)=ABlog(p1p) \begin{aligned} score &=A-B*log(odds)\\ &=A-B*log(\frac{p}{1-p}) \end{aligned}
其中,A和B是常数。式中的负号使得违约概率越低,得分越高。通常情况下,这是分值的理想变动方向,即高分值代表低风险,低分值代表高风险。

常数A、B的值可以通过将两个已知或假设的分值带入计算得到。通常情况下,需要设定两个假设:
(1)给定odds=Ratio时,预期分数为Base;
(2)Ratio翻倍时,分数减少值为PDO(即Point of Double Odds)

于是,可以得到二元一次方程组
{Base=ABlog(Ratio)BasePDO=ABlog(2Ratio) \begin{cases} Base&= A-B*log(Ratio)\\ Base- PDO&=A-B*log(2*Ratio) \end{cases}
由此可求解得到A和B的值
B=PDO/log(2)A=Base+Blog(Ratio) \begin{aligned} B &= PDO / log(2)\\ A&=Base + B * log(Ratio) \end{aligned}

举例
我们设定odds=1/15odds=1/15,即pbad/pgood=1/15p_{bad}/p_{good}=1/15时,评分为600。当oddsodds每增大一倍,评分减60分,即PDO=60。由此我们可以得到B=60/log(2)86.56B=60/log(2)\approx86.56A=600+60log(1/15)/log(2)365.59A=600+60log(1/15)/log(2)\approx365.59。于是可以得到概率p和评分score的转换公式为score=365.5986.56log(p/(1p))score=365.59-86.56*log(p/(1-p))
在这里插入图片描述
python代码

import numpy as np

def p_to_score(p, PDO=60.0, Base=600, Ratio=1.0/15.0):
    """
    逾期概率转换分数
    :param p: 逾期概率
    :param PDO: points double odds. default = 60
    :param Base: base points. default = 600
    :param Ratio: odds. default = 1.0/15.0
    :returns: 模型分数
    """
    B = PDO / np.log(2)
    A = Base + B * np.log(Ratio)
    score = A - B * np.log(p / (1 - p))
    return round(score, 0)

二、模型KS指标

KS指标主要用来验证模型对客户好坏的区分能力。通常是在模型对样本打分后,对分数进行分箱,然后统计每箱好客户和坏客户的累计样本数占比,累积Bad占比与累积Good占比之差即为每箱的KS,模型KS定义为各分箱KS的最大值。
KS=maxPcum(Bad)Pcum(Good) KS ={max}|P_{cum}(Bad)-P_{cum}(Good)|
KS是最主要的模型评价指标, KS越高,模型越好。但过高的KS可能意味着过度拟合从而导致模型不稳定。通常能达到40%以上的模型就很不错了。数据较差时,20%的KS也勉强可以用。

举例
在这里插入图片描述
对应的KS曲线如下图所示
在这里插入图片描述

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!