2019独角兽企业重金招聘Python工程师标准>>>

信用评分卡模型在国外是一种成熟的预测方法,尤其在信用风险评估以及金融风险控制领域更是得到了比较广泛的使用,其原理是将模型变量WOE编码方式离散化之后运用logistic回归模型进行的一种二分类变量的广义线性模型。

本文重点介绍模型变量WOE以及IV原理,为表述方便,本文将模型目标标量为1记为违约用户,对于目标变量为0记为正常用户;则WOE(weight of Evidence)其实就是自变量取某个值的时候对违约比例的一种影响,怎么理解这句话呢?我下面通过一个图标来进行说明。

Woe公式如下:

Age

#bad

#good

Woe

0-10

50

200

=ln((50/100)/(200/1000))=ln((50/200)/(100/1000))

10-18

20

200

=ln((20/100)/(200/1000))=ln((20/200)/(100/1000))

18-35

5

200

=ln((5/100)/(200/1000))=ln((5/200)/(100/1000))

35-50

15

200

=ln((15/100)/(200/1000))=ln((15/200)/(100/1000))

50以上

10

200

=ln((10/100)/(200/1000))=ln((10/200)/(100/1000))

汇总

100

1000

 

表中以age年龄为某个自变量,由于年龄是连续型自变量,需要对其进行离散化处理,假设离散化分为5组(至于如何分组,会在以后专题中解释),#bad和#good表示在这五组中违约用户和正常用户的数量分布,最后一列是woe值的计算,通过后面变化之后的公式可以看出,woe反映的是在自变量每个分组下违约用户对正常用户占比和总体中违约用户对正常用户占比之间的差异;从而可以直观的认为woe蕴含了自变量取值对于目标变量(违约概率)的影响。

再加上woe计算形式与logistic回归中目标变量的logistic转换(logist_p=ln(p/1-p))如此相似,因而可以将自变量woe值替代原先的自变量值;

讲完WOE下面来说一下IV:

IV公式如下

其实IV衡量的是某一个变量的信息量,从公式来看的话,相当于是自变量woe值的一个加权求和,其值的大小决定了自变量对于目标变量的影响程度;从另一个角度来看的话,IV公式与信息熵的公式极其相似。

事实上,为了理解WOE的意义,需要考虑对评分模型效果的评价。因为我们在建模时对模型自变量的所有处理工作,本质上都是为了提升模型的效果。

在之前的一些学习中,我也总结了这种二分类模型效果的评价方法,尤其是其中的ROC曲线。为了描述WOE的意义,还真的需要从ROC说起。仍旧是先画个表格。

数据来自于著名的German credit dataset,取了其中一个自变量来说明问题。第一列是自变量的取值,N表示对应每个取值的样本数,n1和n0分别表示了违约样本数与正常样本数,p1和p0分别表示了违约样本与正常样本占各自总体的比例,cump1和cump0分别表示了p1和p0的累计和,woe是对应自变量每个取值的WOE(ln(p1/p0)),iv是woe*(p1-p0)。

对iv求和(可以看成是对WOE的加权求和),就得到IV(information value信息值),是衡量自变量对目标变量影响的指标之一(类似于gini,entropy那些),此处是0.666,貌似有点太大了,囧。

上述过程研究了一个自变量对目标变量的影响,事实上也可以看成是单个自变量的评分模型,更进一步地,可以直接将自变量的取值当做是某种信用评分的得分,此时需要假设自变量是某种有序变量,也就是仅仅根据这个有序的自变量直接对目标变量进行预测。

正是基于这种视角,我们可以将“模型效果的评价”与“自变量筛选及编码”这两个过程统一起来。筛选合适的自变量,并进行适当的编码,事实上就是挑选并构造出对目标变量有较高预测力(predictive power)的自变量,同时也可以认为,由这些自变量分别建立的单变量评分模型,其模型效果也是比较好的。

