评分卡系列(一):讲讲评分系统的构建

作者:JSong 时间:2017.12

我想通过几篇文章,给评分卡的全流程一个中等粒度的介绍。另外我的本职工作不是消费金融的数据分析,所以本系列的文章会偏技术一些。

  • 数据分析工具主要有Python3及pandas、sklearn等科学计算包,另外也会有自己的工具包reportgen。
  • 信用记录数据采用Lending Club的公开数据,特征数目和样本数都比较理想。大家可以到官网(www.lendingclub.com)下载,或者关注我的微信公众号后台回复:?数据集 ? 下载(含变量介绍和中文对照)。
  • 为了讲清楚所有事,文章中会包含数学公式和Python实现代码


相信大家都知道自己的芝麻信用分,它可以提高花呗的额度,可以消费贷,可以不缴押金直接租车等。在未来,随着信息化进程越来越快,信用只会越来越重要。从现在开始,我们除了赚钱养家外,还有一项重要的任务就是维护自己的信用。

信用评分卡是一个通过个人数据设法对其还款能力和还款意愿进行定量评估的系统。在消费金融行业,信用评分卡主要有三种(A卡、B卡、C卡):

  • A卡:申请评分卡,侧重贷前,

    在客户获取期,建立信用风险评分,预测客户带来违约风险的概率大小;

  • B卡:行为评分卡,侧重贷中,在客户申请处理期,建立申请风险评分模型,预测客户开户后一定时期内违约拖欠的风险概率,有效排除了信用不良客户和非目标客户的申请;
  • C卡:催收评分卡,侧重贷后,在帐户管理期,建立催收评分模型,对逾期帐户预测催收策略反应的概率,从而采取相应的催收措施。

简单来讲,评分卡用信用分数来预测客户的好坏,当判定你是一个“好人”时,你就可以享受银行或者金融公司的信用卡服务或者消费贷服务。另外B卡和C卡涉及到很多业务数据,所以本文主要介绍的是A卡。

一套完整的评分卡系统分为如下几个过程:

可以看到一共有六大模块,作为评分卡的第一篇文章,我将简单介绍一下每个模块的内容和作用,后续将详细介绍其中的三个模块。

1. 数据检验和整理

数据检验是对数据的有效性进行检验,比如没有150岁的人,或者没有21岁就已持有银行账户超过30岁的人。发现有特殊情况的,用特殊代码如9999标记,但它不应该被简单理解。如果存在缺失数据,规范做法是把它们作为缺失值进行编码,而不是试图估算填入一个实值。虽然这里只用了几句话来讲数据检验,但这其实可能是建立评分卡最耗时的步骤。

2. 样本细分

开始建立评分系统后,首先是决定是否要细分总体并为每部分建立不同的评分卡。例如为25岁以下和25岁以上的人各建立一个评分卡,或者为特殊行业的人建立一个评分卡。建立多个评分卡会带来大量额外的工作,所以只在改进预测效果时使用。

样本细分(segamentation)的理由有如下几个:

  • 细分后不同部分的可得信息存在差异
  • 某个特征与其他特征相互关联
  • 细分方法与贷款机构的经营策略相符

不同细分部分之间的信息差异可能是由可得数据的多少引起的。例如年轻人的数据通常有限,相对年长的人,他们的数据只是一份很“薄”的文档。

如果存在高度相关但又有很强预测能力的几个特征变量时,我们可能会向导将这些特征分开单独使用。这能避免同一评分卡的预测变量相互影响。不过这在实践当中并不多见,通常相关度也没有大到必须要去处理它。

银行也因为要对不同的人采用不同的策略而决定细分样本。比如,相较与低收入人群或者老年人,银行可能对高收入人群或年轻人更主动。建立不同的评分卡并设定合格临界线,会使得交叉销售和追加销售的促销政策实施起来都更加容易。

3. 特征工程

稳健的评分卡通常有10~20个特征变量,而可用的特征远远多于这个数量。为了评分卡的泛化性能和稳健性,我们要剔除变量并且对已有变量进行一些处理。特征工程的主要任务是变量衍生、变量剔除和特征处理和编码。

有一些变量单独使用时可能没有具体的含义,如借款天数,需要进行衍生。

有一些变量区分好坏借款人的能力偏小,跟因变量几乎无关系。还有一些变量与其他确定要使用的变量高度相关甚至存在共线性。还有一些变量在时间上不稳定,很难用于预测。要分析前两个状况,我们可以用卡方和信息量计算特征对因变量的贡献。也可以用逐步回归来确定那些重要的变量。还可以利用正则化(例如岭回归、LASSO回归等)来检测共线性,且使得特征的系数稀疏化。

最初的数据中,特征的类型往往是多样性的,有连续的数值变量(如贷款金额),有无序的分类变量(如性别),也有有序的分类变量(如年龄段),还有还款日期等时间格式的变量、评价等文本型的变量等等。

