1 前言

前一阵子总结了下自己参加的信贷违约风险预测比赛的数据处理和建模的流程,发现自己对业务上的特征工程认识尚浅,凑巧在Kaggle上曾经也有一个金融风控领域——房贷违约风控的比赛,里面有许多大神分享了他们的特征工程方法,细看下来有不少值得参考和借鉴的地方。

2 赛题和数据简介

这个比赛也是经典的监督学习中的二分类问题,需要我们根据用户的申请信息,征信信息(Bureau)以及用户在该机构的信用历史等信息,预测申请人贷款违约的概率。由于赛题是做贷前预测,所以需要找的特征主要是挖掘客户是否存在欺诈,对于非欺诈用户,他们是否有能力还款、

数据表关系图

赛题的数据分布在几张表里,需要我们做适当的表连接操作:

  • 申请表:贷款申请信息,主表,一行代表一个贷款申请id。

  • 征信(Bureau)余额表: Bureau信用记录,每行是一个申请用户的月度数据,一个id最多有近96个月的记录

  • 申请历史表: 同一用户的历史贷款申请信息,额度,期限,利率,是否审批通过等

  • 还款记录表: 同一用户的历史还款行为记录。

  • 信用卡余额记录表: 持有信用卡的用户的信用卡消费行为记录数据。

3 特征工程

特征工程的主要思路是尽可能多地构造大量特征,再利用特征筛选指标或是模型减少特征数量。

自动化的数据工程这一步,有些选手几乎完全依赖自动特征工程,例如构造polynomial features,有些利用开源的数据工程包如Featuretools。

3.1 近期特征

有时数据中的时间信息为时间戳,我们可以手工将其转换成数值信息,如计算最近一次使用信用卡的时间,上一次联系时间,上次逾期时间等。

3.2 统计特征

一个申请id会对应拉取其申请人的征信(Bureau Credit)数据和信用卡使用数据,一个申请id在其他表中对应多行记录。对于这部分变量,往往会考虑构造统计性特征,如均值,最大/最小值,合计值,频次等等。

def agg_numeric(df, group_var, df_name):"""Aggregates the numeric values in a dataframe. This canbe used to create features for each instance of the grouping variable."""# Remove id variables other than grouping variablefor col in df:if col != group_var and 'SK_ID' in col:df = df.drop(columns = col)group_ids = df[group_var]numeric_df = df.select_dtypes('number')numeric_df[group_var] = group_ids# Group by the specified variable and calculate the statisticsagg = numeric_df.groupby(group_var).agg(['count', 'mean', 'max', 'min', 'sum']).reset_index()# Need to create new column namescolumns = [group_var]# Iterate through the variables namesfor var in agg.columns.levels[0]:# Skip the grouping variableif var != group_var:# Iterate through the stat namesfor stat in agg.columns.levels[1][:-1]:# Make a new column name for the variable and statcolumns.append('%s_%s_%s' % (df_name, var, stat))agg.columns = columnsreturn agg

3.3 时序特征

在不同的时间窗口计算时序特征往往能帮助识别异常的用户消费行为。常见的时序特征有:

  • 最大值-最小值

  • 当前值/N月均值

  • N月内持续升高/降低

  • 最大连续上升/下降月份数

例如如果一个用户在本月消费金额远高于过去12个月内的月均消费金额,可能说明客户在恶意透支信用额度或者盗刷,用户的风险应提高。

3.4 特征筛选

根据特征选择的形式,可分为三大类:

  • Filter(过滤法):按照发散性或相关性对各个特征进行评分,设定阈值或者待选择特征的个数进行筛选,常见的指标有pearson相关系数,卡方验证,互信息等。

  • Wrapper(包装法):根据目标函数(往往是预测效果评分),每次选择若干特征,或者排除若干特征,常见如递归特征消除法。

  • Embedded(嵌入法):先使用某些机器学习的模型(常见用树模型)进行训练,得到各个特征的权值系数,根据系数从大到小选择特征(类似于Filter,只不过系数是通过训练得来的)。

为了保证模型的可解释性,例如PCA对特征做变换的特征降维方法一般不用于风控建模中。多数特征筛选方法是先用filter法移除共线特征,然后利用嵌入法计算特征重要性对进行排序。

在 Introduction to Feature Selection 中,作者最终从1465个变量中筛选342个变量放入LightGBM模型中,测试集AUC仅从0.783降低到0.782,未经过特征工程的LightGBM模型baseline为0.735。

4 小结

Kaggle 大神们的特征工程思路后,最大的感受是工程量很大。一些公司会选择直接将特征扩展的步骤合并在数据仓库的ETL中,从而降低建模的周期和成本。对于个人来说,了解数据仓库中的ETL过程,或许是提高业务认知的手段之一。