就以上面这个表格为例,其中的cump1和cump0,从某种角度看就是我们做ROC曲线时候的TPR与FPR。例如,此时的评分排序为A12,A11,A14,A13,若以A14为cutoff,则此时的TPR=cumsum(p1)[3]/(sum(p1)),FPR=cumsum(p0)[3]/(sum(p0)),就是cump1[3]和cump0[3]。于是我们可以画出相应的ROC曲线。

可以看得出来这个ROC不怎么好看。之前也学习过了,ROC曲线有可以量化的指标AUC,指的就是曲线下方的面积。这种面积其实衡量了TPR与FPR之间的距离。

根据上面的描述,从另一个角度看TPR与FPR,可以理解为这个自变量(也就是某种评分规则的得分)关于0/1目标变量的条件分布,例如TPR,即cump1,也就是当目标变量取1时,自变量(评分得分)的一个累积分布。当这两个条件分布距离较远时,说明这个自变量对目标变量有较好的辨识度。

既然条件分布函数能够描述这种辨识能力,那么条件密度函数行不行呢?这就引出了IV和WOE的概念。事实上,我们同样可以衡量两个条件密度函数的距离,这就是IV。这从IV的计算公式里面可以看出来,IV=sum((p1-p0)*log(p1/p0)),其中的p1和p0就是相应的密度值。IV这个定义是从相对熵演化过来的,里面仍然可以看到x*lnx的影子。

至此应该已经可以总结到:评价评分模型的效果可以从“条件分布函数距离”与“条件密度函数距离”这两个角度出发进行考虑,从而分别得到AUC和IV这两个指标。这两个指标当然也可以用来作为筛选自变量的指标,IV似乎更加常用一些。而WOE就是IV的一个主要成分。

那么,到底为什么要用WOE来对自变量做编码呢?主要的两个考虑是:提升模型的预测效果,提高模型的可理解性。

首先,对已经存在的一个评分规则,例如上述的A12,A11,A14,A13,对其做各种函数变化,可以得到不同的ROC结果。但是,如果这种函数变化是单调的,那么ROC曲线事实上是不发生变化的。因此,想要提高ROC,必须寄希望于对评分规则做非单调的变换。传说中的NP引理证明了,使得ROC达到最优的变换就是计算现有评分的一个WOE,这似乎叫做“条件似然比”变换。

用上述例子,我们根据计算出的WOE值,对评分规则(也就是第一列的value)做排序,得到新的一个评分规则。

此处按照WOE做了逆序排列(因为WOE越大则违约概率越大),照例可以画出ROC线。

可以看出来,经过WOE的变化之后,模型的效果好多了。事实上,WOE也可以用违约概率来代替,两者没有本质的区别。用WOE来对自变量做编码的一大目的就是实现这种“条件似然比”变换,极大化辨识度。

同时,WOE与违约概率具有某种线性关系,从而通过这种WOE编码可以发现自变量与目标变量之间的非线性关系(例如U型或者倒U型关系)。在此基础上,我们可以预料到模型拟合出来的自变量系数应该都是正数,如果结果中出现了负数,应当考虑是否是来自自变量多重共线性的影响。

另外,WOE编码之后,自变量其实具备了某种标准化的性质,也就是说,自变量内部的各个取值之间都可以直接进行比较(WOE之间的比较),而不同自变量之间的各种取值也可以通过WOE进行直接的比较。进一步地,可以研究自变量内部WOE值的变异(波动)情况,结合模型拟合出的系数,构造出各个自变量的贡献率及相对重要性

一般地,系数越大,woe的方差越大,则自变量的贡献率越大(类似于某种方差贡献率),这也能够很直观地理解。

总结起来就是,做信用评分模型时,自变量的处理过程(包括编码与筛选)很大程度上是基于对单变量模型效果的评价。而在这个评价过程中,ROC与IV是从不同角度考察自变量对目标变量的影响力,基于这种考察,我们用WOE值对分类自变量进行编码,从而能够更直观地理解自变量对目标变量的作用效果及方向,同时提升预测效果。

