美文网首页
信用评分卡的初级探索及疑问

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

作者: 巴拉巴拉_9515 | 来源:发表于2019-03-30 16:43 被阅读0次

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

一、有监督数据

评分卡模型是有监督的打分模型,所以训练模型的数据集需要包含特征和二分类标签。以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

相关文章

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

    对于整体情况的评分常用的方法有层次分析法,模糊分析法。近期发现金融行业常用的评分卡模型,经过初步探索以后有了一定的...

  • 基于Python的信用评分卡模型分析(二)

    上一篇文章基于Python的信用评分卡模型分析(一)已经介绍了信用评分卡模型的数据预处理、探索性数据分析、变量分箱...

  • 评分卡|分类学习器的评估

    信用评分卡主要有三种(A卡、B卡、C卡): A卡:申请评分卡,侧重贷前,在客户获取期,建立信用风险评分,预测客户带...

  • 评分卡模型

    信用评分卡分类A卡:申请评分卡,侧重贷前,在客户获取期,建立信用风险评分,预测客户带来违约风险的概率大小;B卡:行...

  • 风险信用评分卡相关文章总结

    基于Python的信用评分卡建模分析 【评分卡】评分卡入门与创建原则——分箱、WOE、IV、分值分配 异常值检测 ...

  • 信用评分卡

    数据描述:数据属于个人消费类贷款,只考虑评分卡最终实施时能够使用到的数据应从如下一些方面获取数据: – 基本属性:...

  • 信用评分模型开发

    信用评分模型可用“四张卡”来表示,分别是 A卡(Application score card,申请评分卡)、B卡(...

  • 信用评分:第二部分 - 信用评分卡建模方法

    信用评分:第二部分 - 信用评分卡建模方法 上一篇:信用评分:端到端的开发流程-->第一部分:为什么要做信用评分 ...

  • Give me some credit--申请评分卡模型

    目标及背景 信用评分算法,对默认可能性进行猜测,这是银行用来判断贷款是否应该被授予的方法,完成一个评分卡,通过预测...

  • 信用评分卡模型开发流程

    本文是基于书籍《信用风险评分卡研究》学习总结,此篇为提纲,后续会针对每一部分详细介绍 标准评分卡 申请评分卡(A卡...

网友评论

      本文标题:信用评分卡的初级探索及疑问

      本文链接:https://www.haomeiwen.com/subject/tjojbqtx.html