文章目录

  • 一、赛题理解
  • 二、常用评估指标
    • 2.1 分类算法常用评价标准
    • 2.2 金融风控常用评价指标
  • 三、代码示例

一、赛题理解

赛题以预测用户贷款是否违约为任务,数据集报名后可见并可下载,该数据来自某信贷平台的贷款记录,总数据量超过120w,包含47列变量信息,其中15列为匿名变量。为了保证比赛的公平性,将会从中抽取80万条作为训练集,20万条作为测试集A,20万条作为测试集B,同时会对employmentTitlepurposepostCodetitle等信息进行脱敏。

字段表

Field Description
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的概率,也就是y为1的概率。评价方法为AUC评估模型效果(越大越好)。AUC(Area Under Curve)被定义为 ROC曲线 下与坐标轴围成的面积。

二、常用评估指标

2.1 分类算法常用评价标准

混沌矩阵(Confuse Matrix)

类别 描述
真正类(True Positive, TP) 实际分类为正类,且预测分类为正类
假正类(False Positive, FP) 实际分类为负类,但预测分类为正类
真负类(True Negative, TN) 实际分类为负类,且预测分类为负类
假负类(False Negative, FN) 实际分类为正类,但预测分类为负类

简易理解准确率、精确率和召回率。

类别 描述
准确率 对角线/整体
精确率 TP/整行
召回率 TP/整列

准确率(Accuracy)
准确率是评价的一个常用指标,但不适用于样本不均衡的情况。
Accuracy=TP+TNTP+TN+FP+FNAccuracy = \frac{{TP + TN}}{{TP + TN + FP + FN}}Accuracy=TP+TN+FP+FNTP+TN​

精确率(Precision)
又称为查准率,计算正确预测为正样本(TP)占预测为正样本(TP+NP)的百分比。
Precision=TPTP+FPPrecision = \frac{{TP}}{{TP + FP }}Precision=TP+FPTP​

召回率(Recall)
又称为查全率,计算正确预测我正样本(TP)占真实为正样本(TP+FN)的百分比。
Recall=TPTP+FNRecall = \frac{{TP}}{{TP + FN }}Recall=TP+FNTP​

F1-Score
精确率和召回率是相互影响的,两者成反比例,如果需要兼顾两者,则采用F1-Score评价标准。
F1−Score=21Precision+1RecallF1 - Score = \frac{2}{{\frac{1}{{Precision}} + \frac{1}{{Recall}}}}F1−Score=Precision1​+Recall1​2​

P-R曲线(Presicion-Recall Curve)
P-R曲线是描述精确度和召回率相互影响变化的曲线。

ROC(Receiver Operating Characteristic)
ROC空间将假正例率(False Positive Rate, FPR)定义为X轴,真正例率(True Positive Rate, TPR)定义为Y轴。
TPR:在所有实际为正类的样本中,被正确判断为正类的比率(也就是Recall)。
TPR=TPTP+FNTPR = \frac{{TP}}{{TP + FN }}TPR=TP+FNTP​
FPR:在所有实际为负类的样本中,被错误判断为负类的比率。
FPR=FPFP+TNFPR = \frac{{FP}}{{FP + TN }}FPR=FP+TNFP​

  • Question:为什么计算两个比率后会得到一条曲线?
  • Answer:对于样本的预测结果是概率,而被判断为正类还是负类是根据预先设定的阈值进行判断,当去不同的阈值时,所得到的的TPR和FPR坐标也就不同,将得到的所有坐标相连,就得到了最后的ROC曲线图。

AUC(Area Under Curve)
AUC(Area Under Curve)被定义为 ROC曲线下与坐标轴围成的面积,显然这个面积的数值不会大于1。又由于ROC曲线一般都处于y=x这条直线的上方,所以AUC的取值范围在0.5和1之间。AUC越接近1.0,检测方法真实性越高;等于0.5时,则真实性最低,无应用价值。

2.2 金融风控常用评价指标

金融风控常见的评价指标包括上边提到的ROC和AUC,还有K-S曲线。
K-S曲线将真正例率和假正例率都作为纵轴,横轴则由选定的阈值来充当。


KS=max(TPR−FPR)KS = max(TPR - FPR)KS=max(TPR−FPR)
KS值代表着两条曲线的最大差值。
一般情况KS值越大,模型的区分能力越强,但是也不是越大模型效果就越好,如果KS过大,模型可能存在异常,所以当KS值过高可能需要检查模型是否过拟合。以下为KS值对应的模型情况,但此对应不是唯一的,只代表大致趋势。

  • KS值<0.2,一般认为模型没有区分能力。
  • KS值[0.2,0.3],模型具有一定区分能力,勉强可以接受
  • KS值[0.3,0.5],模型具有较强的区分能力。
  • KS值大于0.75,往往表示模型有异常