这么一总结,似乎信用评分的建模过程更多地是分析的过程(而不是模型拟合的过程),也正因此,我们对模型参数的估计等等内容似乎并不做太多的学习,而把主要的精力集中于研究各个自变量与目标变量的关系,在此基础上对自变量做筛选和编码,最终再次评估模型的预测效果,并且对模型的各个自变量的效用作出相应的评价。

有了WOE和IV指标就可以进行下一步的模型验证了。

模型验证 

在收集数据时,把所有整理好的数据分为用于建立模型的建模样本和用于模型验证的对照样本对照样本用于对模型总体预测性、稳定性进行验证。申请评分模型的模型检验指标包括K-S值、ROC等指标。

通常一个二值分类器可以通过ROC(Receiver Operating Characteristic 受试者工作特征曲线,ROC曲线上每个点反映着对同一信号刺激的感受性。)曲线和AUC值(Area under Curve  Roc曲线下的面积,介于0.1和1之间。Auc作为数值可以直观的评价分类器的好坏,值越大越好。)来评价优劣。

很多二元分类器会产生一个概率预测值,而非仅仅是0-1预测值。我们可以使用某个临界点(例如0.5),以划分哪些预测为1,哪些预测为0。得到二元预测值后,可以构建一个混淆矩阵来评价二元分类器的预测效果。所有的训练数据都会落入这个矩阵中,而对角线上的数字代表了预测正确的数目,即true positive + true nagetive。同时可以相应算出TPR(真正率或称为灵敏度)和TNR(真负率或称为特异度)。我们主观上希望这两个指标越大越好,但可惜二者是一个此消彼涨的关系。除了分类器的训练参数,临界点的选择,也会大大的影响TPR和TNR。有时可以根据具体问题和需要,来选择具体的临界点。

图7. 真假阴阳性定义

如果我们选择一系列的临界点,就会得到一系列的TPR和TNR,将这些值对应的点连接起来,就构成了ROC曲线。ROC曲线可以帮助我们清楚的了解到这个分类器的性能表现,还能方便比较不同分类器的性能。在绘制ROC曲线的时候,习惯上是使用1-TNR作为横坐标即FPR(false positive rate),TPR作为纵坐标。这是就形成了ROC曲线。

而AUC(Area Under Curve)被定义为ROC曲线下的面积,显然这个面积的数值不会大于1。又由于ROC曲线一般都处于y=x这条直线的上方,所以AUC的取值范围在0.5和1之间。使用AUC值作为评价标准是因为很多时候ROC曲线并不能清晰的说明哪个分类器的效果更好,而作为一个数值,对应AUC更大的分类器效果更好。

ROC交换曲线现实意义:衡量舍弃好账户和避免坏账户之间的交换关系。理想的情况是:舍弃0%好账户的情况下拒绝100%的坏账户,模型完全准确地把好账户和坏账户区别开来


图8. ROC曲线中好坏客户比

K-S指标根据两个数学家命名,与交换曲线类似,衡量的是好账户和坏账户的累计分布比例之间具体最大的差距好账户和坏账户之间的距离越大,k-s指标越高,模型的区分能力越强。


图9. K-S指标图:作为好坏客户的另一种区分标志

这些指标满足之后则基本完成评分卡模型的开发过程。

总结展望:

根据以上的讲解,可以看出现在的评分卡并不是特别复杂,很多金融和银行机构都会有自己已经成熟的评分卡模型,可是对于以安全性为最主要的因素考虑,未来的转型是通过外围的数据平台进行双擎的数据分析,业务拓展,例如实时的BI,以及像蚂蚁金服一样,很多额度指标和业务模式比较灵活。很多模型在基础的数据量上的可行,并不代表在未来的云数据平台,大规模跑批中有很好的效果,这其中依然存在很大的挑战和机遇。

金融大数据信用评分模型解析

传统个人征信的分析维度包括:

