赛题以金融风控中的个人信贷为背景,要求选手根据贷款申请人的数据信息预测其是否有违约的可能,以此判断是否通过此项贷款,这是一个典型的分类问题。通过这道赛题来引导大家了解金融风控中的一些业务背景,解决实际问题,帮助竞赛新人进行自我练习、自我提高。
赛题以预测金融风险为任务,数据集报名后可见并可下载,该数据来自某信贷平台的贷款记录,总数据量超过120w,包含47列变量信息,其中15列为匿名变量。为了保证比赛的公平性,将会从中抽取80万条作为训练集,20万条作为测试集A,20万条作为测试集B,同时会对employmentTitle、purpose、postCode和title等信息进行脱敏。
赛题以预测用户贷款是否违约为任务,数据集报名后可见并可下载,该数据来自某信贷平台的贷款记录,总数据量超过120w,包含47列变量信息,其中15列为匿名变量。为了保证比赛的公平性,将会从中抽取80万条作为训练集,20万条作为测试集A,20万条作为测试集B,同时会对employmentTitle、purpose、postCode和title等信息进行脱敏。
一般而言,对于数据在比赛界面都有对应的数据概况介绍(匿名特征除外),说明列的性质特征。了解列的性质会有助于我们对于数据的理解和后续分析。 Tip:匿名特征,就是未告知数据列所属的性质的特征列。
竞赛采用AUC作为评价指标。AUC(Area Under Curve)被定义为 ROC曲线 下与坐标轴围成的面积。
1、混淆矩阵(Confuse Matrix)
2、准确率(Accuracy)准确率是常用的一个评价指标,但是不适合样本不均衡的情况。$Accuracy = \frac{TP + TN}{TP + TN + FP + FN}$
3、精确率(Precision)又称查准率,正确预测为正样本(TP)占预测为正样本(TP+FP)的百分比。$Precision = \frac{TP}{TP + FP}$
4、召回率(Recall)又称为查全率,正确预测为正样本(TP)占正样本(TP+FN)的百分比。$Recall = \frac{TP}{TP + FN}$
5、F1 Score精确率和召回率是相互影响的,精确率升高则召回率下降,召回率升高则精确率下降,如果需要兼顾二者,就需要精确率、召回率的结合F1 Score。$F1-Score = \frac{2}{\frac{1}{Precision} + \frac{1}{Recall}}$
6、P-R曲线(Precision-Recall Curve)P-R曲线是描述精确率和召回率变化的曲线
7、ROC(Receiver Operating Characteristic)
TPR:在所有实际为正例的样本中,被正确地判断为正例之比率。$TPR = \frac{TP}{TP + FN}$FPR:在所有实际为负例的样本中,被错误地判断为正例之比率。$FPR = \frac{FP}{FP + TN}$
8、AUC(Area Under Curve)AUC(Area Under Curve)被定义为 ROC曲线 下与坐标轴围成的面积,显然这个面积的数值不会大于1。又由于ROC曲线一般都处于y=x这条直线的上方,所以AUC的取值范围在0.5和1之间。AUC越接近1.0,检测方法真实性越高;等于0.5时,则真实性最低,无应用价值。
1、KS(Kolmogorov-Smirnov)KS统计量由两位苏联数学家A.N. Kolmogorov和N.V. Smirnov提出。在风控中,KS常用于评估模型区分度。区分度越大,说明模型的风险排序能力(ranking ability)越强。K-S曲线与ROC曲线类似,不同在于
2、ROC
3、AUC
本部分为对于数据读取和指标评价的示例。
评分卡是一张拥有分数刻度会让相应阈值的表。信用评分卡是用于用户信用的一张刻度表。以下代码是一个非标准评分卡的代码流程,用于刻画用户的信用评分。评分卡是金融风控中常用的一种对于用户信用进行刻画的手段哦!
目的:
2.了解变量间的相互关系、变量与预测值之间的存在关系。
3.为特征工程做准备
以上库都是pip install 安装就好,如果本机有python2,python3两个python环境傻傻分不清哪个的话,可以pip3 install 。或者直接在notebook中'!pip3 install ****'安装。
查看一下具体的列名,赛题理解部分已经给出具体的特征含义,这里方便阅读再给一下:
通过info()来熟悉数据类型
总体粗略的查看数据集各个特征的一些基本统计量
查看缺失值
上面得到训练集有22列特征有缺失值,进一步查看缺失特征中缺失率大于50%的特征
具体的查看缺失特征及缺失率
Tips:比赛大杀器lgb模型可以自动处理缺失值,Task4模型会具体学习模型了解模型哦!
查看训练集测试集中特征属性只有一值的特征
47列数据中有22列都缺少数据,这在现实世界中很正常。‘policyCode’具有一个唯一值(或全部缺失)。有很多连续变量和一些分类变量。
数据探索性分析是我们初步了解数据,熟悉数据为特征工程做准备的阶段,甚至很多时候EDA阶段提取出来的特征可以直接当作规则来用。可见EDA的重要性,这个阶段的主要工作还是借助于各个简单的统计量来对数据整体的了解,分析各个类型变量相互之间的关系,以及用合适的图形可视化出来直观观察。希望本节内容能给初学者带来帮助,更期待各位学习者对其中的不足提出建议。
首先我们查找出数据中的对象特征和数值特征
在比赛中数据预处理是必不可少的一部分,对于缺失值的填充往往会影响比赛的结果,在比赛中不妨尝试多种填充然后比较结果选择结果最优的一种;比赛数据相比真实场景的数据相对要“干净”一些,但是还是会有一定的“脏”数据存在,清洗一些异常值往往会获得意想不到的效果。
把所有缺失值替换为指定的值0
向用缺失值上面的值替换缺失值
纵向用缺失值下面的值替换缺失值,且设置最多只填充两个连续的缺失值
像等级这种类别特征,是有优先级的可以labelencode或者自映射
在统计学中,如果一个数据分布近似正态,那么大约 68% 的数据值会在均值的一个标准差范围内,大约 95% 会在两个标准差范围内,大约 99.7% 会在三个标准差范围内。
特征分箱的目的:
数据分桶的对象:
分箱的原因:
分箱的优点:
特别要注意一下分箱的基本原则:
当数值横跨多个数量级时,最好按照 10 的幂(或任何常数的幂)来进行分组:09、1099、100999、10009999,等等。固定宽度分箱非常容易计算,但如果计数值中有比较大的缺口,就会产生很多没有任何数据的空箱子。
这里给出一些特征交互的思路,但特征和特征间的交互衍生出新的特征还远远不止于此,抛砖引玉,希望大家多多探索。请学习者尝试其他的特征交互方法。
特征选择的方法:
方差选择法
卡方检验
互信息法
特征工程是机器学习,甚至是深度学习中最为重要的一部分,在实际应用中往往也是所花费时间最多的一步。各种算法书中对特征工程部分的讲解往往少得可怜,因为特征工程和具体的数据结合的太紧密,很难系统地覆盖所有场景。本章主要是通过一些常用的方法来做介绍,例如缺失值异常值的处理方法详细对任何数据集来说都是适用的。但对于分箱等操作本章给出了具体的几种思路,需要读者自己探索。在特征工程中比赛和具体的应用还是有所不同的,在实际的金融风控评分卡制作过程中,由于强调特征的可解释性,特征分箱尤其重要。