三、代码示例

数据集加载

import pandas as pd
train = pd.read_csv('train.csv')
testA = pd.read_csv('testA.csv')
print('Train data shape:',train.shape)
print('TestA data shape:',testA.shape)
Train data shape: (800000, 47)
TestA data shape: (200000, 48)
train.head()
id loanAmnt term interestRate installment grade subGrade employmentTitle employmentLength homeOwnership ... n5 n6 n7 n8 n9 n10 n11 n12 n13 n14
0 0 35000.0 5 19.52 917.97 E E2 320.0 2 years 2 ... 9.0 8.0 4.0 12.0 2.0 7.0 0.0 0.0 0.0 2.0
1 1 18000.0 5 18.49 461.90 D D2 219843.0 5 years 0 ... NaN NaN NaN NaN NaN 13.0 NaN NaN NaN NaN
2 2 12000.0 5 16.99 298.17 D D3 31698.0 8 years 0 ... 0.0 21.0 4.0 5.0 3.0 11.0 0.0 0.0 0.0 4.0
3 3 11000.0 3 7.26 340.96 A A4 46854.0 10+ years 1 ... 16.0 4.0 7.0 21.0 6.0 9.0 0.0 0.0 0.0 1.0
4 4 3000.0 3 12.99 101.07 C C2 54.0 NaN 1 ... 4.0 9.0 10.0 15.0 7.0 12.0 0.0 0.0 0.0 4.0

5 rows × 47 columns

混沌矩阵

import numpy as np
from sklearn.metrics import confusion_matrixy_pred = [0,1,0]
y_true = [0,0,1]
matrix = confusion_matrix(y_true,y_pred)
print('混沌矩阵:\n',matrix)
混沌矩阵:[[1 1][1 0]]

准确率

from sklearn.metrics import accuracy_score
y_pred = [0,1,0,1]
y_true = [0,1,1,0]
print('ACC:',accuracy_score(y_true,y_pred))
ACC: 0.5

精确率、召回率和F1-Score

from sklearn import metrics
y_pred = [0,1,0,1]
y_true = [0,1,1,0]
print('Precision:',metrics.precision_score(y_true,y_pred))
print('Recall:',metrics.recall_score(y_true,y_pred))
print('F1-Score:',metrics.f1_score(y_true,y_pred))
Precision: 0.5
Recall: 0.5
F1-Score: 0.5

P-R曲线

import matplotlib.pyplot as plt
from sklearn.metrics import precision_recall_curve
y_pred = [0,1,1,0,1,1,0,1,1,1]
y_true = [0,1,1,0,1,0,1,1,0,1]
precision,recall,thresholds = precision_recall_curve(y_true,y_pred)
plt.plot(precision,recall)
plt.show()

ROC曲线

from sklearn.metrics import roc_curve
y_pred = [0,1,1,0,1,1,0,1,1,1]
y_true = [0,1,1,0,1,0,1,1,0,1]
# 固定标签了所以只有一个点
FPR, TPR, thresholds = roc_curve(y_true,y_pred)
plt.title('ROC')
plt.plot(FPR,TPR, 'b')
plt.plot([0,1],[0,1],'r--')
plt.ylabel('TPR')
plt.xlabel('FPR')
Text(0.5,0,'FPR')

import numpy as np
from sklearn.metrics import roc_auc_score
y_true = np.array([0,0,1,1])
y_scores = np.array([0.1,0.4,0.35,0.8])
# scores为样本为真的概率
# 在画ROC曲线时阈值不断增大预测标签就会发生改变从而得到不同的FPR和TPRFPR, TPR, thresholds = roc_curve(y_true,y_scores)
plt.title('ROC')
plt.plot(FPR,TPR, 'b')
plt.plot([0,1],[0,1],'r--')
plt.ylabel('TPR')
plt.xlabel('FPR')
Text(0.5,0,'FPR')

AUC

import numpy as np
from sklearn.metrics import roc_auc_score
y_true = np.array([0,0,1,1])
y_scores = np.array([0.1,0.4,0.35,0.8])
# scores为样本为真概率
print('AUC score:',roc_auc_score(y_true, y_scores))
AUC score: 0.75