1 )个人基本数据,如年龄、性别、职业、收入、婚姻状况、工作年限、 工作状况等;

2) 信贷情况,主要是信贷和信用卡相关数据;

3)公共数据,包括税务、工商、法院、电信、水电煤气等部门的数据;

4) 个人信用报告查询记录。

如今随着大数据时代的到来和发展,可用于评估人们的数据越来越丰富,如电商的交易数据、社交类数据(强社交关系如何转化为信用资产)、网络行为数据等, 来自互联网的数据将帮助金融机构更充分地了解客户。

(一) 侧重电商: 芝麻信用

以芝麻信用所构建的信用体系来看,芝麻信用分根据当前采集的个人用户信息进行加工、整理、计算后得出的信用评分,分值范围是 350 到 950,分值越高代表信用水平越好,较高的芝麻分可以帮助个人获得更高效、更优质的服务。 芝麻分综合考虑了个人用户的信用历史、行为偏好、履约能力、身份特质、人脉关系五个维度的信息,其中来自淘宝、支付宝等“阿里系”的数据占 30-40%。

1) 信用历史: 过往信用账户还款记录及信用账户历史。目前这一块内容大多来自支付宝,特别是支付宝转账和用支付宝还信用卡的历史。

2) 行为偏好: 在购物、缴费、转账、理财等活动中的偏好及稳定性。比如一个人每天打游戏 10 小时,那么就会被认为是无所事事;如果一个人经常买纸尿裤,那这个人便被认为已为人父母,相对更有责任心。

3) 履约能力: 包括享用各类信用服务并确保及时履约,例如租车是否按时归还,水电煤气是否按时交费等。

4) 身份特质: 在使用相关服务过程中留下的足够丰富和可靠的个人基本信息。 包括从公安、学历学籍、工商、法院等公共部门获得的个人资料,未来甚至可能包括根据开车习惯、敲击键盘速度等推测出的个人性格。

5) 人脉关系: 好友的身份特征以及跟好友互动的程度。根据“物以类聚人以群分”的理论,通过转账关系、校友关系等作为评判个人信用的依据之一。其采用的人脉关系、性格特征等新型变量能否客观反映个人信用,但目前还没有将社交聊天内容、点赞等纳入参考。

(二) 侧重社交: 腾讯信用

腾讯信用 主要是基于社交网络。 通过 QQ、微信、财付通、 QQ 空间、腾讯网、 QQ 邮箱等社交网络上的大量信息, 比如在线时长、登录行为、虚拟财产、支付频率、购物习惯、社交行为等, 利用其大数据平台 TDBank,在不同数据源中, 采集并处理包括即时通信、 SNS、电商交易、虚拟消费、关系链、游戏行为、媒体行为和基础画像等数据,并利用统计学、传统机器学习的方法,得出用户信用得分,为用户建立基于互联网信息的个人征信报告。

腾讯信用 评分以星级的方式展现。 信用星级一共 7 颗星,亮星颗数越多代表信用越良好,星级主要由四个维度构成:

1) 消费: 用户在微信、手机 QQ 支付以及消费偏好。

2) 财富: 在腾讯产品内各资产的构成、理财记录。

3) 安全: 财付通账户是否实名认证和数字认证。

4) 守约: 消费贷款、信用卡、房贷是否按时还等。

(三)侧重运营商: 聚信立

聚信立主要是基于互联网大数据,综合个人用户运营商数据、电商数据、公积金社保数据、学信网数据等,形成个人信用报告。 聚信立通过借款人授权,利用网页极速抓取技术获取各类用户个人数据,通过海量数据比对和分析,交叉验证,最终为金融机构提供用户的风险分析判断。

聚信立以报告形式展现,报告主要由四个维度构成:

1) 信息验真: 通过交叉比对验证用户是否是真实存在的人,是否有欺诈风险。

2) 运营商数据分析:分析用户生活、工作及社交范围,与家人朋友的联系频率等。

3) 电商数据分析: 分析用户消费能力及消费习惯,判断用户是否有能力还款。

