详解风控模型中的逻辑回归评分卡与模型评估内容

news2024/11/19 13:25:24

今天我们来输出一篇风控长文,关于大家熟悉关注的逻辑评分卡的开发的内容,文章篇幅较长,大纲目录如下:

  1. 建模前准备
    1.1特征预处理与转化
    1.2特征衍生与提取
    1.3特征选择与降维

  2. 分箱
    2.1分箱概述
    2.2分箱方法

  3. Woe计算
    3.1 WOE
    3.2 IV

  4. 建模

  5. 模型评估
    5.1 混淆矩阵
    5.2 roc曲线与auc值
    5.3 KS曲线与ks值

  6. 分数校准
    1 建模前准备
    在开始建模前,需要进行大量的数据处理工作,包括特征预处理和转化、特征衍生与提取、特征选择与降维,这一部分是整个建模流程的基石,约占整个建模流程的70%的工作量。
    1.1 特征预处理与转化
    特征预处理与转化包含数据清洗、编码和转化。
    1.1.1 数据清洗
    本文介绍对错误值、异常值、缺失值的数据清洗方法。

错误值:
1.定义:录入错误、系统原因到时数据引入错误、后续加工计算错误
2.处理办法:有两种。
a).找到错误原因进行修正变成正常值
b).直接删除

异常值处理:
定义:没有明确的定义,通常认为在置信区间1%-99%以外的数据,当做异常值,一般用箱型图来判断异常值(箱型图原理如下)。
在这里插入图片描述

2、处理办法:修正、删除(要求随机),删除要求不影响y的分布和随机性,另外一种方法:将异常值放在头尾两个箱内,减少极值的杠杆效应,另外可将异常值当做缺失值,然后用均值替换、盖帽法等进行修正和填补
缺失值处理:
1、定义:在表关联匹配时没有匹配到时产生的空值
2、处理方法:
a).缺失值有一定的含义,保留缺失值,如果这个字段本身大于0的,那么给他赋值-999,如果这个字段有正有负,那么给他赋值-9999。
b).有明确的逻辑的缺失:要通过逻辑进行填充
c).随机缺失的:通过众数/中位数填充
d).转化:通过woe单独作为一箱
e).删除:如果该变量缺失率很高,大于85%,和y的关联性不高的话,可以直接删除。如果和y关联性比较显著的话,不建议删除。

1.1.2编码
1.分类变量:如性别、学历、省份等,可采用onehot或labelencoder进行编码
2.文本型变量:分词向量化后,用词袋模型onehot/word2vec词嵌入
3. 二值化:是否、好坏等,直接转化成0/1映射

1.1.3 转化
1.分布转化:当数据分布不符合正态分布时,通过特征处理,使得数据接近正泰分布。常见的转化有如下几种:
对数:ln(x)、平方根、sigmoid,probit

2.归一化/标准化:
在这里插入图片描述

1.2 特征衍生与提取
特征衍生的方法通常有两种,1.专家经验,2.自动衍生:预定义算子和特征组合,批量化特征组合

1.3 特征选择与降维
特征选择与降维是指通过一些手段,从业务角度和数据角度筛选对模型贡献度高的特征。
1.3.1业务角度
从业务角度要求数据的合规性、可获得性、可解释性
1.3.2 数据角度
(1)通常要求数据缺失率不能太高、集中度不能太高、波动性不能太大。
(2)时间稳定性PSI:不同时间分布是否变化

评价特征稳定性:衡量特征是否随时间的推移发生大的波动,可用于变量监控。模型上线前做特征选择,剔除不稳定变量。
评价模型的稳定性:对数据集的预测/分类结果进行稳定性评价。模型上线部署后,可通过PSI曲线报表来观察模型的稳定性。
PSI计算方式:PSI=SUM(实际占比-预期占比)*ln(实际占比/预期占比)
PSI越小,代表稳定性越好。
在这里插入图片描述

(3)变量预测力:IV,通过IV筛选预测能力比较强的特征。IV计算可通过woe计算得到,IV越大,代表变量预测能力越强。
在这里插入图片描述

1.3.3特征选择的方式
过滤法:
1)缺失率>x,
2)方差波动<x,
3)psi>x,
4)corr>x,
5)woe单调,
6)iv<x
嵌入法:特征选择整合为模型的一部分,比如决策树
包装法:通过统计模型或者机器学习来选择特征

