深度学习给人工智能诸多领域,比如计算机视觉(CV)、自然语言处理(NLP)等技术方向带来了巨大的突破和创新,大幅提升了相关模型的预测准确率,为技术应用带来了质变与飞跃,这也是深度学习能在近五年来备受行业关注的原因。
相比机器学习,深度学习的独特之处,就是不再需要前置操作大量特征工程,亦不再需要受制于数据和特征的样本质量,减轻了对深度专家知识的依赖,拓展了模型训练方式的更多可能性。
深度学习通过神经网络自动组合生成特征,模型学习能力强,可以自动完成传统机器学习特征工程的任务步骤,且抽取信息更加全面,因此,在进行百万级以上大规模数据集训练,或进行以图像、语言等难以特征工程化的样本训练时,采用深度学习方法训练模型会比采用机器学习方法有更大的优势。
在如今金融风控实践中,虽然该行业大部分数据都是与“时间”维度关联较强的行为序列数据,主流上通常采取机器学习方法训练模型,但我们也希望能在特征工程部分借鉴深度学习的理论方法,通过神经网络提取更有效的时间序列特征,从而进一步提升相关模型的性能表现。
因此,本篇博客将以埋点数据的数据挖掘需求为例,比对通过传统特征工程以及基于LSTM结构的循环神经网络特征提取方法的差异和各自优势,以期能探寻深度学习和机器学习在数据挖掘方面有效的融合机制,提升互联网金融风控实践中数据挖掘、模型训练的效率和质量。
实验简介
一、提取“埋点数据”
埋点数据是通过“埋点”方式采集到的数据,通常收集自终端用户的操作行为。当用户行为满足某种预设条件是,比如“点击了某个按钮”“进入了某个页面”,则自动触发“埋点”,相关数据则被采集、存储。经过大数据处理后的埋点数据具有广泛的商业洞察价值,在互联网金融或信贷场景的应用中,相关埋点数据可以用来进行用户画像、行为分析、驱动运营营销决策、驱动互联网金融或信贷产品推荐机制、驱动风险识别,是分析用户信用、欺诈风险等需求的重要表征数据,且与相关需求的第三方数据库能提供的数据类型完全异构。但是,埋点数据通常采集不稳定,数据量大,具有一定特征工程实施难度。
在此次比对实验中,我们根据贷前、贷中不同业务应用场景,提取了用户借款前或授信前30天的所有埋点数据。
经过初步的数据清洗,此次比对实验建模样本中,每个用户采集到的埋点数据数量均值为288个,排序之后,95分位数数值在669,99分位数数值在1074,最终每个样本取样数据1000条(98.7分位数),超出1000条之后的数据,在前1000条处截断选取。
比对试验埋点数据采集选取的四个原始字段如下(表一):
页面进入时间timestpenter |
当前页面名称curpage |
埋点名称markname |
埋点类型marktype |
2019-11-30 14:11:23.755 |
home_pv |
home_repay_click |
click(点击) |
2019-11-30 14:05:21.012 |
home_pv |
home_pv |
pv(页面) |
2019-11-30 14:04:21.012 |
accelerateTask_pv |
verifyCode_input |
focus(获取焦点) |
2019-11-30 14:02:21.012 |
accelerateTask_pv |
verifyCode_input |
blur(失去焦点) |
2019-11-30 14:01:21.012 |
accelerateTask_pv |
sign_contract_fail |
event(事件) |
△ 表一:实验埋点数据原始字段
二、特征工程挖掘pv数据特征
- 特征采集
按1天、7天、30天的时间周期,对用户pv进行汇总统计,计算出该用户每个pv发生的次数(cnt)、最大时长(max)、最小时长(min)、平均时长(avg)、总时长(sum)。
- 特征构建
衍生特征变量数 = pv个数×5×3。
- 特征筛选
随后,可按照特征重要性、业务需求[1]与稳定性筛选,选择psi值较低,页面长期稳定的n个pv,每个pv提取15维特征,对应生成的总特征维数则为n*15,n 代表pv类型选取不超过20个,特征总维数控制在300以下。
pv |
desc |
Psi值比较 |
业务变化 |
home_pv |
首页 |
很低 |
|
ocr_pv |
OCR二要素验证页 |
很低 |
|
credit_pv |
授信页 |
低 |
|
loan_pv |
借款页 |
很低 |
|
card_pv |
绑定银行卡页 |
很低 |
|
repayplan_pv |
还款计划页 |
很低 |
|
transferbank_pv |
转入银行卡页 |
很低 |
|
paycode_pv |
设置支付密码页 |
高 |
是非必须的页面,可能会有调整,可能是一年1-2次 |
newUserIntroduce_pv |
页面-新手介绍页 |
很低 |
是非必须的页面,可能会有调整,可能是一年1-2次 |
mine_pv |
页面-我的主页 |
很低 |
|
△ PV列表
三、深度学习方法生成pv特征
网页埋点数据数量类型巨大,包括了pv、blur、focus、event、click等多种类型,拟采用LSTM结构的循环神经网络等方式进行端到端的建模,将用户的点击操作行为与用户贷后还款表现进行关联,拟从中提取有效的时序特征。
- 数据预处理
原始埋点继续使用表一字段采集的数据,以下为数据预处理后序列格式:
与上一个事件间隔时间browse_duration |
当前页面名称Curpage |
埋点名称markname |
埋点类型marktype |
1 |
1 |
5 |
0(页面) |
6 |
1 |
22 |
1(点击) |
2 |
33 |
156 |
2(获取焦点) |
0 |
33 |
200 |
4(事件) |
1 |
33 |
556 |
3(失去焦点) |
△ 表三:深度学习数据预处理后序列格式
- 输入数据格式
每个用户的行为采用1000条四维时间序列表征数据,不足固定条数,则补为0,生成input_shape=[n, 1000, 4]的矩阵。
- 输出数据格式
以用户贷款是否逾期的表现作为label预测,output_shape=[n, 1]
- 执行算法
网络结构,双层lstm,加入LayerNormalization归一化,加速收敛;loss采用focal-loss,能够提升对表征不足样本的学习能力。
实验结果
使用深度学习的LSTM结构循环神经网络提取的时间序列特征,效果较传统特征工程方法分时间窗口切片生成统计类型的时序特征,AUC值提升约0.02(0.63->0.65)。实验表明,循环神经网络等深度学习方式能有效提取时间序列相关的特征,对于金融行业应用时间中的时间序列数据挖掘有较好的表现,能和传统特征工程形成有效的互补。
[1] 备注:按照业务筛选:不同渠道、不同阶段,页面特征不同,按业务筛选前需与相关产品负责人确认,尽量选取目前业务在用并长期稳定的页面,非PV类特征数据一般事件太多,只能根据业务经验,设计类如点击次数、时间间隔等类型的特征。
[2] 表三中browse_duration列时间由表一中的timestpenter列生成,为上一事件到当前事件的间隔时间。curpage、markname、marktype列直接使用LabelEncoder映射成数字。