4) 其他数据分析: 包括公积金社保数据、学信网数据、全国高法执行名单、黑名单等数据,判断用户是否存在欺诈风险。

聚信立的底层 IT架构为丰富的技术线提供稳定支持,对所有数据源网站进行实时监控,人工智能自动排错,可用率超过 90%。

(四)侧重信用卡: 51 信用卡

51 信用卡主要是基于用户信用卡电子账单历史分析、电商及社交关系强交叉验证。 根据用户的信用卡数据、开放给平台的电商数据所对应的购买行为、手机运营商的通话情况、登记信息等取得多维信息的交叉验证,确定用户的风险等级以及是否贷款给该用户。

51 信用卡风险等级由五个维度构成:

1) 账单管理时间: 信用卡有效存续时间越长,用户风险越低。

2) 账单表现: 根据用户的授信卡数、授信额度,以及还款比和账单完整度判断用户的还款能力和诚信程度。

3) 手机入网期限: 手机入网期限越长,用户风险越低。

4) 运营商: 通过近 4 个月有效通话记录以及通讯录中是否存在负面联系人判断用户自身的可靠程度。

5) 淘宝: 主要看常用收货姓名及电话号码是否与申请人预留号码一致。

大数据征信怎么做?随着大数据时代的到来和发展,可用于评估人们的数据越来越丰富,如电商的交易数据、社交类数据(强社交关系如何转化为信用资产)、网络行为数据等,来自互联网的数据将帮助金融机构更充分地了解客户。

1)侧重电商:芝麻信用。芝麻分来自淘宝、支付宝的数据占30-40%,综合考虑个人用户的信用历史、行为偏好、履约能力、身份特质、人脉关系五个维度的信息;

2)侧重社交:腾讯信用。通过社交网络上的大量信息,比如在线时长、登录行为、虚拟财产、支付频率、购物习惯、社交行为等,得出用户信用得分;

3)侧重运营商:聚信立。综合个人用户运营商数据、电商数据、公积金社保数据、学信网数据等,形成个人信用报告;

4)侧重信用卡:51信用卡。根据用户的信用卡数据、开放给平台的电商数据所对应的购买行为、手机运营商的通话情况、登记信息等取得多维信息的交叉验证,确定用户风险等级。

节选自招商证券2016年5月17日发布的报告《全民征信时代开启,大数据推动创新》。

转载于:https://my.oschina.net/hblt147/blog/1593382