对于分类变量,类别数目不能过多,要保证每类中含有总体一定百分比(至少5%)的样本数量,这能避免计算属性集分数时过大的样本方差,通过粗分类减少类别数量能提高系统的稳健性。粗分类既是一门科学也是一门艺术,对序数变量来说要尽量保证每类中包含事实上相邻的属性。另外,就算类别数量合适,对于部分算法(如逻辑回归、GBDT等)来说,还是不够。我们要对这些变量进行编码,常用的有哑变量(dumpy)方法和WOE编码,前者将学历变量(高中及以下、本科、硕士及以上)转换成2(为避免共线性,所以只有2个)个变量:是否是高中及以下、是否是本科。后者通过计算每一个类别对因变量的WOE(证据权重)来重编码。

对于连续数值变量,我们也可以将它离散化,也可以成为特征分箱。离散化的方法也有很多种,如等分、等频、卡方分箱等。

4. 训练测试集拆分

这个没啥好讲的,因为评分系统考虑的是其泛化性能,所以要留出一部分数据来评估。如果数据充足,我们倾向于分出20%~30%的样本作为测试集。当然也不是所有情况都得拆分,例如随机森林。

5.模型训练

逻辑回归是最经典的建立评分卡的方法,其最强大的理论优势在于它直接给出了可加的对数比率分数,结果可以快速转化成信用分数。不过逻辑回归的缺点是准确率不足够高,有时候我们也会用集成学习的方法、如GBDT、XGBoost等。这里就不进一步展开各个算法的理论和优劣啦

6. 模型评估

当一个评分卡已经构建完成,并且有一组个人分数和其对应的好坏状态的数据时,我们想知道所构建的评分卡是否可靠?可靠程度如何?而这取决于如何去定义这个“好”字。我们至少有三种角度可以来评估:

  • 评分卡分类划分的准确程度,如错误率、准确率、召回率、F1
  • 评分卡的判别能力,评估评分卡将好人和坏人分离开的程度,如KS统计量、ROC曲线、GINI系数
  • 评分卡概率预测的校准精度

模型训练好后,一般有两种输出值,一种是预测的类别(好人/坏人、0/1),一种是预测的概率,如该样本被判别为坏人的概率值。当然后者可以通过设置阈值转化成前者。

如果已经有了预测类别,那我们可以构建混淆矩阵,然后便可以方便的计算准确率、召回率、F1分数等

实际坏人 实际好人
预测坏人 TP(真正例) FP(假反例)
预测好人 FN(假正例) TN(真反例)

如果有预测概率,其实际上给的是好人的概率分布和坏人的概率分布。常用的有ROC曲线、KS距离和KL距离

one more thing

本文的最后,我们先来简单看看LendingClub的数据,这里就可以用到reportgen的新功能。之前我们要简单了解一份数据,需要针对每个变量或者每一种类型的变量单独画图。这里我们将这件事封装成了一个函数,并导出为PPTX,这样便于我们在建模过程中反查看数据

我选用的是2016年Q4的数据,原始数共103546条,145个变量。数据获取(含2016Q4、2017Q1、2017Q2、2017Q3、LCDataDictionary)可以关注公众号并回复:?数据集 ? 下载

import pandas as pd
import reportgen as rpt

# 字段的中文对照表,暂时只翻译了一部分
datadict=pd.read_excel(‘.\\LendingClubData\\LCDataDictionary.xlsx‘)
columnnew=dict(zip(datadict.loc[datadict[‘中文名称‘].notnull(),‘LoanStatNew‘],datadict.loc[datadict[‘中文名称‘].notnull(),‘中文名称‘]))
data=pd.read_csv(‘.\\LendingClubData\\LoanStats_2016Q4.csv‘,skiprows=1)
data=data.rename(columns=columnnew)

# 去除缺失率大于80%的字段
missing_pct=data.apply(lambda x : (len(x)-x.count())/len(x))
data=data.loc[:,missing_pct[missing_pct<0.80].index]

rpt.AnalysisReport(data,‘LendingClub数据概览‘);

生成的ppt如下:

参考文献

[1]. 消费信用模型:定价、利润与组合

