项目需求:现某金融公司想要通过建立信用风险评分卡对客户进行判断,是否发放贷款

项目描述:数据来源 kaggle 数据量 4 万条,原始字段数 33 个

项目目的: 使用机器学习构建信用卡评分模型,对新样本做出预测
环境和工具: Rstudio, prettyR, smbinning
流程:
1.数据探索:完全缺失字段,以及二分类变量正类缺失的字段进行删除,对异常值采取盖帽
法进行替换
2 对变量进行分箱操作。使用 smbinning 包中的函数,通过决策树进行最优分箱,得到每
个变量的分箱结果,以及对应的 IV 值和 WOE 值。
3 通过 IV 值大于 0.02 的部分,筛选变量(性别,年龄,婚姻,区编号,是否有家庭电话,
工作年限,收入共 7 个变量),并通过 smbinning.gen 和 smbinning.factor.gen 函数生成
新的变量并生成新的数据表。变量值为分箱后对应的 WOE 值,数据模型进行建模
4 采用 Logistic(逻辑回归)进行学习建模,对输出结果通过 smbinning.scaling 进行打分,
生成评分卡
5.通过评分卡对原数据客户进行打分, 基本判断,好坏客户的分数取值分布情况。其次通
过 smbinning.metrics()输出结果, 得到评分卡的分数最优阈值为 546, AUC 值为 0.66,
并不是很好,准确率(precision)达 87.6%
6 最后通过评分卡,使用 excel 表格,运用 vlookup 函数,对新的客户进行匹配打分
模型使用 Rstudiuo 进行搭建。使用包: base,subning,prettyR, 使用函数: glm subning
subning.factor subning.gen subning.factor.gen sunbning..plot
开始:

首先导入需要使用得包:

1 数据工程:
数据探索阶段 ,发现数据中有部门字段内容全部缺失,以及部分二分类变量只有 1 个有值,
故这两种情况无法参加建模,将其找出删除。 同时识别出哪些字段是因子型,哪些是数值型,

方便后面分箱使用不同得函数,其中数值型字段用:smbinning 因子型使用:smbinning.factor

异常值处理 : 通过箱线图判断是否存在异常值, 使用盖帽法,用 99 分位点值代替极大异常

值,有 1 分位点值代替极小异常值的方法

由于 smbining 函数中得打分是 1 是信用高得客户,故这里将目标变量得 0 和 1 值互换

变量分箱 :使用 smbinning 函数,运用回归决策树最优分箱,从而使得类之间的相异性尽
可能大(由于变量较多,这里不一一列举,拿两个字段举例),其中连续变量使用得函数为:
smbinning 因子变量: smbinning.factor
连续型变量 举例: 首先用箱图查看数据分布情况,若分布区别不明显,可以使用 T 检验(数

值变量对分类变量得影响),有显著性再进行分箱,否则无意义

年龄属性得分布情况如上图,通过 T 检验, P<0.05,表明原假设被拒绝,认为属性对目标变
量有显著影响,可以进行分箱
Smbnning 对年龄得分箱结果,是通过回归树进行最有分箱,由树图可知:划分点为: 19,
22, 32, 37, 46, 59 六个点,分为 7 个区间属性,同时获取响应区间 WOE 值以及总得 IV

值。

年龄得 IV 值为 0.2.WOE 分布如下图,可加分箱分布有明显趋势,说明分箱结果不错,可以

加入模型。

用年龄字段进行分箱得完整代码如下:

对其他得数值变量,通过同样得方式进行分箱操作,并获取 IV 值。
因子型变量分箱
分类型变量 以性别举例说明:通过前期数据探索,发现性别变量有部分值没有指明性别,这
里用众数填充, :
对于分类变量采用得是卡方检验,来检验分类是否对目标变量有显著性得影响,这里 P 值

很小,表明拒绝原假设,即性别对信用度有显著影响,可以进行分箱

分箱结果得分布如下:可以看出,女性相对于男性更容易违约

