Task1 赛题理解
Tip:本次新人赛是Datawhale与天池联合发起的0基础入门系列赛事第四场 —— 零基础入门金融风控之贷款违约预测挑战赛。 赛题以金融风控中的个人信贷为背景,要求选手根据贷款申请人的数据信息预测其是否有违约的可能,以此判断是否通过此项贷款,这是一个典型的分类问题。通过这道赛题来引导大家了解金融风控中的一些业务背景,解决实际问题,帮助竞赛新人进行自我练习、自我提高。
项目地址:https://github.com/datawhalechina/team-learning-data-mining/tree/master/FinancialRiskControl
比赛地址:https://tianchi.aliyun.com/competition/entrance/531830/introduction
我们把官方提供的数据下载到本地:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xzTiX45C-1600104718323)(data_download.png)]
1.1 学习目标
理解赛题数据和目标,清楚评分体系。
完成相应报名,下载数据和结果提交打卡(可提交示例结果),熟悉比赛流程
1.2 了解赛题
- 赛题概况
- 数据概况
- 预测指标
- 分析赛题
1.2.1 赛题概况
比赛要求参赛选手根据给定的数据集,建立模型,预测金融风险。
赛题以预测金融风险为任务,数据集报名后可见并可下载,该数据来自某信贷平台的贷款记录,总数据量超过120w,包含47列变量信息,其中15列为匿名变量。为了保证比赛的公平性,将会从中抽取80万条作为训练集,20万条作为测试集A,20万条作为测试集B,同时会对employmentTitle、purpose、postCode和title等信息进行脱敏。
通过这道赛题来引导大家走进金融风控数据竞赛的世界,主要针对于于竞赛新人进行自我练习、自我提高。
导入部分数据,先大概查看数据结构组成
import numpy as np
import pandas as pd
data1 = pd.read_csv("testA.csv")
data1.head()
id | loanAmnt | term | interestRate | installment | grade | subGrade | employmentTitle | employmentLength | homeOwnership | ... | n5 | n6 | n7 | n8 | n9 | n10 | n11 | n12 | n13 | n14 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 800000 | 14000.0 | 3 | 10.99 | 458.28 | B | B3 | 7027.0 | 10+ years | 0 | ... | 8.0 | 4.0 | 15.0 | 19.0 | 6.0 | 17.0 | 0.0 | 0.0 | 1.0 | 3.0 |
1 | 800001 | 20000.0 | 5 | 14.65 | 472.14 | C | C5 | 60426.0 | 10+ years | 0 | ... | 1.0 | 3.0 | 3.0 | 9.0 | 3.0 | 5.0 | 0.0 | 0.0 | 2.0 | 2.0 |
2 | 800002 | 12000.0 | 3 | 19.99 | 445.91 | D | D4 | 23547.0 | 2 years | 1 | ... | 1.0 | 36.0 | 5.0 | 6.0 | 4.0 | 12.0 | 0.0 | 0.0 | 0.0 | 7.0 |
3 | 800003 | 17500.0 | 5 | 14.31 | 410.02 | C | C4 | 636.0 | 4 years | 0 | ... | 7.0 | 2.0 | 8.0 | 14.0 | 2.0 | 10.0 | 0.0 | 0.0 | 0.0 | 3.0 |
4 | 800004 | 35000.0 | 3 | 17.09 | 1249.42 | D | D1 | 368446.0 | < 1 year | 1 | ... | 11.0 | 3.0 | 16.0 | 18.0 | 11.0 | 19.0 | 0.0 | 0.0 | 0.0 | 1.0 |
5 rows × 48 columns
len(data1)
200000
data1.iloc[0]
id 800000
loanAmnt 14000
term 3
interestRate 10.99
installment 458.28
grade B
subGrade B3
employmentTitle 7027
employmentLength 10+ years
homeOwnership 0
annualIncome 80000
verificationStatus 0
issueDate 2014-07-01
purpose 0
postCode 163
regionCode 21
dti 10.56
delinquency_2years 1
ficoRangeLow 715
ficoRangeHigh 719
openAcc 17
pubRec 0
pubRecBankruptcies 0
revolBal 9846
revolUtil 30.7
totalAcc 29
initialListStatus 0
applicationType 0
earliesCreditLine Nov-1974
title 0
policyCode 1
n0 1
n1 4
n2 6
n2.1 6
n2.2 6
n2.3 6
n4 6
n5 8
n6 4
n7 15
n8 19
n9 6
n10 17
n11 0
n12 0
n13 1
n14 3
Name: 0, dtype: object
len(data1.iloc[0])
48
1.2.2 数据概况
一般而言,对于数据在比赛界面都有对应的数据概况介绍(匿名特征除外),说明列的性质特征。了解列的性质会有助于我们对于数据的理解和后续分析。 Tip:匿名特征,就是未告知数据列所属的性质的特征列。
colunm name | represent |
---|---|
-id | 为贷款清单分配的唯一信用证标识 |
loanAmnt | 贷款金额 |
term | 贷款期限(year) |
interestRate | 贷款利率 |
installment | 分期付款金额 |
grade | 贷款等级 |
subGrade | 贷款等级之子级 |
employmentTitle | 就业职称 |
employmentLength | 就业年限(年) |
homeOwnership | 借款人在登记时提供的房屋所有权状况 |
annualIncome | 年收入 |
verificationStatus | 验证状态 |
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,为一些贷款人行为计数特征的处理 |
1.2.3 预测指标
竞赛采用AUC作为评价指标。AUC(Area Under Curve)被定义为 ROC曲线 下与坐标轴围成的面积。
分类算法常见的评估指标如下:
1.混淆矩阵(Confuse Matrix)
- (1)若一个实例是正类,并且被预测为正类,即为真正类TP(True Positive )
- (2)若一个实例是正类,但是被预测为负类,即为假负类FN(False Negative )
- (3)若一个实例是负类,但是被预测为正类,即为假正类FP(False Positive )
- (4)若一个实例是负类,并且被预测为负类,即为真负类TN(True Negative )
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=