2 分箱
2.1 分箱概述
分箱的定义:将变量取值划分成不同的分组。
分箱的目的:适应缺失值和极端值,对于缺失值和极端值放在单独一个箱里。这样变量就会平滑一些,模型也更稳定。
常用分箱方法:等频/等距分箱,决策树/best-ks/卡方分箱
分箱的原则:组内差异小,组间差异大,每组分箱占比不小于5%,必须有好坏两种分类(对于二分类而言必须一个箱里好坏样本都有)。

2.2 分箱方法
等距分箱:每个箱的区间大小是相等的,每个箱内的数据量不一定相等。边界值:xmin+n*(Xmax-xmin)/10
等频分箱:分箱之后,每个箱内的数据量相等。
决策树分箱:单变量用树模型拟合目标变量,例如直接使用sklearn提供的决策树(是用cart决策树实现的),然后将内部节点的阈值作为分箱的切点。
Best-ks分箱:计算方式跟模型KS一样,只是这里的分箱不是模型评分,而是特征的分箱。具体的步骤如下:

a)将特征取值按从小到大排序,每一个值作为一个分箱
b)计算每一个分箱的KS值
c)找到最大KS值对应的分箱,即特征值,以该特征值作为划分依据将数据划分成左右两份数据SET1和SET2(低于该特征值以及高于该特征值)
d)按照第三步递归划分左右两个数据集,直到满足终止条件(一般以KS值低于某个阈值或分箱数达到预设的值)
举例:
在这里插入图片描述

注:bad占比=累计坏人数/sum(红框内)
good占比=累计好人数/sum(蓝框内)
ks=abs(good占比-bad占比)

卡方分箱:卡方分箱是依赖于卡方检验的分箱方法,在统计指标上选择卡方统计量(chi-Square)进行判别,分箱的基本思想是判断相邻的两个区间是否有分布差异,基于卡方统计量的结果进行自下而上的合并,直到满足分箱的限制条件为止。如果两个相邻的区间具有非常类似的分布,那么这两个区间可以合并,否则,他们应该分开。低卡方表明他们具有相似的类分布。

具体的步骤如下:
a)预先设定一个卡方的阈值
b)特征进行排序,每个取值属于一个区间
c)合并区间:计算每一对相邻区间的卡方值,将卡防止最小的一对区间合并。
举例:
在这里插入图片描述

                                                          【表2-卡方分箱案例】

注:

Bad期望=totalsum(bad)/sum(total)
good期望=total
sum(good)/sum(total)
相邻卡方:上下两组的卡方值相加。例如:年龄18/19组的相邻卡方3.4852=0+3.3913

相邻卡方越小,说明上下两组的分布越相似。
如下表18 19两个组,卡方值均为0,相邻卡卡方值=0+0=0,所以18 19两个组的分布一致。
在这里插入图片描述

                                                               【表3-低卡方案例】

卡方分箱的终止条件:
a)分箱个数:每次将样本中具有最小卡方值的区间与相邻的最小卡方区间进行合并,直到分箱个数达到限制条件为止,比如限制分箱个数为5。
b)卡方阈值:根据自由度和显著性水平得到对应的卡方阈值,如果分箱的各区间最小卡方值小于卡方阈值,则继续合并,直到最小卡方值超过设定阈值为止。卡方停止的阈值一般设置置信度为0.9、0.95、0.99,自由度是n-1,例如分箱数是5,那么自由度是4,参考下表,查看自由度是4、显著水平为0.05的卡方值:9.488,卡方值>9.488,则拒绝原假设,认为两个bin分布一样,否则接受原假设,认为两个bin一样(原假设:两个bin不分布一样)。
在这里插入图片描述

                                                     【表4-卡方分布的临界值表】

3 WOE计算
变量分完箱后,接下来要对每一箱计算woe和变量IV值。
3.1 WOE
WOE公式:ln(p/(1-p)),其中p为违约概率,违约件占比高于正常件时,woe为负值,绝对值越高,表示该组别好坏客户的区别程度越高,各组之间woe值差距尽可能拉开并呈现由低至高的趋势。当p>0.5时,说明违约概率较高,此时woe为正,反之为负。变量分箱后的Woe要求单调或者呈U型的分布。
案例1:WOE计算:
在这里插入图片描述

