【金融风控-贷款违约预测】task1 赛题理解篇

阿里云天池学习赛 – Datawhale学习笔记

1.赛题数据及背景

阿里云天池学习赛【金融风控-贷款违约预测】
数据集注册天池账号后可下载

1.1学习目标

  • 理解赛题数据和目标,清楚评分体系。
  • 完成相应报名,下载数据和结果提交打卡(可提交示例结果),熟悉比赛流程

1.2赛题概况

  • 比赛要求参赛选手根据给定的数据集,建立模型,预测金融风险。
  • 通过这道赛题来引导大家走进金融风控数据竞赛的世界,主要针对于于竞赛新人进行自我练习、自我提高。

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

1.3数据概况

target变量:isDefault
字段描述

1.4预测指标

  • 竞赛采用AUC作为评价指标。AUC(Area Under Curve)被定义为 ROC曲线 下与坐标轴围成的面积。
  • 这里贴一个Python计算画图示例
    AUC-Python画图
  • 常用评价指标说明与对比(干货)
    • 核儿:指标很多,理解含义的同时,关键要知道结合不同场景选择对应的评估指标!
      • 当然,要了解常用指标评估阈值

在这里插入图片描述在这里插入图片描述

1.4.1 sklearn里的常见评测指标

  • 另外sklearn.metrics 里面提供了大部分评价的方法可以直接进行预测结果的评估
    在这里插入图片描述
    在这里插入图片描述

1.5 比赛经验总结

赛题理解是开始比赛的第一步,赛题的理解有助于对竞赛全局的把握。通过赛题理解有助于对赛题的业务逻辑把握,对于后期的特征工程构建和模型选择都尤为重要。

  • 在开始比赛之前要对赛题进行充分的了解。
  • 比赛什么时候开始,什么时候结束,什么时候换B榜数据。
  • 和该比赛有没有类似的比赛可以参考借鉴。
  • 线上提交结果的次数往往是有限的,提前了解每日可以提交的次数。
  • 比赛使用的是什么评价指标,可以选择相同的评价指标作为线下验证的方式。

1.6 赛题流程

在这里插入图片描述

1.7 拓展知识——评分卡

评分卡是一张拥有分数刻度会让相应阈值的表。信用评分卡是用于用户信用的一张刻度表。以下代码是一个非标准评分卡的代码流程,用于刻画用户的信用评分。评分卡是金融风控中常用的一种对于用户信用进行刻画的手段哦!

#评分卡 不是标准评分卡
def Score(prob,P0=600,PDO=20,badrate=None,goodrate=None):
    P0 = P0
    PDO = PDO
    theta0 = badrate/goodrate
    B = PDO/np.log(2)
    A = P0 + B*np.log(2*theta0)
    score = A-B*np.log(prob/(1-prob))
    return score
  • 映射公式
    在这里插入图片描述
  • 查看评分分布
#画图--样本密度分布,图线下面积是比例
all_data3 =X_train_lgbm.copy()#用于画图分析的评分数据副本

bad=all_data3.score[all_data3.target==1]
good=all_data3.score[all_data3.target==0]
plt.figure(figsize=(7,5))
sns.distplot(bad,bins=50,hist=False,label='bad')
sns.distplot(good,bins=50,hist=False,label='good')
plt.xlabel('Score',fontdict={'fontsize':12},labelpad=10)
plt.legend(loc=0,fontsize=11)

在这里插入图片描述
• 不做woe转化的评分卡(逻辑回归和lgbm)

# 一、输出概率算分数onekey 
def score(xbeta):
    score = 1000-500*(math.log2(1-xbeta)/xbeta)  #好人的概率/坏人的概率
        score = 400-20*(np.log2(xbeta/(1-xbeta)))
    return score
evl['xbeta'] = model.predict_proba(evl_x)[:,1]   
evl['score'] = evl.apply(lambda x : score(x.xbeta) ,axis=1)

#['person_info','finance_info','credit_info','act_info']
# 二、wx+b 算分数onekey 
def score(person_info,finance_info,credit_info,act_info):
    xbeta = person_info * ( 3.49460978) + finance_info * ( 11.40051582 ) + credit_info * (2.45541981) + act_info * ( -1.68676079) --0.34484897 
    score = 650-34* (xbeta)/math.log(2)
    return score
val['score'] = val.apply(lambda x : score(x.person_info,x.finance_info,x.credit_info,x.act_info) ,axis=1)
all_data3.score.describe().to_frame().T#分数分布
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值