金融风控特征工程小结相关推荐

  1. 金融风控 特征构造(有点多!!!)

    3 特征构造 学习目标 知道未来信息的概念,及处理未来信息的方法 掌握从原始数据构造出新特征的方法 掌握特征变换的方法 掌握缺失值处理的方法 1 数据准备 1.1 梳理数据的内在逻辑 关系种类 一对一 ...

  2. 金融风控实战——特征工程上

    特征工程 业务建模流程 将业务抽象为分类or回归问题 定义标签,得到y 选取合适的样本,并匹配出全部的信息作为特征来源 特征工程+模型训练+模型评价与调优(相互之间可能会有交互) 输出模型报告 上线与 ...

  3. 金融风控--申请评分卡模型--特征工程(特征分箱,WOE编码) 标签: 金融特征分箱-WOE编码 2017-07-16 21:26 4086人阅读 评论(2) 收藏 举报 分类: 金融风

    金融风控-->申请评分卡模型-->特征工程(特征分箱,WOE编码) 标签: 金融特征分箱-WOE编码 2017-07-16 21:26 4086人阅读 评论(2) 收藏 举报 分类: 金融 ...

  4. 【算法竞赛学习】金融风控之贷款违约预测-特征工程

    Task3 特征工程 此部分为零基础入门金融风控的 Task3 特征工程部分,带你来了解各种特征工程以及分析方法,欢迎大家后续多多交流. 赛题:零基础入门数据挖掘 - 零基础入门金融风控之贷款违约 项 ...

  5. 数据竞赛入门-金融风控(贷款违约预测)三、特征工程

    前言 本次活动为datawhale与天池联合举办,为金融风控之贷款违约预测挑战赛(入门) 比赛地址:https://tianchi.aliyun.com/competition/entrance/53 ...

  6. 金融风控-贷款违约预测学习笔记(Part3:特征工程)

    金融风控-贷款违约预测学习笔记(Part3:特征工程) 1.特征预处理 1.1 处理类别型特征和数值型特征 1.2 缺失值填充 1.3 时间格式处理 1.4 将对象类型特征转换到数值 1.5 类别特征 ...

  7. 数据挖掘实践(金融风控-贷款违约预测)(三):特征工程

    数据挖掘实践(金融风控-贷款违约预测)(三):特征工程 目录 数据挖掘实践(金融风控-贷款违约预测)(三):特征工程 1.引言 2.特征预处理 2.1缺失值填充 2.2时间格式处理 2.3类别特征处理 ...

  8. DataScience:基于GiveMeSomeCredit数据集利用特征工程处理、逻辑回归LoR算法实现构建风控中的金融评分卡模型

    DataScience:基于GiveMeSomeCredit数据集利用特征工程处理.逻辑回归LoR算法实现构建风控中的金融评分卡模型 目录 基于GiveMeSomeCredit数据集利用特征工程处理. ...

  9. 金融风控实战——Hive详解(数据读取、预处理、特征工程)

    大数据技术介绍 大数据技术的介绍:   1.存储,我们需要了解在大数据的架构下,数据大致是怎么进行存储的,传统的文件系统是单机的,不能横跨不同的机器.HDFS(Hadoop Distributed F ...

最新文章

  1. java sdcard path_更改 android 文件存放目录 getWritablePath() 为sdCard
  2. 一个css和js结合的下拉菜单,支持主流浏览器
  3. Java 连接数据库 JDBCUtil
  4. c++ static 关键字用法
  5. container常见操作
  6. vs2015+opencv+qt打包exe的问题
  7. 注册.NET Framework
  8. 面试官:Spring MVC的处理流程是怎样的?
  9. Python 开源电子书资源
  10. 通向架构师的道路(第十四天)Axis2 Web Service安全之rampart
  11. sql server 2005 链接服务器:未将服务器 配置为用于 RPC
  12. hibernate 入门案例
  13. 苹果绕id工具_绕ID教程(iOS13.313.3.1)
  14. vgg19-dcbb9e9d.pth文件网盘下载
  15. 寻宝,大冒险!CSP202206-2
  16. suse linux 10 下载,SUSE Linux 10下载
  17. qt中xxx.pro:64: error: Extra characters after test expression.
  18. css里给文字加下划线代码,css给文字加下划线
  19. 网络攻击肆虐-给你的网络设备来套防弹衣吧!
  20. 什么护眼灯对眼睛好?2022护眼灯315合格产品

热门文章

  1. 深信服防火墙SNMP开启步骤
  2. NO converter for [xxxx] with preset Content-Type ‘null‘问题解决方法
  3. Linux 系统命令及其使用详解(大全)
  4. Ubuntu下新建文件和文件夹命令
  5. 香蕉云APP,2016下半年开发日记
  6. matlab 广义特征,特征值 特征向量 广义特征值 matlab
  7. 异步电动机matlab仿真实验报告,实验五, 三相异步电动机的MATLAB仿真
  8. 颤抖吧!00后已经开始爆肝写游戏赚钱了!
  9. 四川师范大学计算机学院冯林,李晓宁(四川师范大学计算机科学学院副教授)_百度百科...
  10. u盘启动linux只有光标闪烁,deepin官方论坛-深度科技官网旗下网站