3.2 IV
IV 称为信息值,计算公式为sum((违约件占比-正常件占比))*woe,IV值表示变量预测能力的强度。
分组i的IV值计算:
在这里插入图片描述

总体的IV:
在这里插入图片描述

结合上面的公式,计算如下案例:
在这里插入图片描述

同时,我们需要woe具有单调性或者呈U型,否则的话,需要进行手动调整。举例如下:
在这里插入图片描述

4 建模
在做完如上准备工作后,接下来要开始建模。
逻辑回归公式:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

5 模型评估
5.1 混淆矩阵
在这里插入图片描述

准确率(accuracy):正确预测的正负例样本与所有样本的壁纸,(A+D)/(A+B+C+D)。
正例覆盖率(sensitivity):正确预测的正例数在实际正例的比例,D/(B+D)
负例覆盖率(specificity):正确预测的负例数在实际负例的比例,A/(A+C)
正例命中率(precision):正确预测的正例数在预测正例数的比例,D/(C+D)
一般前三个越高,模型越理想。

5.2 Roc曲线与auc值
分类错误的正常记录比例=1-specificity,也叫误报率。Roc曲线通过在0-1之间改变创建混淆军阵的临界值,以纵轴敏感度sensitivity与横轴误报率(1-specificity)勾绘的图。auction的值等于曲线下的面积。
在这里插入图片描述

从AUC判断分类器(预测模型)优劣的标准

AUC = 1,是完美分类器,采用这个预测模型时,存在至少一个阈值能得出完美预测。绝大多数预测的场合,不存在完美分类器。
0.5 < AUC < 1,优于随机猜测。这个分类器(模型)妥善设定阈值的话,能有预测价值。
AUC = 0.5,跟随机猜测一样(例:丢铜板),模型没有预测价值。
AUC < 0.5,比随机猜测还差;但只要总是反预测而行,就优于随机猜测。
总结:AUC值越大,正确率越高

5.3 KS曲线与ks值
Ks曲线:将样本数据,评分由低到高排序,累计坏占比和累计好占比的两条曲线的差,就是ks曲线。其中累计好分布,上凸,累计坏分布时下凹面积,所以ks曲线,是先增加后减少。
Ks越大越好,但过大要考虑过拟合。
KS值的取值范围是[0,1],一般习惯乘以100%。通常来说,KS越大,表明正负样本区分程度越好。KS的业务评价标准如下所示。由于理解因人而异,不一定完全合理,仅供参考。
Ks<0.2:区分能力弱
20<ks<=40:区分能力较好
40<Ks<=50:区分能力良好
50<Ks<60:区分能力很强
60<Ks<=75:区分能力非常强
Ks>75:区分能力高但疑似过拟合

6 分数校准
分数校准是将模型算出来的0-1的概率值转换成整数分数,分数越高表示客户风险越低(不同业务分数范围不同,解释存在差异)。
逻辑回归的线性公式:
在这里插入图片描述

该公式将自变量x与y之间的非线性关系转换为线性关系。

客户的分
在这里插入图片描述

定义
在这里插入图片描述

p/(1-p)表示坏好比,-b可以使得违约概率越低,分数越高:
odds>1,表示坏客户概率高于好客户概率
odds<1,表示坏客户概率低于好客户概率
odds=1,表示坏客户概率等于好客户概率

这里要做两个假设,将score公式中的A、B参数计算出来。
(1)在某个特征比例下的分数。比如,设定坏:好=1:60的时候,score=600。(这里可根据个人习惯设定比例和分数值)

(2)坏好比翻倍的分数。比如,坏:好=1:120时,分数为620,也就是比率翻倍后,分数增加20分。设为pdo。

解方程
在这里插入图片描述

解得:
在这里插入图片描述

因此:score = 481.89-28.85*ln(p/(1-p))
经过如上分数校准后,可将每一个违约概率对准到整数分数上。

接下来我们根据具体实例介绍分数校准:
在这里插入图片描述

                                                               【表5-分数校准案例】

如上表,,红色框表示回归模型算出来特征
在这里插入图片描述

