信用评分卡的初级探索及疑问

2019-03-30  本文已影响0人  巴拉巴拉_9515

对于整体情况的评分常用的方法有层次分析法,模糊分析法。
近期发现金融行业常用的评分卡模型,经过初步探索以后有了一定的理解,同时也存在一些待解决的疑问。

一、有监督数据

评分卡模型是有监督的打分模型,所以训练模型的数据集需要包含特征和二分类标签。以GiveMeSomeCredit数据集为例,第一列target为我们的目标标签,1表示存在违约,0表示无违约情况。


.

二、特征提取

特征之间不宜存在强的相关关系,否则会影响算法的结果。
并不是所有特征都对target起重要作用的,通过计算IV值判断每个特征的影响权重。
评分卡算法有三个关键词:分箱、WOE、IV

2.1 分箱

分箱就是把每个特征划分为几个等级。比如年龄特征经过分箱以后为20-30、31-50、51-70、71-100五类。
分箱的目的是为了使模型更加稳定。
分箱的方法分为有监督分箱(卡方分箱、cart分箱等)和无监督分箱(等距划分、等频划分)两种,有监督分箱效果会更好。

2.2、WOE证据权重

2.3 IV信息价值

2.4、计算案例

以年龄这一特征为例,对年龄采用等频分箱后,分为九个等级:21-33、34-39、40-45、46-49、50-53、...,代入公式计算出每个层级的WOE,基于WOE计算出特征的IV值。

2.5、特征价值

显然有些特征对target的影响程度不高,不必作为模型训练参数,可以删除。


.

三、逻辑回归

把符合IV条件的特征的WOE值作为模型训练数据,target为目标值,训练逻辑回归模型。


特征
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
x = train_X.drop('target',axis = 1)
y = train_X['target']
train_x,test_x,train_y,test_y = train_test_split(x,y,test_size = 0.3,random_state = 0)
train = pd.concat([train_y,train_x], axis =1)
test = pd.concat([test_y,test_x], axis =1)
train = train.reset_index(drop=True)
test = test.reset_index(drop=True)
lr = LogisticRegression(penalty= 'l1')
lr.fit(train_x,train_y)

回归模型验证的AUC值为0.83,效果还是不错的,标明这些特征能够比较好的预测target的值。

ROC验证

.

四、得分计算

4.1、得分计算原理

4.2、PDO和P0的定义

计算score的前提是需要自定义PDO和P0的值,这个值定义的依据是什么?应该如何科学的定义?(还不知道)

def cal_base(pdo, p0, lr):
    B = pdo / math.log(2)
    A = p0 - B / math.log(pdo)
    base = round(A + B * lr.intercept_[0], 0)
    print('base',base)

以下为PDO=100,600,700,800,900,1000;P0=5,10,20对应的基础得分。

4.4、计算每个变量每个等级的分值

#计算分值函数
def compute_score(coe, woe, factor):
    scores = []
    for w in woe:
        score = round(coe * w * factor, 0)
        scores.append(score)
    return scores

当设置PDO的值为20、p0为600,可以计算出A,B值,同时推出基础分A+BW0为: 314.0,计算出的评分卡分值如下:

五个特征及对应分组的分值

当有新的人员数据生成是,可根据评分卡判断新成员的得分。以某一批新成员数据为例,经该评分卡判断后,这批成员的最高得分为604.0,最低得分为429.0(基础分314)

新成员得分分布

五、问题小结

1、PDO、p0是随便设置的吗?
2、怎么设置阈值,超过这个阈值就接受,不超过就不接受借贷服务。
3、不同的分箱手段带来的AUC值的变动

参考资料

[1]数据集来源于kaggle平台:https://www.kaggle.com/c/GiveMeSomeCredit/data
[2]参考代码(学习资源):https://github.com/htbeker/Application_score_card/blob/master/appliaction_score_card.py
[3]分箱的优点 https://blog.csdn.net/hxcaifly/article/details/80203663
[4]评分卡理论 https://blog.csdn.net/sscc_learning/article/details/78591210

上一篇下一篇

猜你喜欢

热点阅读