分类变量分箱也采用的是 smbinning 包,不过 smbinning 包中就是用原分类值进行属性
划分,未对划分属性处理,分类变量用的函数是 smbinning.factor(),最后得到 SEX 的 IV

值为 0.0274。具体执行代码如下:

再举一个电话区号得例子,可能很多人直接做数值型变量处理了。通过数据探索发现,大部
分得申请者都是来自于四个地方,其他得地方人很少很分散,这里有明显得地域偏向,所有
我将其处理为类别变量,除了 3 个申请人较多得地方分别为一类,其他得地区划分为一类,
共四类进行处理;

通过 WOE 分布还是比较好得分箱, IV 值 0.0389

具体代码如下:

接下来所有变量进行分箱之后,得到所有得 IV 值,一般认为 IV 大于 0.02,对构建评分卡
有一定得价值,所以这里以 0.02 为界限进行变量筛选。最终选择性别,年龄,婚姻,区编
号,是否有家庭电话,工作年限,收入共 7 个变量进行建模。

一下是 IV 值及分布情况:

对于分箱后的数据,使用 smbinning 得函数,生成分箱后的数据,生成新得数据集,通过

logistic (逻辑回归),建立评分卡模型。其中声中分箱结果数据使用得函数,数值型分箱
变量用函数 smbinning.gen(),因子型变量用函数 smbinning.factor.gen()。通过逻辑回归

结果可以看出,分箱后得变量都较为显著

有了模型给出得预测结果,就可以对其进行打分了。使用 smbinning.scaling 函数,通过调
节 pdo, score, odds 三个参数,是的评分卡得分值在合理得范围内。这里评分卡区间为

(345-798)。并将评分卡保存到文件。代码如下:

评分卡得最终结果展示如下:

评分卡建好,这里是使用 smbinning.scoring.gen 对原数据集数据进行一个打分。并查看
好坏客户的得分分布情况,
其次通过 smbining.metrics()函数,从输出报告可以看出,最优阈值为: 546, AUC 值为

0.66,并不是很好,准确率(precision)达 87.6%,结果及代码如下图

预测 :
针对新样本,我选择用 Excel 工具获得信用评分,使用 VLOOKUP 函数可以很方便地得到
想要的数据,评分展示如下,选择 cutoff 值为 546,这里认为(526,546)的客户为关注客
户,信用情况中等, 546 分以上的客户信用情况良好, 526 分以下的客户信用情况堪忧。 其

中符号: ✔表示信用良好, ! 表示信用中等, × 表示信用较差

附上数据源:kaggle:https://www.kaggle.com/yuzijuan/credit-card-scoring/data

