实战案例!风控实战催收评分卡(附 Python 源码)

在风控环节中,传统观念A卡为主、B卡C卡为辅,但是在市场逐步饱和、政策利率要求越来越低的背景下,B卡和C卡也越来越重要。

本文以简易贷后数据实战催收评分模型,预测在用户逾期后、未来能否催回。

一、数据读取

数据来源某比赛网站,包括逾期用户的年龄、收入情况、家庭人员数、债务情况、历史逾期情况等等,预测变量为订单是否会逾期90天+,数据集中均为数值型变量、且字段较少,所以适合零基础、初学者上手练习。 文末获取数据集

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

二、变量统计

计算iv及特征缺失率,可以看到仅有两个变量存在少部分缺失,其中历史的逾期变量iv整体偏高。

在这里插入图片描述

import toad
def iv_miss(df,var_list,y):df_tmp=df[df[y].notnull()].copy()iv_all=toad.quality(df_tmp[var_list+[y]], target=y, indicators = ['iv','unique'])[['unique','iv']]miss_per=pd.DataFrame(df[var_list].isnull().sum()/(df.shape[0]))miss_per.columns=['缺失率']result=pd.concat([miss_per,iv_all],axis=1)return result.sort_values(['iv'],ascending=False)df_iv=iv_miss(df_sample,fea_list,y)
df_iv

三、模型构建

这里使用xgb构建二分类模型,使用ks、auc进行评估

在这里插入图片描述

查看特征重要性,如下三列分别为分裂次数、平均信息增益、样本覆盖度

在这里插入图片描述

def init_params():params_xgb={'objective':'binary:logistic','eval_metric':'auc','silent':0,'nthread':4,'n_estimators':1000,'eta':0.01,'num_leaves':10,'max_depth':4,'min_child_weight':500,'scale_pos_weight':1,'gamma':0,'reg_alpha':2,'reg_lambda':2,'subsample':0.8,'colsample_bytree':0.8,'grow_policy':'lossguide','early_stopping_rounds':50,'seed':123}return params_xgbdef ks_auc_value(y_value,df,model):y_pred=model.predict_proba(df)[:,1]fpr,tpr,thresholds= roc_curve(list(y_value),list(y_pred))ks=max(tpr-fpr)auc= roc_auc_score(list(y_value),list(y_pred))return ks,aucdef model_train_sklearn(df,y,fea_list):params=init_params()x_train,x_test, y_train, y_test =train_test_split(df[fea_list],df[y],test_size=0.2, random_state=123)clf=XGBClassifier(**params)model_sklearn=clf.fit(x_train,y_train,eval_set=[(x_train,y_train),(x_test,y_test)])train_ks,train_auc=ks_auc_value(y_train,x_train,clf)test_ks,test_auc=ks_auc_value(y_test,x_test,clf)dic={'train_good':(y_train.count()-y_train.sum()),'train_bad':y_train.sum(),'test_good':(y_test.count()-y_test.sum()),'test_bad':y_test.sum(),'train_ks':train_ks,'train_auc':train_auc,'test_ks':test_ks,'test_auc':test_auc}return dic,clfmodel_result,model=model_train_sklearn(df_sample,y,fea_list)
model_result

四、评分使用

C卡用于催收策略,使用预测概率/评分做分箱,如下图,催收策略比如对于bad_rate较低的前2箱可以短信催收、对于中间3-6箱短信催收和点催结合、最后4箱持续电催。

在这里插入图片描述

