序列预测问题曾经被认为是数据科学行业最难解决的问题之一。LSTM的出现成为了制胜法宝。拍拍贷十年积累的UBT数据为LSTM的应用提供无限可能。本文主要介绍UBT和LSTM融合,在拍拍贷魔镜风险评测系统中的实践。
UBT数据简介
UBT(User Behavior Tracking)即用户行为数据跟踪。它可以记录用户在APP上的各类行为,包括设备、网络情况,软件环境、地理位置分布、操作习惯等,非常具有挖掘价值,同时挖掘难度也很大。随着计算能力不断提高和深度学习算法的不断被推广,UBT应用越来越成为可能。我们这些数据进行诸多分析,在设计埋点数据时,主要考虑了如下几个特点:
随着拍拍贷业务量的飞速增长以及强大的数据埋点能力,目前已经积累下了非常多的UBT数据,为后续产品的优化、市场的推广、用户的风险评估等应用打下了坚实的基础。
LSTM简介
Long Short Term(简称LSTM)网络是一种特殊的RNN,可以学习长期的依赖信息。Schmidhuber在1992年提出了多层级网络,利用无监督学习训练神经网络的每一层,再利用反向传播算法调优,并于1997年与Hochreiter共同发表了一篇论文,提出了长短期记忆(LSTM)的概念,近期被Alex Graves进行了改良和推广。在诸多问题上,LSTM 都取得相当巨大的成功,并得到了广泛的使用。
LSTM与标准的RNN相比,主要的区别在于它在算法中加入了一个判断信息有用与否的“处理器”,这个处理器作用的结构被称为cell。一个cell当中被放置了三扇门,分别叫做输入门、遗忘门和输出门。一个信息进入LSTM的网络当中,可以根据规则来判断是否有用。只有符合算法认可的信息才会被留下,不符合的信息则通过遗忘门被遗忘。所有 RNN 都具有一种重复神经网络模块的链式形式。在标准的RNN中,这个重复的模块只有一个非常简单的结构,例如一个 tanh 层:
LSTM 同样是这样的结构,但是重复的模块拥有一个不同的结构。不同于单一神经网络层,这里是有四个,以一种非常特殊的方式进行交互:
因此,LSTM在处理有长期依赖信息的问题上会更有优势。而UBT数据记录了用户长期的操作行为(点击行为,浏览行为,网络环境等等)和操作路径(从注册如何到最后的业务申请等流程),非常适合用LSTM去挖掘这些pattern中对业务能产生直接价值的信息。
LSTM搭建
相比于传统的建模方式(数据准备 -> 特征提取 -> 模型训练),LSTM模型不仅能抓住某些特定的操作模式,还能记住用户历史的操作行为,在UBT这种和时间序列相关的Case中LSTM模型完胜。它不仅能抓住特定的操作pattern,如输入身份证信息的操作时长非常短(很有可能是复制/黏贴操作,不是正常用户的可能性也会增大)或者过长(盗用别人身份证号码/中介代办等欺诈行为可能性也会比较大),还能抓住用户从注册到最后申请借款的整个操作流程的pattern(是否认证多次、从注册到申请借款的整体操作路径特别短或特别长等)。
基于几千万用户在拍拍贷APP上记录下的海量行为数据,我们尝试将这些信息应用于风险模型,训练单独的风险子模型用于区分用户的风险等级,然后输出给拍拍贷自主研发的魔镜风险决策系统,为最终风险决策提供辅助参考。在前期数据准备阶段,遇到了非常多的挑战:
- 样本数据量非常大,300亿+条(1.5T+)
- 非结构化的数据,内容杂乱,噪音较多
- 数据维度极高且非常稀疏
经过复杂的ETL清洗以及降维分析后,我们从海量且高维度的UBT数据中选择了四类信息:设备信息、点击信息、浏览信息以及时间信息。再按时间的维度,我们将用户的UBT数据整理成上述序列形式,以用户借款后是否逾期作为模型学习的目标进行了多轮迭代。最终结果对拍拍贷借款申请用户实现很好的风险区分度,在拍拍贷魔镜分(拍拍贷魔镜风险系统为每位申请用户评估的风险评分)基础上还能有约10%的增益,再次提升了魔镜系统的整体风险区分能力,为业务的稳定发展保驾护航。模型训练框架如下图所示:
工程实现
在工程实现过程中,我们还面对以下问题:
- 每天产生5亿+条数据(~200G+),数据量仍在持续呈指数级别增长;
- 需要实时获取用户的UBT原始数据 -> 解析 -> ETL清洗 -> 转换为序列形式 -> 多层深度神经网络计算 -> 风险评分,整个过程需要在秒级实现;
- 每天需要处理20W+用户(~50G)的实时评分需求。
依托于拍拍贷极强的工程实现能力,Kafka + Spark Streaming + Hbase的设计很好的解决了上面遇到的挑战。将上述基于UBT数据的LSTM模型融合到了魔镜风险决策系统中,并实现了实时计算。以下简要展示下整体项目实现框架和UBT数据流程。
整体项目实现框架如下:
UBT数据流如下所示:
以上从实时获取UBT数据到深度学习模型实时打分的全流程打通后,不仅能很好的帮助风险部门识别出高风险用户,还具有很强的拓展性。我们可以开些脑洞,如:
- 智能催收。用户逾期后,仍经常浏览APP,说明用户还是很关注自己的还款动态和信用。对于此类逾期用户,催收同事可及时跟进和沟通,帮助用户更好的解决所面对的信用问题。
- 精准营销。用户注册后,未申请借款且长时间没有登录行为,突然某个时间段开始使用APP(可能有借款需求),此时客服同事可及时跟进,为客户提高更好的服务。
- 其他…场景千千万万,如您有需求,欢迎随时讨论,我们一起落地。
参考资料
[1] Tobias Lang, Matthias Rettenmerier. Understanding Consumer Behavior with Recurrent Neural Networks
[2] http://colah.github.io/posts/2015-08-Understanding-LSTMs/
[3] https://www.sensorsdata.cn/blog/shu-ju-jie-ru-yu-mai-dian/