因此变量v211的分数是492.2。该客户得分分数=所有变量分数的累加。
如上,逻辑回归评分卡建模的分箱板块、模型评估和分数校准内容已介绍完毕。

另外关于中小微财税票中的模型内容,有兴趣的童鞋可关注:
在这里插入图片描述

~原创文章

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/11099.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【用户画像】功能实现值写入ClickHouse人群包、预估和更新分群人数,NoSQL数据库介绍

文章目录一 写入ClickHouse人群包1 组合查询Bitmap表SQL代码实现&#xff08;1&#xff09;SQL语句分析&#xff08;2&#xff09;实现思路&#xff08;3&#xff09;实现过程controller层service层Taginfo实现类mapper层2 人群包代码实现&#xff08;1&#xff09;配置文件&am…

一个注解干翻所有Controller

1. 概览 日常开发中&#xff0c;最繁琐的便是编写 Controller。很多公司都制定了规范&#xff1a;Controller 不能存在任何的业务逻辑&#xff0c;主要完成参数解析和结果转换。不过查看项目源码&#xff0c;你会发现 Controller 中存在了大量不该存在的逻辑&#xff0c;对此&…

【MFC】打砖块小游戏(下)(7)

任务点&#xff1a; 1、键盘左右键消息处理&#xff1b; 2、碰撞检测&#xff08;与砖块、挡板、上、左、右&#xff09;&#xff1b; 3、控制转向&#xff1b; 程序shix 解决思路&#xff1a; 1、左右键消息处理&#xff1a; 响应 WM_KEYDOWN 消息&#xff0c;移动挡板…

【Spring】——1、使用@Configuration和@Bean给容器中注册组件

&#x1f4eb;作者简介&#xff1a;zhz小白 公众号&#xff1a;小白的Java进阶之路 专业技能&#xff1a; 1、Java基础&#xff0c;并精通多线程的开发&#xff0c;熟悉JVM原理 2、熟悉Java基础&#xff0c;并精通多线程的开发&#xff0c;熟悉JVM原理&#xff0c;具备⼀定的线…

ArrayList详解

ArrayList是什么? ArrayList就是动态数组&#xff0c;是List接口的可调整大小的数组实现&#xff1b;除了实现List接口之外&#xff0c;该类还提供了一些方法来操纵内部使用的存储列表的数组大小。它的主要底层实现是数组Object[] elementData。 为什么要设计ArrayList&…

【C++】mapset利用红黑树进行简单封装

前言 大家好~~~~呀&#xff01;很荣幸你能点击这篇文章。本篇也是我的一份学习笔记&#xff0c;让我们一起共同成长吧~ing...... C红黑树的简单插入实现博客~ 【C】红黑树的插入实现_柒海啦的博客-CSDN博客 二叉搜索树的基本结构和实现博客~ 【C】二叉搜索树_柒海啦的博客-CSDN…

java 实现一个最小栈

文章目录最小栈1.实现思路2.实现过程演示3.代码实现思路3.1 压入思路3.2 弹出思路3.3 如何返回栈顶元素的下标3.4 如何返回栈的最小值4.整体代码实现最小栈 1.实现思路 实现一个stack栈 和 minStack栈。先将数据一个一个压入到 stack 中。找到 stack 中的最小值。minStack中始…

简单介绍动态链接过程

文章目录gotgot[0] link_map结构体地址got[1] _dl_runtime_resolvegot[2]之后pltplt[0] 调用libc解析函数plt后面的plt.sec随便拿ida打开一个程序可以看到这是got的内容gdb一下查看内容&#xff0c;可以看到地址是从0开始的大家也知道 got是个独立的section&#xff0c;所以最开…

MySQL数据库(Java的数据库编程:JDBC)

作者&#xff1a;渴望力量的土狗 博客主页&#xff1a;渴望力量的土狗的博客主页 专栏&#xff1a;MySQL数据库 目录 什么是数据库编程&#xff1a; 什么是JDBC? JDBC工作原理&#xff1a; JDBC的使用及相关操作&#xff1a; JDBC开发案例&#xff1a; JDBC常用接口…

关于电影的HTML网页设计-威海影视网站首页-电影主题HTM5网页设计作业成品

