HomeCredit成立于1997年,公司总部在荷兰的阿姆斯特丹,2019年统计在职职工有11万人。捷信是一家国际消费金融提供商,业务遍及9个国家。捷信专注于向信用记录很少或没有信用记录的人提供负责任的贷款。相比传统银行的抵押贷款,捷信贷款服务简单、方便、快捷。
本集团的主要股东为私人控股国际投资集团PPF,其创始人及主要受益人为Petr Kellner,持股88.62%。
Petr Kellner(1964 年 5 月 20 日至 2021 年 3 月 27 日)是捷克亿万富翁企业家,PPF 集团的创始人和大股东(98.93%) 。
捷信官网:https://www.homecredit.net/
捷信官方描述如下
We offer our customers point-of-sale (POS) loans, cash loans and revolving loan products through our online and physical distribution network. Customers typically start with our point-of-sale financing in stores. Reliable customers can then adopt broader consumer credit products and ultimately we progress to providing fully fledged branch-based consumer lending.
作者翻译和总结一下
捷信提供商品款、现金贷和循环贷款产品。现金贷主要是线上贷款,即通过手机APP就可申请贷款,和国内借呗,微粒贷类似。商品贷走线下。
9国业务
捷信业务遍及9个国家,捷克,包括中国,印度,俄罗斯,菲律宾,哈萨克斯坦,印度尼西亚,越南,斯洛文尼亚。
业务辉煌
捷信在中国业务辉煌在2017-2019年。捷信在线下不断扩张,商品贷网点数量到近30万个,2017年捷信集团内部统计员工接近10万人。2017年末,捷信放款破1000亿元,总资产规模达879亿。捷信是中国消费金融老大哥,圈内无人不知。
假设您是一名银行家,您的工作是决定您的银行是否应该接受或拒绝贷款申请。要做出决定,您可能需要检查有关申请人的一些个人和银行数据,例如年收入、年金或优惠价格。
现在假设有122 个客户,您有每个申请人的个人和银行数据。您确定可以利用所有这些数据做出正确的决定吗?如果不能 !可以参考机器学习模型预测结果。
在这篇 3 系列文章中,我将以捷信home credit数据集为例,与您分享创建和评估模型的分步指南,以预测每个申请人偿还贷款的能力。
本主题将分为 3 篇文章
这是分解home credit捷信违约风险预测的 3 篇系列文章中的第一篇:
- 第 1 部分:探索性数据分析
- 第 2 部分:特征工程和模型训练
- 第 3 部分:模型可解释性
库导入
以下是我们将用于此用例的库:
%matplotlib inline
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
pd.set_option("display.max_rows",100)
pd.set_option("display.max_columns",None)
warnings.filterwarnings('ignore')
关于“Home Credit Default Risk”数据集
我们将使用“Home Credit Default Risk”数据集来设计我们的模型。“Home Credit Default Risk”数据集是著名的 Kaggle 数据集,提供了有关数千名贷款申请人的匿名银行和个人特征。
主表“application_train.csv”为 307511 名申请人提供了 122 个银行和个人特征。
表“HomeCredit_columns_description.csv”中给出了有关每个功能的说明
1.数据加载
让我们从加载数据集主表的数据开始。Pandas 将是我们处理结构化数据(如“Home Credit Default Risk”数据集)的最佳选择。让我们使用 read_csv 方法
pd.read_csv("./dataset/HomeCredit_columns_description.csv", encoding_errors='ignore', index_col=[0])
2. 探索性数据分析
在深入研究特征工程和机器学习模型训练之前,让我们看一下数据集。
2.1 变量类型
定量变量
定量变量是数值变量:计数、百分比或数字。当对它们应用算术运算时,这些值必须具有意义。AMT_INCOME_TOTAL、AMT_GOODS_PRICE、CNT_FAM_MEMBERS 是数据集定量变量的一些示例。
定性变量
这些都是非定量变量。它们也称为分类变量。它描述了适合类别的数据。NAME_CONTRACT_TYPE、CODE_GENDER、NAME_FAMILY_STATUS 是数据集定性变量的一些示例。
变量类型分布
可以使用 Pandas 中的饼图来可视化变量类型分布。
dataset_df.dtypes.value_counts().plot(kind="pie", shadow=True, title="Variables types distribution", figsize=(12,10), autopct="%1.1f%%")
在表中的 122 列中,106 列是数字类型,16 列是分类类型。
由于有很多列,我们将尝试对其进行总结:
SK_ID_CURR:贷款请求的标识符。
目标:我们要预测的变量。1 表示贷款遇到支付困难(根据信贷机构定义的标准),否则为 0。
申请人个人信息栏:如性别(GENDER)、年龄(DAYS_BIRTH)等
申请人家庭情况栏:婚姻状况(NAME_FAMILY_STATUS)、子女数量(CNT_FAM_MEMBERS)等
申请人资产栏:是否拥有汽车、是否拥有房屋等
申请人职业情况栏目:收入类型、工资、工作日等
贷款特征栏:贷款总额、还款额、导致贷款的房产价格
非常详细的申请者所在楼宇信息:包括电梯数量、楼层数、楼龄
行政信息:申请人是否输入了他的电话号码,输入了他的电子邮件,完成了某些文件等。
来自外部来源的分数:我们将看到我们将不得不对其列做出选择
其他不可分类的列:以前的请求数量,如果客户在他居住的同一个城市工作等
这是很多数据!
我们可以注意到,与客户所居住的建筑物有关的列填充得最少,而且它们很多。我们只想选择最相关的,如果有的话。
2.2 目标变量分布
在机器学习上下文中,“目标变量”是其值将由其他变量建模和预测的变量。它应该是机器学习模型的输出变量。对于“Home Credit Default Risk”数据集,TARGET 是目标变量。TARGET 对于所有已偿还贷款的申请人为 0,对于未偿还贷款的申请人为 1。
让我们使用饼图可视化目标变量分布。
重要提示:数据集高度不平衡。近 92% 的贷款申请人偿还了贷款。非平衡数据是风控建模的一大特点和难点。
2.3 单变量数据分析
在这里,我们将尝试了解数据集中一些相关特征的分布。“单变量”意味着我们将分别分析每个特征。
让我们分析这些直方图:我们可以注意到一些“奇怪”但不是异常值:
CNT_CHILDREN(number of children):这个变量的最大值是19,这是可能的
AMT_ANNUITY : 这个变量的最大值是 258,000$ 这确实很高但并非不可能
AMT_INCOME_TOTAL(代表客户的年收入):其最大值为117,000,000,这是巨大的但并非不可能。但我们可以想知道为什么有这样收入的人会申请贷款。
列有异常值:
DAYS_EMPLOYED(客户在申请贷款时工作的天数)。它是负数,因为它可能是日期差异的结果(工作开始的日期 - 贷款申请的日期)。因此,正值在这里是异常值(除非雇佣合同的开始日期晚于请求的日期)。我们的行数非常多,值为 365243。
我们将在数据清理期间管理这些“奇怪”的列。
2.4 双变量数据分析
“双变量”意味着我们将分析特征对之间的关系。例如,这里我们将分析目标变量与数据集的一些相关特征之间的关系。
对于数值特征,显示与目标变量的相关
性 - 负相关意味着特征增加得越多,偿还贷款的概率就越低(因此这是客户希望改进的特征)。
- 对于特征EXT_SOURCE_1、EXT_SOURCE_2、EXT_SOURCE_3以及DAYS_BIRTH,它们越高,偿还贷款的概率越低。对于分类变量:
- 女性和已婚人士比其他人更难偿还贷款。
- 拥有汽车的人更有可能偿还贷款。
- 拥有自己房屋的人更有可能不退还贷款
2.5数据缺失率
现在,让我们检查数据集中缺少多少数据。
我们可以清楚地注意到,与居住地相关的特征是缺失数据最多的特征。这是关于特征选择步骤的重要通知。
缺失值占数据集的 24.4%
3.数据清洗
3.1 异常值检测与清洗
机器学习数据集有时可能包含一些“分布外”或极端值。这意味着某些特征值高于或低于预期值。这些值称为异常值。检测和去除异常值是重要的一步,因为它有助于提高机器学习模型的性能
由于我们有很多特征,我们应该开发一个基于四分位距的自动异常值检测程序。请记住,如果特征分布是正常的,这种方法效果很好,而我们的许多特征就不是这种情况,它们往往是偏斜的。
因此,在使用四分位距方法之前,我们应用了一个变换,使我们的分布更加“正常”:
- log(x + 1) 如果特征是正偏态
- x² 如果特征是负偏态
现在,让我们使用我们的自动程序获取异常值建议
带有红色背景标题的直方图对应于异常值率非常高的特征:它们需要人工监督,以确保正常值不会被检测为异常值。
带有粉红色背景标题的直方图对应于具有合理异常值率的特征;对于这些特征,异常值通常只是分布外的值,因此我们可以用最接近的合理值替换它们。我们将在估算阶段进行管理。
绿色虚线是我们使用四分位距法得到的合理区间建议。
完成。我们用 NaN 替换了数据集中的所有异常值。这就是我们将缺失值率提高 0.14% 的原因
3.2 缺失值插补
我们现在将继续我们的数值列的插补:根据我们选择的插补策略,用一些值替换缺失值(NaN 值)。
在这里,我们将执行迭代插补(在sklearn中实现)。根据您的硬件插补可能需要几分钟现在,让我们可视化插补前后的缺失数据
出色地 !我们的插补似乎是有效的,因为我们现在的缺失值比以前少了。
我们为数值变量估算值,但是分类变量呢?在本系列的下一篇文章中,我们将在对分类变量进行编码时关注这个问题。
4. 数据保存
在结束这部分工作之前,让我们将清理后的数据集保存在 csv 文件中
结论
在 3 部分系列的第一篇文章中,我们专注于探索、分析和清理我们的数据集。孙子兵法-知人知己百战不殆。数据分析和探索是数据科学项目中非常重要的一步。它可以帮助数据科学家在创建机器学习模型之前拥有良好的数据。如果数据不佳,数据科学模型的表现会很差。这就是我们风控人的行话Garbage In Garbage Out“垃圾进垃圾出”。
在下一篇文章中,我们将准备数据集并训练机器学习模型来预测每个申请人的风险违约概率。
风控建模课程
#
《基于随机森林模型的个人信用风险评估研究》论文复现和点评就为大家介绍到这里。欢迎各位同学报名<python金融风控评分卡模型和数据分析微专业课>,课程提供专业评分卡模型,集成树模型,分类器和回归模型,描述性统计,变量选择,衍生变量,智能调参,风控业务等知识,有助于各位学员提升模型竞赛的分数。如果大家以后期望在金融行业工作,下述课程也会带来很多帮助,节省大量自我探索时间。微信二维码扫一扫收藏课程。
商务联系
#
如果你需要建模项目定制服务,例如研究生,博士生论文,企业建模需求,我们公司提供一对一机器学习模型定制服务,提供公司正规发票和合同。
商务联系QQ:231469242,微信:drug666123,或扫描下面二维码加微信咨询。
QQ学习群:1026993837,免费领取200G学习资料。