天池竞赛-金融风控-task1相关推荐

  1. 【天池】金融风控-贷款违约预测(五)—— 模型融合

    [天池]金融风控-贷款违约预测(五)-- 模型融合 前言 内容介绍 stacking\blending详解 代码示例 总结 前言 [天池]金融风控-贷款违约预测(赛题链接). 上一篇进行数据建模和模型 ...

  2. 【天池】金融风控贷款违约预测task5

    [天池]金融风控贷款违约预测task5 task5学习总结: 1)简单平均和加权平均是常用的两种比赛中模型融合的方式.其优点是快速.简单. 2)stacking在众多比赛中大杀四方,但是跑过代码的小伙 ...

  3. 【天池】金融风控数据挖掘task1

    天池金融风控数据挖掘task1 1.赛题理解 赛题以预测金融风险为任务,数据集报名后可见并可下载,该数据来自某信贷平台的贷款记录,总数据量超过120w,包含47列变量信息,其中15列为匿名变量.为了保 ...

  4. 天池比赛-金融风控贷款违约预测

    一.赛题背景 以金融风控中的个人信贷为背景,要求根据贷款申请人的数据信息预测其是否有违约的可能,以此判断是否通过此项贷款.这是一个典型的分类问题,但也涉及一些金融的业务背景知识. 二.赛题数据 赛题以 ...

  5. 新人赛《金融风控贷款违约》避坑指南!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:陶旭东,北京师范大学,Datawhale成员 一.背景介绍 本文以 ...

  6. 阿里云天池 金融风控训练营Task1 广东工业站

    Task1  赛题理解 一.学习知识点概要 本次学习先是介绍了赛题的背景和概况,题目以金融风控中的个人信贷为背景,给所给的47列特征中,根据贷款申请人的数据信息预测其是否有违约的可能,以此判断是否通过 ...

  7. 天池竞赛:金融风控-贷款违约预测

    竞赛地址:https://tianchi.aliyun.com/competition/entrance/531830/information 一.简介 1.1 赛题描述 赛题以金融风控中的个人信贷为 ...

  8. 【算法竞赛学习】金融风控之贷款违约预测-赛题理解

    Task1 赛题理解 赛题以金融风控中的个人信贷为背景,要求选手根据贷款申请人的数据信息预测其是否有违约的可能,以此判断是否通过此项贷款,这是一个典型的分类问题.通过这道赛题来引导大家了解金融风控中的 ...

  9. DataWhale天池-金融风控贷款违约预测-Task01赛题理解

    目录 一.赛题概况 二.数据集介绍 三.预测指标 理解 通过ROC曲线评估分类器 最佳阈值点选择 一.赛题概况 本次新人赛是Datawhale与天池联合发起的0基础入门系列赛事第四场 -- 零基础入门 ...

最新文章

  1. 8.Boost之unordered_set
  2. 后端用python还是php_【后端开发】2019学python还是php
  3. Unite 2018 | 浅谈伽玛和线性颜色空间
  4. tp5 修改配置参数 view_replace_str 无效
  5. 【JZOJ3397】【luoguP4556】雨天的尾巴
  6. 如何将SAP云平台Neo环境的Subaccount注册到IAS服务里
  7. SAP Fiori应用的搜索问题
  8. 数据结构—树的基本概念与性质(思维导图)
  9. JSOI2018冬令营游记总结(迁移自洛谷博客)
  10. apt-get install
  11. lisp 读取样条曲线座标点_autolisp绘制样条曲线
  12. 聚焦 Kusama Parachain Lease Offering(PLO),Karura 先行网抢先参与
  13. linux实现文件共享的方式,Linux文件共享的实现方式
  14. Vue中如何根据svg内容显示图片
  15. 安装WSL2的踩雷历程
  16. 新手小白都看得懂得光通信知识
  17. 湖南hp服务器虚拟化解决方案,HP刀片服务器虚拟化整合解决方案.docx
  18. 晨曦记账本怎么导出明细的详细步骤
  19. iOS10从app跳转到WiFi设置界面
  20. ZCC1001E 100V 1.5A降压芯片

热门文章

  1. 数仓建模(数据模型)
  2. ajax前后端通信的头部消息之请求头与响应头
  3. Tomcat遇到500 The server encountered an internal error that prevented it from fulfilling this request
  4. 使用css实现四边形实现四角边框
  5. 直播预告 | 双十一电商风控怎么破,看这场直播就对了!
  6. 特性(Attributes)
  7. css公共样式插入音乐,【超全】常用的css公共样式
  8. 下拉推荐在 Shopee Chatbot 中的探索和实践
  9. 火影忍者的最爱:三勾玉
  10. 我要写王者荣耀类游戏的网页代码