HTML实例网页代码, 本实例适合于初学HTML的同学。该实例里面有设置了css的样式设置&#xff0c;有div的样式格局&#xff0c;这个实例比较全面&#xff0c;有助于同学的学习,本文将介绍如何通过从头开始设计个人网站并将其转换为代码的过程来实践设计。 文章目录一、网页介绍一…

5分钟教你如何设计一个安全web架构

今天就给大家聊聊web安全&#xff0c;web安全占比还是比较大的&#xff0c;基础的从一些html标签&#xff0c;到js 然后到接口&#xff0c;数据库&#xff0c;以及流量攻击&#xff0c;模拟请求。当然这也谈到了一个概念&#xff0c;全新的架构设计模式&#xff0c;前后端分离&…

一文讲解如何学习 Linux 内核网络协议栈

协议栈的细节 下面将介绍一些内核网络协议栈中常常涉及到的概念。 sk_buff 内核显然需要一个数据结构来表示报文&#xff0c;这个结构就是 sk_buff ( socket buffer 的简称)&#xff0c;它等同于在<TCP/IP详解 卷2>中描述的 BSD 内核中的 mbuf。 sk_buff 结构自身并不…

【毕业设计】深度学习人脸性别年龄识别系统 - python

文章目录0 前言1 课题描述2 实现效果3 算法实现原理3.1 数据集3.2 深度学习识别算法3.3 特征提取主干网络3.4 总体实现流程4 具体实现4.1 预训练数据格式4.2 部分实现代码5 最后0 前言 &#x1f525; Hi&#xff0c;大家好&#xff0c;这里是丹成学长的毕设系列文章&#xff0…

【案例分享】华为防火墙出接口方式的单服务器智能DNS配置

介绍出接口方式的单服务器智能DNS的配置举例。 组网需求 如图1所示&#xff0c;企业部署了一台ISP1服务器对外提供Web服务&#xff0c;域名为www.example.com。ISP1服务器的私网IP地址为10.1.1.10&#xff0c;服务器映射后的公网IP地址为1.1.1.10。企业的DNS服务器上存在域名w…

为什么你的用户转化率不高?-- 新媒体运营转化效果渠道归因分析

新媒体运营人最关注的就是流量和用户转化问题。公司发布了新APP、上线了新网站项目&#xff0c;进行用户定位、策划、数据分析和内容营销&#xff0c;花重钱做产品推广&#xff0c;但最后用户转化率却不高&#xff0c;大批用户流失了......这种现象是运营人最不愿意看到的&…

老杨说运维|今年这个会议非比寻常

前言&#xff1a; 人民银行印发的《金融科技(FinTech)发展规划(2022-2025年)》中&#xff0c;重点围绕数字化转型建设&#xff0c;强调上云、数据基础建设以及数智应用的重要性&#xff0c;明确了金融科技的长期重点建设方向。 由金科创新社主办的“2022金融业新一代数据中心发…

kwebio/kweb-core:面向后端的轻量级 Kotlin Web 框架

现代网站至少由两个紧密耦合 的组件组成&#xff0c;一个在浏览器中运行&#xff0c;另一个在服务器上。它们通常用不同的编程语言编写&#xff0c;并且必须通过 HTTP(S) 连接相互通信。 Kweb 的目标是消除这种服务器/浏览器分离&#xff0c;这样您就可以专注于构建您的网站或用…

react多组件出错其他正常显示

问题&#xff1a;一个组件内部有很多个子组件&#xff0c;其中一个出错&#xff0c;怎么实现其他组件可以正常显示&#xff0c;而不是页面挂掉&#xff1f; 一、错误边界 可以捕获发生在其子组件树任何位置的 JavaScript 错误&#xff0c;并打印这些错误&#xff0c;同时展示…

CC攻击和DDOS攻击哪个对服务器影响更大

互联网企业&#xff0c;不管是小企业&#xff0c;还是大企业&#xff0c;大多数企业网站都遭受过攻击&#xff0c;而我们时不时的也能在网上看见某大型企业网站被攻击&#xff0c;崩溃的新闻&#xff0c;网络攻击可以说是屡见不鲜了。攻击力最常见的就是DDOS攻击和CC攻击&#…

使用HTML+CSS技术制作篮球明星介绍网站

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…