天池金融风控-贷款违约挑战赛 Task1 赛题理解
1. 赛题概况
该金融风控入门赛题由Datawhale和天池共同举办,比赛为学习个人赛,正式赛时间为:9月5日 - 11月12日。本次比赛以金融里的个人信贷出发,要求根据所给数据判断申贷人是否有违约的可能性,这是一个典型基于金融信用评分卡的模型也是一个典型的分类问题。此次比赛可以使我们了解金融风控中的一些业务背景以及机器学习在这个领域的一些应用。
赛题:赛题以预测用户贷款是否违约为任务,数据集报名后可见并可下载,该数据来自某信贷平台的贷款记录,总数据量超过120w,包含47列变量信息,其中15列为匿名变量。为了保证比赛的公平性,将会从中抽取80万条作为训练集,20万条作为测试集A,20万条作为测试集B,同时会对employmentTitle、purpose、postCode和title等信息进行脱敏。
2. 学习目标
- 了解该比赛的业务背景
- 了解数据集的特征
- 清楚此次赛题的评价指标即评分体系
- 了解赛题所用模型的大致原理
- 实现并看懂Baseline
3. 数据概况
- id 为贷款清单分配的唯一信用证标识
- loanAmnt 贷款金额
- term贷款期限(year)
- interestRate 贷款利率
- installment 分期付款金额
- grade 贷款等级
- subGrade贷款等级之子级
- employmentTitle就业职称
- employmentLength就业年限(年)
- homeOwnership 借款人在登记时提供的房屋所有权状况
- verificationStatus 验证状态
- annualIncome 年收入
- issueDate 贷款发放的月份
- purpose 借款人在贷款申请时的贷款用途类别
- postCode 借款人在贷款申请中提供的邮政编码的前3位数字
- regionCode 地区编码
- dti 债务收入比
- delinquency_2years 借款人过去2年信用档案中逾期30天以上的违约事件数
- ficoRangeLow 借款人在贷款发放时的fico所属的下限范围
- ficoRangeHigh 借款人在贷款发放时的fico所属的上限范围
- openAcc 借款人信用档案中未结信用额度的数量
- pubRec 贬损公共记录的数量
- pubRecBankruptcies 公开记录清除的数量
- revolBal 信贷周转余额合计
- revolUtil 循环额度利用率,或借款人使用的相对于所有可用循环信贷的信贷金额
- totalAcc 借款人信用档案中当前的信用额度总数
- initialListStatus 贷款的初始列表状态
- applicationType 表明贷款是个人申请还是与两个共同借款人的联合申请
- earliesCreditLine 借款人最早报告的信用额度开立的月份
- title 借款人提供的贷款名称
- policyCode 公开可用的策略_代码=1 新产品不公开可用的策略_代码=2
- n系列匿名特征 匿名特征n0-n14,为一些贷款人行为计数特征的处理
4. 预测指标
4.1混淆矩阵
基本的定义
- (1)若一个实例是正类,并且被预测为正类,即为真正类TP(True Positive )
- (2)若一个实例是正类,但是被预测为负类,即为假负类FN(False Negative )
- (3)若一个实例是负类,但是被预测为正类,即为假正类FP(False Positive )
- (4)若一个实例是负类,并且被预测为负类,即为真负类TN(True Negative )
用表格表示
1 (预测违约) | 0 (预测不违约) | 合计 | |
---|---|---|---|
1 (实际违约) | True Positive (TP) 正确肯定 | False Negative (FN) 漏报 | TP+FN |
0 (实际不违约) | False Positive (FP) 虚报 | True Negative (TN) 正确否定 | FP+TN |
4.2 几个准确率
-
准确率(Accuracy)
A c c u r a c y = T P + T N T P + T N + F P + F N Accuracy = \frac{TP + TN}{TP + TN + FP + FN} Accuracy=TP+TN+FP+FNTP+TN
这个准确率是一个常见指标,但是不适用于样本不均的情况。很多时候不能真正反映我们模型的准确度,所要引入其他的评价标准。 -
精准率(Precision)
P r e c i s i o n = T P T P + F P Precision = \frac{TP}{TP + FP} Precision=TP+FPTP
精准率又叫做查准率 (值和真正率、命中率又记做TPR [ True Positive Rate] 相等),其值为正确预测为正样本(TP)占预测为正样本(TP+FP)的百分比。 -
召回率(Recall)
R e c a l l = T P T P + F N Recall = \frac{TP}{TP + FN} Recall=TP+FNTP
召回率又叫查全率,其值为正确预测为正样本(TP)占正样本(TP+FN)的百分比。 -
F1 Score
F 1 − S c o r e = 2 1 P r e c i s i o n + 1 R e c a l l F1-Score = \frac{2}{\frac{1}{Precision} + \frac{1}{Recall}} F1−Score=Precision1+Recall12
精确率和召回率是相互影响的,精确率升高则召回率下降,召回率升高则精确率下降,如果需要兼顾二者,就需要精确率、召回率的结合F1 Score。 -
P-R曲线(Precision-Recall Curve)
用来描述精准率和召回率的曲线,一般精准率和召回率成反比,即当精准率高的时候召回率往往很低;当召回率很高时,精准率偏低。
往往我们在比较不同模型的好会时,往往找到”平衡点“(Break-Even Point)即精准率=召回率,基于BEP做比较。 -
真正率(True Positive Rate)
T P R = T P T P + F P TPR = \frac{TP}{TP + FP} TPR=TP+FPTP
真正率又叫命中率记作TPR,其数值等于精准率。 -
假正率(False Positive Rate)
F P R = F P F P + T N FPR = \frac{FP}{FP + TN} FPR=FP+TNFP
假正率又叫假报警率记作FPR。
一般在一个好的违约预测模型中,我们往往希望命中率尽可能的高,同时又希望假报警率尽可能的低。这两者往往成正相关性,当我们调高阈值,例如,认为违约率超过90%才认定为违约,那么会导致假报警率很高,但是此时命中率会非常低;而降低阈值,例如,认为违约概率超过10%认定为违约,那么命中率会很高,但是假报警率也会很高。为了衡量模型的好坏,这里就要引入ROC曲线和AUC值。
- ROC 曲线 (Receiver Operating Characteristic)
ROC全称是”受试者工作特征“,它以假报警率(FPR)作为横轴,命中率(TPR)作为纵轴,我们一般希望我们的模型在同一个阈值下,命中率尽可能的高而假报警率尽可能的低。这一思想反映在ROC曲线图中就是,曲线要尽可能的陡峭,曲线越靠近左上角,意味着在同一阈值的条件下,命中率越高,假报警率越低,我们的模型越完善。理论上,一个完美的模型是在不同阈值下,命中率都接近1,而假报警率都接近0。有了ROC曲线,我们想要比较不同模型的好坏,此时比较合理的方法是比较不同ROC曲线下的面积,该面积也叫做AUC(Area Under Curve)。
- AUC(Area Under Curve)
AUC(Area Under Curve) 是ROC曲线与X轴和Y轴围成的面积,ROC一般都是在直线y=x的上方,该面积的取值范围是0.5~1。通常0.5代表随机判断,1代表完美模型。在实际的运用中,因为有诸多的干扰因子,AUC值达到0.75就可以接受了,如果达到了0.85就是很棒的模型。
5. 经验总结
- 首先要先了解比赛的类型,并对赛题有初步的了解。
- Get比赛的Time line规划好比赛的时间,同时还要注意比赛数据集的A、B榜。采用A、B榜的主要原因是考察机器学习模型的泛化能力。
- 在了解赛题后,可以查阅相关的资料,去看一下该类型比赛有没有比赛或者经典的模型可以参考借鉴。
- 注意每天的提交次数是有限制的,准备好了再提交结果。
- 重点要关注比赛使用的是什么评价指标,可以选择相同的评价指标作为线下验证的方式。
- 花一定的时间去研究一下baseline,并实现baseline,提交首次结果。
- 多去相应的比赛论坛去查看一下其他大佬们提供的思路。
- 在训练模型时,最好可以去官方提供的平台运行,再或者可以白嫖一波Google的colab或者学生优惠蹭一波微软Azure。