[2]. 利用LendingClub数据建模(网址:https://zhuanlan.zhihu.com/p/21550547 )

本系列文章

评分卡文章系列:

1、评分卡系列(一):讲讲评分系统的构建

2、评分卡系列(二):特征工程



个人公众号,文章首发与此,转载请声明

原文地址:https://www.cnblogs.com/gasongjian/p/8284010.html

时间: 2024-10-06 22:39:33

评分卡系列(一):讲讲评分系统的构建的相关文章

评分卡系列(二):特征工程

文章很长,理论和实现都讲的很细,大家可以先收藏,有时间再看. 在上一篇文章中,我们对LendingClub的数据有了一个大致的了解,这次我将带大家把10万多条.145个字段的原始数据一步一步处理成建模所需输入的数据. 我们先按照上次一样导入数据,这里我将逾期15天以上的都当作正类 import pandas as pd import numpy as np import reportgen as rpt import matplotlib.pyplot as plt import seaborn

评分卡系列(四):泛化误差估计与模型调参

作者:JSong,时间:2017.10.21 本文大量引用了 jasonfreak ( http://www.cnblogs.com/jasonfreak ) 的系列文章,在此进行注明和感谢. 广义的偏差(bias)描述的是预测值和真实值之间的差异,方差(variance)描述距的是预测值作为随机变量的离散程度.<Understanding the Bias-Variance Tradeoff>当中有一副图形象地向我们展示了偏差和方差的关系: 一.Bias-variance 分解 我们知道算法

申请评分卡分析及建模

邮箱:dengzy95@163.com   欢迎交流建议 项目简介 信用评分技术是一种应用统计模型,其作用是对贷款申请人做风险评估分值的方法.在互金公司等各种贷款业务机构中,普遍使用信用评分,对客户实行打分制,以期对客户有一个优质与否的评判.评分卡主要分为三类A卡(申请评分卡).B卡(行为评分卡).C卡(贷后评分卡).我们主要讨论的是A卡即申请评分卡,用于贷前审批阶段对借款申请人的量化评估: 评分卡原理: 申请评分卡是一种统计模型,它可基于对当前申请人的各项资料进行评估并给出一个分数,该评分能定

信用评分卡模型开发中双峰分布原因及解决方案

信用评分卡模型开发中双峰分布原因及解决方案 文: 郑旻圻 邹钰 刘巧莉 转自:  数信互融 在信用评分卡模型开发过程中,正态性是检验模型信用评分分布是否有效的一个重要指标.正常情况下,标准的正态分布是单峰分布:但是在实际建模过程中,会遇到信用评分分布出现双峰的情况. 双峰分布出现时,数据规律一致性的假设被打破,我们需要从不同的角度考察其出现双峰分布的原因,对模型加以调整,使之准确地反映业务和数据中的规律,以便模型准确适用. 根据为数十家互联网金融企业建立评分卡模型的实践经验,我们总结了一些造成双

信用评分卡 (part 1 of 7)

python信用评分卡(附代码,博主录制) https://study.163.com/course/introduction.htm?courseId=1005214003&utm_campaign=commission&utm_source=cp-400000000398149&utm_medium=share 信用危机时代的信用评分卡 Credit Scorecards in the Age of Credit Crisis This incident took place

以German信用数据为例的logistics regression算法在评分卡上的实践

以德国信用数据为例,用logistict regression算法做信用评分卡原理性实现,因此并未考虑feature selection. 第一步:导入必要的库 import pandas as pd import numpy as np from sklearn.cross_validation import train_test_split 第二步:导入数据 german = pd.read_csv('D:/CreditDatasets/german.data', sep=' ', head

3分钟搞明白信用评分卡模型&amp;模型验证

信用评分卡模型在国外是一种成熟的预测方法,尤其在信用风险评估以及金融风险控制领域更是得到了比较广泛的使用,其原理是将模型变量WOE编码方式离散化之后运用logistic回归模型进行的一种二分类变量的广义线性模型. 本文重点介绍模型变量WOE以及IV原理,为表述方便,本文将模型目标标量为1记为违约用户,对于目标变量为0记为正常用户:则WOE(weight of Evidence)其实就是自变量取某个值的时候对违约比例的一种影响,怎么理解这句话呢?我下面通过一个图标来进行说明. Woe公式如下: A

信用评分中的评分卡中的A卡、B卡和C卡

A卡(Application score card)申请评分卡 B卡(Behavior score card)行为评分卡 C卡(Collection score card)催收评分卡 评分机制的区别在于: 1.使用的时间不同.分别侧重贷前.贷中.贷后: 2.数据要求不同.A卡一般可做贷款0-1年的信用分析,B卡则是在申请人有了一定行为后,有了较大数据进行的分析,一般为3-5年,C卡则对数据要求更大,需加入催收后客户反应等属性数据. 3.每种评分卡的模型会不一样.在A卡中常用的有逻辑回归,AHP等

信用评分卡模型入门(智能算法)

信用评分卡模型入门 2016-07-26 智能算法 智能算法 一.背景介绍:   4.数据整理(数据清理过程) 大量取样的数据要真正最后进入模型,必须经过数据整理.在数据处理时应注意检查数据的逻辑性.区分"数据缺失"和"0".根据逻辑推断某些值.寻找反常数据.评估是否真实.可以通过求最小值.最大值和平均值的方法,初步验证抽样数据是否随机.是否具有代表性. 常用清理过程包含:缺失值分析处理.单变量异常分析(LOF分析处理或聚类分析) 5.变量选择 变量选择要同时具有数