3分钟搞明白信用评分卡模型模型验证相关推荐

  1. 山东大学暑期项目实训-基于信用评分卡算法模型的个人信用评级系统的设计与实现-第一周-1(6月28日)

    实训题目名称 基于信用评分卡算法模型的个人信用评级系统的设计与实现 项目流程 本项目核心信用风险评级模型的主要的研发及设计实现策略及流程如下: (1) 数据获取,包括获取存量客户及潜在客户的数据.存量 ...

  2. 山东大学暑期项目实训-基于信用评分卡算法模型的个人信用评级系统的设计与实现-第三周-9(7月16日)

    日总结 进行完分箱的工作后,我们开始进行WOE值和IV值的计算以为后面模型转变做好准备,在通过了解和学习相关知识后,我们通过创建函数bin_self,在里面算出好坏样本数,然后再将分箱结果引入,通过公 ...

  3. 山东大学暑期项目实训-基于信用评分卡算法模型的个人信用评级系统的设计与实现-第四周-11(7月21日)

    模型建立后开始计算分数,先找到前面由逻辑回归输出结果里面的逻辑回归系数.然后计算评分卡分值,由查阅资料得知score=offset+factor*log(odds),这里设置基础分值为500,PDO和 ...

  4. 山东大学暑期项目实训-基于信用评分卡算法模型的个人信用评级系统的设计与实现-第一周-3(7月2日)

    继续学习了对于数据预处理和数据建模评估的内容 标准化和归一化处理 标准化 使用库函数进行标准化处理.自定义函数实现标准化处理 归一化 使用库函数进行归一化处理.自定义函数实现归一化处理 训练集和测试集 ...

  5. 山东大学暑期项目实训-基于信用评分卡算法模型的个人信用评级系统的设计与实现-第四周-10(7月19日)

    得出woe值和IV值后,通过柱状图对数据进行可视化输出.再自定义函数replace_woe,读取训练集,并将得到的woe值进行替换输出到新的文件WoeData里面.去除掉对因变量影响不明显的变量'Se ...

  6. 山东大学暑期项目实训-基于信用评分卡算法模型的个人信用评级系统的设计与实现-第四周-12(7月23日)

    在得出基础分和各部分得分后,两者相加即可得出个人总评分,自定义compute_score函数来找到每一行数据根据分箱得出的分数段的得分,最想通过各评分相加得出最终评分,并对最终结果进行输出. comp ...

  7. 山东大学暑期项目实训-基于信用评分卡算法模型的个人信用评级系统的设计与实现-第三周-7(7月12日)

    日总结 通过上周对基础知识的学习已经数据预处理后,本周先就已经处理好的数据进行探索性数据分析,通过直方图对各个数据列进行适当的划分bins数后.观察分析直方图,发现其中大多数都按照预期呈现正态分布,但 ...

  8. 山东大学暑期项目实训-基于信用评分卡算法模型的个人信用评级系统的设计与实现-第二周-6(7月9日

    #划分测试集训练集 查看MonthlyIncome_rf的分布情况,没有作标准化与归一化,选择一定范围内的值进行查看 用df.copy(deep=True)创建一个不同内存空间的副本 #查看相关字段直 ...

  9. 山东大学暑期项目实训-基于信用评分卡算法模型的个人信用评级系统的设计与实现-第二周-5(7月8日)

    删除重复行 # 查看重复值 isDuplicated = df.duplicated(['MonthlyIncome_rf', 'age', 'DebtRatio', 'SeriousDlqin2yr ...

最新文章

  1. 机器学习 1、R语言
  2. Project Euler 50 Consecutive prime sum
  3. 严蔚敏《数据结构》C语言版 第三章 算法3.4 表达式求值
  4. 新建arcgis api for android 项目失败
  5. IntelliJ IDEA 前端调试(Js Debug)
  6. proteus里面没有stm32怎么办_学习STM32日志——独立看门狗实验(20.06.23)
  7. VTK:Utilities之DataAnimationSubclass
  8. Airflow 中文文档:使用操作器
  9. MeasureSpec学习
  10. Robocode学习Java
  11. js函数传参传入对象
  12. 自定义设置HTTP响应头
  13. 微信公众号H5开发,实现网页授权(静默登录)
  14. Mybatis中resultMap和resultType的区别
  15. form 9i, 6i 运行环境配置
  16. 关于多极充磁磁环表面磁场分布的研发历程GM900系列表磁分布测量仪
  17. 中国PCB电路板厂相关网址
  18. mybatis动态sql,批量插入,批量删除,模糊查询
  19. 强大的视频播放器 KMPlayer 简单使用
  20. Check Box的详细用法

热门文章

  1. java isprime函数_翁恺老师零基础java课程函数章第一题分解质因数
  2. C++随机产生任意类型某个区间范围的随机数
  3. Python 虚拟环境迁移
  4. IP远程实施访问另一台电脑
  5. 用计算机亩换算成平方,公倾,平方米,英亩,市亩,平方公里等常见面积单位转换在线计算器_三贝计算网_23bei.com...
  6. 【WIN10】 改用microsoft账户登录 闪退,且内置账户无法运行Win10应用
  7. 深入理解文字高度和行高的设置
  8. 机器学习模型设计准则:“无免费午餐”定理和“奥卡姆剃刀”原则
  9. 微软modern.IE:网站兼容性测试利器
  10. 企业咨询行业拓客的10个经典方法