数据分析之信用风险评分卡建立相关推荐

  1. ML之LoR:基于信用卡数据集利用LoR逻辑回归算法实现如何开发通用信用风险评分卡模型之以toad框架全流程讲解

    ML之LoR:基于信用卡数据集利用LoR逻辑回归算法实现如何开发通用信用风险评分卡模型之以toad框架全流程讲解 目录 基于信用卡数据集利用LoR逻辑回归算法实现如何开发通用信用风险评分卡模型之以to ...

  2. ML之LoR:基于信用卡数据集利用LoR逻辑回归算法实现如何开发通用信用风险评分卡模型之以scorecardpy框架全流程讲解

    ML之LoR:基于信用卡数据集利用LoR逻辑回归算法实现如何开发通用信用风险评分卡模型之以scorecardpy框架全流程讲解 目录 基于信用卡数据集利用LoR逻辑回归算法实现如何开发通用信用风险评分 ...

  3. 【采用】信用风险评分卡系列之数据处理

    本系列文章主要介绍信用风险评分卡制作流程,如果想对信用风险深入了解,给大家推荐如下书单: 1.<信用风险评分卡研究-基于 SAS 的开发与实施>,作者:Mamdouh·Refat 2.&l ...

  4. 《信用风险评分卡研究——基于SAS的开发与实施》学习笔记(1)

     所有模型都要进行前期数据准备工作.在此,假设所有数据都已经准备完毕. 注:该系列文章都是学习马姆杜 雷法特著的<信用风险评分卡研究--基于SAS的开发与实施>一书时的学习记录和练手, ...

  5. 从0到1建立一张评分卡之变量分箱

      变量分箱是评分卡建模流程中的关键环节,可以说是评分卡的核心环节.合理的分箱可以消除变量的量纲影响,而且能减少异常值等噪声数据的影响,有效避免模型过拟合.此外,分箱可以给模型实现业务上的可解释性,可 ...

  6. 数据挖掘项目:银行信用评分卡建模分析(下篇)

    以下是银行信用评分卡建模分析下篇的内容,包括特征工程,构建模型,模型评估,评分卡建立这四部分.其中如果有一些地方分析的不正确,希望大家多多指正,感谢! 上篇文章的链接:数据挖掘项目:银行信用评分卡建模 ...

  7. python 评分卡_评分卡原理及Python实现

    信用风险计量模型可以包括跟个人信用评级,企业信用评级和国家信用评级.人信用评级有一系列评级模型组成,常见是A卡(申请评分卡).B卡(行为模型).C卡(催收模型)和F卡(反欺诈模型). 今天我们展示的是 ...

  8. 基于Python的信用评分卡模型-give me some credit数据集,AUC 0.93 KS 0.71

    信用风险计量模型可以包括跟个人信用评级,企业信用评级和国家信用评级.人信用评级有一系列评级模型组成,常见是A卡(申请评分卡).B卡(行为模型).C卡(催收模型)和F卡(反欺诈模型). 今天我们展示的是 ...

  9. 信用评分卡模型开发及评估指标

    版权声明:本文为博主原创文章,未经博主允许不得转载. 一.信用风险评级模型的类型 信用风险计量体系包括主体评级模型和债项评级两部分.主体评级和债项评级均有一系列评级模型组成,其中主体评级模型可用&qu ...

最新文章

  1. 《将要淘汰的八种人》读后感
  2. C++中的静态绑定与动态绑定
  3. 倾情大奉送--Spark入门实战系列
  4. Ubuntu16.04安装Pycharm2017.2
  5. 【CF582E】Boolean Function 树形DP+FWT
  6. Exception in thread main java.lang.Error: Unresolved compilation problems 解决方案
  7. POJ 2312 Battle City 优先队列+BFS
  8. puppeteer执行js_使用Node.js和Puppeteer与表单和网页进行交互– 2
  9. Ubuntu 中的编程语言(中)
  10. 安卓 时间服务器_官方都被惊动!LOL手游日本服务器挤到瘫痪,IOS不得不推迟...
  11. idea 使用神坑之索引篇(自定义不创建索引文件夹)
  12. 20171201-构建之法:现代软件工程-阅读笔记
  13. Linux terminal 终端快捷键
  14. mac MAMP pro安装和破解
  15. php如何采集有验证码的网页信息,网页数据采集出现验证码的解决方法 - 八爪鱼采集器...
  16. 孩子,外面的世界不会轻易原谅你…
  17. 阿里云域名配置以及https证书(ssl证书)配置
  18. 杨氏不等式(控制中的应用)
  19. Snipaste截图界大咖
  20. 从零开始写JavaScript框架

热门文章

  1. MySql 数据库 管理员密码忘记怎么办?
  2. 查看mysql数据库的版本
  3. cocos2d-x中使用CCSprite拼接有缝隙
  4. 读书笔记:普通心理学之个体心理
  5. 一款产品经理很好用的产品原型Axure配合软件--墨刀,将产品原型Axure,添加到墨刀,可以/预览/设计/编辑/共享/协同设计
  6. 周志华机器学习笔记(一)
  7. html绘制三维,在HTML + JS画布中绘制三维图形
  8. TCP长连接和短连接代码及其比较
  9. word快捷操作:用好F4键让重复操作省时省力
  10. 1628_MIT 6.828 xv6_chapter0操作系统接口