码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 基于简化的评分卡、Smote采样和随机森林的信贷违约预测


    查看全文:http://tecdat.cn/?p=27949 

    原文出处:拓端数据部落公众号

    作者:Youming Zhang 

    随着互联网经济的迅猛发展,个人信贷规模在近年来呈现了爆炸式增长。信用风险 管控一直是金融机构研究的热点问题。信贷违约预测目标包括两个方面。其一是为了使 债务人通过模型来进行财务方面良性的决策。其二是债权人可以通过模型预测贷款人是 否会贷款后陷入财务方面的困境。我们以 LendingClub 信贷平台上的数据作为信贷数 据样本,构造一个经典的传统信贷申请评分卡模型和随机森林预测模型帮助我们决策是否放贷。其中数据集24万条数据,59个特征。

    解决方案

    任务/目标

    根据申请贷款人的各项指标数据,我们通过机器学习算法解决放贷与不放贷的二分类问题。

    数据源准备

    在着手处理数据之前,我们先了解一下基本的数据情况,为接下来的数据预处理, 特征工程和建模做准备。首先我们明确目标特征为 loan_status,原数据集中 fully paid 表示贷款完全结清,charged off 表示坏账注销。为了后期运用逻辑回归算法的方便,我们直接将其转换成数值变量,用 1 来表示违约,0 表示正常偿还。

    数据探索

    因为我们使用的算法为基于逻辑回归的评分卡和随机森林模型,特征之间的线性相关性会对模型建立的环节有所影响,所以利用热力图展示一下特征之间的相关性。

    图中颜色越浅的部分,对应两两元素的相关性越强。我们在预处理和特征工程步骤对其需要着重处理。

    数据预处理

    对于缺失值,我们选择删除缺失值超过80%的特征,没有超过阈值的用众数补充。对于同值性变量,我们选择将大于95%的变量删除。因为异常值不多,所以那一行数据选择直接删除。由下图可以看出这是一个不平衡样本。

    我们使用Smote上采样算法,使其平衡。

    最后我们将数值型特征emp_length,home_ownership,verification_status,term,addr_state,purpose进行LabelEncoder编码。

    特征工程

    我们知道特征之间存在共线性,利用VIF和COR两个系数筛选,我们得到新的热力图如下。可见共线性情况有很好的改善。

    接着对特征进行最大IV值分箱,同时删除IV值较小的特征。最后得到部分连续特征的分箱结果如下。

    将分箱结果WOE化,这样可以得知分箱之间的实质性间隔距离。

    划分训练集和测试集

    我们使用 sklearn 中算法将数据集进行划分,训练集用来模型的拟合.验证集用来回归调参数,测试集用来测试模型的预测能力。

    建模
    简化评分卡模型

    此处的创新点在于简化评分卡模型思想的构建,我们简化的部分在于不去生成评分卡,而是利用评分卡模型中对特征进行WOE变换的一个核心思想,将它和逻辑回归模型相结合,从而得到一个简化评分卡模型。

    特征处理的方式有很多,我们选择WOE变换,这是因为WOE变换后的变量和逻辑回归线性表达式成单调关系,这样更加好的衡量组与组之间的数量联系。

    随机森林

    用随机的方式建立一个森林,森林由很多决策树组成,随机森林的每一棵决策树之间是没有关联的。在得到森林之后,当有一个新的输入样本进入的时候,就让森林中的每一棵决策树分别进行一下判断,看看这个样本应该属于哪一类(对于分类算法),然后看看哪一类被选择最多,就预测这个样本为那一类。

    简化评分卡

    我们将分箱得到的每个特征 woe 值替代数据集中特征本身的值。并用逻辑回归模型 进行分类,得到的模型结果准确率达到了 0.7 以上,AUC = 0.78,ks=0.41 说明模型预测 能力强。同时我们在验证集上实现了学习曲线,发现并没有显著提升模型的准确率,在 十次调用后只将准确率提升了 0.02。

    随机森林

    随机森林是以决策树为弱学习模型通过 bagging 方法构造出的强学习模型。它能容 纳更多的信息,同时通过多模型的投票很好的避免了过拟合的影响。这一模型作为评分 卡的参考。我们用 n 表示底层决策树的个数,一般来说,树的个数越多,模型的稳定性 越强,但对计算性能也有很高的要求。在这里我们构建的树的个数为 41 棵,得到模型 的结果准确率达到了 90.9%,AUC 达到了 0.93,ks 达到了 0.82,分类结果非常好。

    关于作者

    在此对Youming Zhang对本文所作的贡献表示诚挚感谢,他擅长机器学习、特征工程、数据预处理。


     

     

    最受欢迎的见解

    1.PYTHON用户流失数据挖掘:建立逻辑回归、XGBOOST、随机森林、决策树、支持向量机、朴素贝叶斯模型和KMEANS聚类用户画像

    2.R语言基于树的方法:决策树,随机森林

    3.python中使用scikit-learn和pandas决策树

    4.机器学习:在SAS中运行随机森林数据分析报告

    5.R语言用随机森林和文本挖掘提高航空公司客户满意度

    6.机器学习助推快时尚精准销售时间序列

    7.用机器学习识别不断变化的股市状况——隐马尔可夫模型的应用

    8.python机器学习:推荐系统实现(以矩阵分解来协同过滤)

    9.python中用pytorch机器学习分类预测银行客户流失

  • 相关阅读:
    03、自定义镜像上传阿里云
    线代9讲 第6讲
    SpringCloud 微服务注册中心 Eureka - Client
    【网络安全 --- kali2022安装】kali2022 超详细的安装教程(提供镜像)
    Rust的面向对象特性
    [C++ 网络协议] 套接字和标准I/O
    【深入浅出 Yarn 架构与实现】6-2 NodeManager 状态机管理
    web网页设计期末课程大作业——汉中印象旅游景点介绍网页设计与实现19页面HTML+CSS+JavaScript
    Hive sql中条件写在on和where的区别
    自动化测试框架Pytest(二)——前后置处理
  • 原文地址:https://blog.csdn.net/qq_19600291/article/details/126012698
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号