def ks_bins(y_true,y_pred,cut='cut',bins=10,pred='pred'):'''cut 分箱方法:cut等距分箱,qcut等频分箱输出:分箱ks结果'''df=pd.DataFrame({'true':list(y_true),'pred':list(y_pred),  # proba、score都可以})if cut=='cut':df['pred_bin']=pd.cut(df['pred'],bins=bins)elif cut=='qcut':df['pred_bin']=pd.qcut(df['pred'],q=bins,duplicates='drop')df_bin=df.groupby(['pred_bin'])['true'].agg(['count','sum','mean'])df_bin.columns=['cnt','bad','bad_rate']df_bin.fillna(0,inplace=True)df_bin['good']=df_bin['cnt']-df_bin['bad']df_bin['cum_count']=df_bin['cnt'].cumsum()df_bin['cum_good']=df_bin['good'].cumsum()df_bin['cum_bad']=df_bin['bad'].cumsum()df_bin['cum_bad_rate']=df_bin['cum_bad']/df_bin['cum_count']if pred=='pred':df_bin['ks']=df_bin['cum_good']/df_bin['good'].sum()-df_bin['cum_bad']/df_bin['bad'].sum()elif pred=='score':df_bin['ks']=df_bin['cum_bad']/df_bin['bad'].sum()-df_bin['cum_good']/df_bin['good'].sum()return df_bin[['cnt','bad_rate','cum_count','cum_bad_rate','ks']]round(ks_bins(df_sample[y],df_sample.pred,cut='cut',bins=10,pred='pred'),4)

代码与数据获取

独学而无优则孤陋而寡闻,技术要学会交流、分享,不建议闭门造车。

技术交流与答疑、源码获取,均可加交流群获取,群友已超过2000人,添加时最好的备注方式为:来源+兴趣方向,方便找到志同道合的朋友。

方式①、微信搜索公众号:Python学习与数据挖掘,后台回复:催收评分卡
方式②、添加微信号:dkl88194,备注:催收评分卡

资料1
在这里插入图片描述
资料2
我们打造了《数据分析实战案例宝典》,特点:从0到1轻松学习,方法论及原理、代码、案例应有尽有,所有案例都是按照这样的节奏进行表述。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

低压 5V 全桥驱动芯片GC9114 ,适用于摄像机、消费类等产品上

GC9114 是一款低压 5V 全桥驱动芯片,为摄像机、消费类产品、玩具和其他低压或者电池供电的运动控制类应用提供了集成的电机驱动解决方案。 GC9114 能提供高达 1.3A 的持续输出电流。可以工作在 2~6V 的电源电压上。具有 PWM(IN/IN)输入接口,与…

一文详解VScode 的远程开发

VS code登录服务器后进行编码和调试,VS code上的所有功能都可以使用,和在本地开发基本无区别。 一、配置免密远程登录 因为是要远程登录,那么需要通过使用ssh进行密钥对登录,这样每次登录服务器就可以不用输入密码了。 先来一句官…

docsify 文章加密

docsify 文章加密 什么是docsify? 简单来说是一款便捷的文档网站 官网文档 docsify支持很多中部署方式,包括单独部署,Github部署,Gitee部署....对于没有前端能力固定样式非常友好 加密需求 对于部署上的文档在部分时候需要进…

OV5640 摄像头的图像平滑处理

如图所示,这是整个视频采集系统的原理框图。 上电初始,FPGA 需要通过 IIC 接口对 CMOS Sensor 进行寄存器初始化配置。这些初始化的基本参数,即初始化地址对应的初始化数据都存储在一个预先配置好的 FPGA 片内 ROM中。在初始化配置完成后&…

过去半年信竞基础学习总结

当Richard同学从去年7月份,开始从YY班学习C和信息学竞赛时,他对C还一无所知,但对计算机和编程的兴趣让他一直都乐在其中。在过去的半年中,通过参加各个平台的月赛,让他更加热爱编程,也让Richard更加了解自己…

中国建设银行 关于解决微软升级导致插入网银盾无法自动打开企业网银的通知

关于解决微软升级导致插入网银盾无法自动打开企业网银的通知 发布时间:2023-10-18 尊敬的客户: 近期Windows操作系统升级会禁止使用IE浏览器,可能会导致您在插入网银盾后无法自动弹出企业网银登录页面,您可以通过以下方式解决&…

MODBUS转PROFINET网关与全数字交流伺服配置案例

MODBUS转PROFINET网关连接与全数字交流伺服驱动系统的配置案例,这一通信方式极大地简化了工业自动化系统中的数据传输和控制过程。变频器和伺服电机可以实现数据交流和控制指令的实时传输,从而实现更精确更高效的生产过程。 案例简介:本案例是…

NODE笔记 0

一些简单的node学习笔记记录,是Vue等前端框架的基础 入门学习备忘录 文章目录 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据总结 前言 node.js 内置网络服务器,是前端框架学习的基础: 概念:…

【python爬虫开发实战 情感分析】利用爬虫爬取城市评论并对其进行情感分析

🚀个人主页:为梦而生~ 关注我一起学习吧! 💡专栏: python网络爬虫从基础到实战 带你学习爬虫从基础到实战 深度学习带你感受AI的魅力 💡往期推荐: ⭐️前面比较重要的基础内容: 【Py…

安全远控如何设置?揭秘ToDesk、TeamViewer 、向日葵安全远程防御大招

写在前面一、远程控制:安全性不可忽略二、远控软件安全设置实测 ◉ ToDesk◉ TeamViewer◉ 向日葵 三、远控安全的亮点功能四、个人总结与建议 写在前面 说到远程办公,相信大家都不陌生。远程工作是员工在家中或者其他非办公场所上班的一种工作模式&am…

「PyMuPDF 专栏 」PyMuPDF创建PDF、拆分PDF

文章目录 一、本章前言二、使用PyMuPDF创建PDF文档1、实例代码2、过程详解①. 安装PyMuPDF②. 导入PyMuPDF模块③. 创建一个新的PDF文档④. 添加页面和内容⑤. 保存文档 三、使用PyMuPDF拆分PDF文档1、实例代码2、过程解析①. 导入模块②. 定义函数③. 打开源PDF文件④. 遍历页…

大模型笔记【2】 LLM in Flash

Apple最近发表了一篇文章,可以在iphone, MAC 上运行大模型:【LLM in a flash: Efficient Large Language Model Inference with Limited Memory】。 主要解决的问题是在DRAM中无法存放完整的模型和计算,但是Flash Memory可以存放完整的模型。…