第一章 风控建模三要素
前言
自从进入智能手机时代,伴随人们生活质量的提升,消费需求也越来越大。消费不再局限于线下,取而代之的线上消费慢慢成为主流…
交易转移到线上,风险就不可避免。最典型的就是信用卡消费,每个人会根据自己的“表现”获得一个额度,人们只能在这个额度下进行消费,借款人需在截止日期之前把钱还上,否则将面临失信问题。这在建模(系列文章中的风控建模均只局限于金融领域)中就是常说的“坏客户”。
那我们为什么要进行风控建模?如果出现坏客户,之后不借给他不就可以了。但请想象一下,现在出现一群没有还款能力的人,他们借了你家银行一大笔钱,最后都还不上…所以,风控建模的目的之一就是不借给这些人钱。
本章我会解释风控模型的三大基本要素。
一、数据
从数据体量看,一个有效果的风控模型至少需要用上千级别的数据量,且随特征数量逐步上升。从数据形式看,均是表格型数据。最常用的是csv格式的数据,相比于xlsx格式,csv占用的空间小的多。
建模用到的数据有一个很明显的特点,就是坏样本会远少于好样本。挑选的时候,需要尽可能保证坏样本总量大于500。
样本示例
其中,event_name:数据所在客群
month:数据所在月份
all_cnt:数据量
catch_cnt:y标签不为空的有效数据量
catch_rate:有效数据量占比
bad_cnt:y为1(坏样本)的数量
bad_rate:y为1(坏样本)的占比,也称坏账率
这是其中一种查看数据基本信息的方式。
观察该数据不难发现,每个月的样本量都超过10000,坏账量都超过1000,故他们都可以单独作为样本。另外,如果相邻月份具有相似坏账率,可以考虑合并。
二、特征
特征可以从很多维度进行分类。
第一步,我们先把特征分为基本特征和待入模特征。基本特征不参与特征筛选,比如id,姓名,手机号,月份等,这类信息用作标识数据;待入模特征参与特征筛选,它反映用户的表现或其他能影响信用分的基本信息,比如收入,学历,最近一次是否还款,在其他机构的打分等。
基本特征和待入模特征
基本特征
sign_no:唯一标识符。
event_name:数据所在客群,用其他编码方式读来解决乱码的现象。
待入模特征
score_1-score_9:特征已进行脱敏,这里大概率是在其他机构的打分。
第二步,我们再把待入模特征分为非入模特征和入模特征。常见的筛选依据包括iv(信息价值),empty(缺失率),corr(特征相关性),PSI(稳定性)。根据这些筛选指标把合格的特征筛选出来,并最终放入模型。
入模特征
这里用empty,iv,corr来筛选特征,不同阈值,筛选出来的特征可能会有差异。
三、模型
模型的输入是Dataframe格式的数据,数据中的列只包括入模特征+y标签列。
模型的输出是模型文件,常用的库pickle输出的为.dat后缀的模型文件。
代码示例
# 训练模型
xgb_clf = xgb.XGBClassifier(**bayes_params).fit(train_df.drop(columns=target, axis=1), train_df[target],
eval_metric='auc')
with open(xgb_clf_path, 'wb') as f:
pickle.dump(xgb_clf, f)
print('模型已导出')
f.close()
xgb是本次选用的算法,之后章节会重点讲解该算法。
bayes_params是模型参数,由贝叶斯调参而得。
train_df是训练样本。
章节总结
以上就是建模三要素,也是建模的核心部分。所有行为都应该围绕核心部分展开,包括数据清洗,数据分析,特征筛选,参数优化等。
下一章开始我会深入讲解数据样本是如何挑选的。”数据决定模型上限,算法决定模型下限“,与各位建模人共勉。