深度学习给人工智能诸多领域,比如计算机视觉(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(事件) |
按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、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映射成数字。