贝壳找房端到端模型在贝壳经纪人流失预警场景的实践
杨航@贝壳找房
近年来,深度学习算法在各领域大放异彩,各种端到端模型也日趋成熟。特别是在推荐算法领域,端到端模型几乎成了标配。端到端模型可以将特征工程融入到模型中,由模型自动化提取有效特征;也可以将各类网络结构融合到一起进行训练,根据数据特点进行深度拟合。本文探讨在贝壳经纪人流失预警场景下,如何将端到端模型应用于经纪人流失预测,并通过优化模型结构提升排序性能。
1. 端到端模型回顾
端到端学习指的是深度学习模型中,所有参数或原先几个步骤需要确定的参数被联合学习,而不是分步骤学习,预训练、特征工程等工作可以在端到端的一个神经网络中直接完成。在模型训练过程中,从输入端(数据)到输出端会得到一个预测结果,与真实结果相比得到一个误差,这个误差会在模型中的每一层传递(反向传播),每一层的表示都会根据这个误差来做调整,直到模型收敛或达到预期的效果才结束,中间所有的操作都包含在神经网络内部,不再分成多个模块处理。由原始数据输入,到结果输出,从输入端到输出端,中间的神经网络自成一体(可以当做黑盒子看待),这就是端到端模型。下面我们简要回顾一下端到端模型的发展历程。
1.1 GBDT+LR
2014年,Facebook提出一种自动化特征组合的方法。利用GBDT进行特征拟合,进而生成新的离散向量,再把该特征向量当做LR模型的输入,模型的结构图如下:
图中共有两棵树,x为一条输入样本,遍历两棵树后,x样本分别落到两颗树的叶子节点上,每个叶子节点对应LR一维特征,那么通过遍历树,就得到了该样本对应的所有LR特征。构造的新特征向量是取值0/1的。举例来说:上图有两棵树,左树有三个叶子节点,右树有两个叶子节点,最终的特征即为五维的向量。对于输入x,假设他落在左树第一个节点,编码[1,0,0],落在右树第二个节点则编码[0,1],所以整体的编码为[1,0,0,0,1],这类编码作为特征,输入到LR中进行分类。
GBDT+LR模型使用GBDT构建特征工程,利用LR模型进行样本拟合,这两步是独立训练的,因此它还算不上真正的端到端模型。然而GBDT+LR为将来端到端模型的产生带来了曙光。
1.2 Wide&Deep
Wide&Deep模型是谷歌于2016年在论文《Wide & Deep Learning for Recommender Systems》中提出的用于回归和分类的模型,自提出以来就在业界发挥着巨大的影响力,不仅在当时成为业界争相应用的主流模型,后续又衍生出大量以Wide&Deep模型为基础结构的混合模型,影响力一直延续至今。
Wide&Deep模型的思路正如其名,由单层的Wide部分和多层的Deep部分组成的混合模型。其中,Wide部分的主要作用是让模型具有较强的“记忆能力”(memorization);Deep部分的主要作用是让模型具有“泛化能力”(generalization),正是这样的结构特点,使模型兼具了逻辑回归和深度学习的优点——能够快速处理并记忆大量历史行为特征,并且具有强大的表达能力。其模型结构如下图所示:
Wide&Deep模型的Wide部分就是我们熟知的LR线性模型,这部分主要用作学习样本中特征的共现性,直接记住历史数据的分布特点,达到 “记忆” 的目的。通常在Wide部分还会做一些特征交叉,增强特征的表达能力。Deep部分由Embedding层和多隐层组成,利用神经网络表达能力强的特点,进行深层的特征交叉,挖掘藏在特征背后的数据模式。最终,再利用逻辑回归层将Wide部分和Deep部分组合,形成统一的模型。
Wide&Deep模型真正做到了自动化的特征工程,Wide部分和Deep部分的联合训练,通过神经网络的正向传播和反向回馈更新整个模型中的参数。在其提出之后,改进的模型结构层出不穷,比较著名的是deepFM、AFM、DIN、DIEN等模型,下一节重点介绍基于时间序列数据的DIEN模型。
1.3 DIEN(Deep Interest Evolution Network)
2019年阿里巴巴在DIN模型(Deep Interest Network)基础上,提出基于时间序列数据的DIEN模型。无论是电商购买行为,还是视频网站的观看行为,本质上都是用户行为的一个时间序列排列,存在一定程度的前后依赖关系,这样的序列信息无疑对模型有很大的价值。然而之前提出的模型着重点都在特征的衍生和交叉上,无法拟合时间序列信息,这样的预测结果是序列无关的。而DIEN模型能够充分学习序列之间的前后依赖关系,加强了上一次行为对下次行为预测的影响,学到一定的趋势信息。
DIEN模型的模型结构如下图所示:
兴趣进化网络主要分为三层,从下至上依次是:
(1) 行为序列层(Behavior Layer,浅绿色部分):其主要作用是把离散特征转化为Embedding向量;
(2) 兴趣抽取层(Interest Extractor Layer,米黄色部分):其主要作用是模拟用户行为数据的迁移过程,抽象出行为特征向量;
(3) 兴趣进化层(Interest Evolving Layer,浅红色部分):其主要作用是通过在兴趣抽取层基础上加入注意力机制,模拟与当前目标有关的行为进化过程。
在兴趣进化网络中,行为序列层的结构和普通的Embedding层是一致的,改进之处主要在序列信息抽取和序列的注意力计算。序列信息抽取主要使用的结构是GRU(Gated Recurrent Unit)网络,相比传统的RNN网络,GRU解决了RNN梯度消失问题;与LSTM网络相比,GRU网络的参数数量更少,训练收敛速度更快。序列的注意力计算是通过引入AUGRU(GRU with Attentional Update gate)结构,计算注意力得分,生成最终的行为特征序列。
由于序列模型具备强大的时间序列表达能力,非常适合于拟合有明确时间线的用户行为。贝壳经纪人的各类作业过程就是一个时间序列特征明显的用户行为,因此我们采用时间序列模型拟合经纪人作业行为。然而由于兴趣进化网络模型结构过于复杂,增加了模型训练和线上部署的难度,在实际工程实践中我们根据贝壳经纪人作业数据的特点,对DIEN模型进行简化和修改,构造出贴合业务场景的模型结构。
2. 在流失预警场景的实践
众所周知,房产经纪人群体的离职率高、流动性大,这对公司内部的人员管理、集团的应用推广都是极为不利的。如果能预测经纪人的离职倾向,针对高价值经纪人提前做职业上的关怀措施,提高经纪人的留存率,无论对公司的业绩还是客户的体验上都有很大的价值。
流失预警模型的整体框架如下:
我们将沿着图中的脉络梳理整个工程实践过程。
2.1 样本构建
房产经纪人流失预警模型的预测目标是经纪人是否会在未来一段时间内离职。根据业务场景我们取30天为预测周期。也就是说,在观察日当天圈定一批经纪人,如果在未来30天内离职则为响应样本,label为1;如果没有离职则label为0,其中正负样本的定义为:
- 正样本:观察日开始30日内离职的样本;
- 负样本:观察日开始30日内未离职的样本;
- 离职率:正样本数量/(正样本数量+负样本数量)
由于经纪人的分类繁多,时间序列模型重点是对经纪人作业数据进行拟合,因此我们排除掉管理层的经纪人,主要涵盖租赁经纪人、买卖经纪人和综合经纪人。
值得一提的是,对30天内新入职的经纪人是不进行统计的,我们的口径仅仅统计观察日当天在职的经纪人。根据全国经纪人整体数据来看,正负样本比例在1:10左右,可以直接进行建模,不需要做样本不平衡的处理。
2.2 特征选取
由于端到端模型可以同时兼容数值数据、类别型数据和时间序列数据,因此在特征选取时根据数据不同的特质,进行合适的处理。我们从两个方面分别阐述具体特征的选取。从特征的组成结构上分为以下两种:
静态信息:短期内不会随时间变化的数据特征。例如:年龄、性别、所在城市、如鱼信用分、职级、商机转化能力等;
时间序列数据:每天都会产生的作业数据。例如:房屋带看、房源录入、房屋实勘、商机量、成交业绩等。
另一方面,从业务分类上可以分为以下几种:经纪人基础信息、带看相关、房源相关、客源相关、交流相关、展位购买相关、合作成交相关、转化成交相关、作业偏好相关、业绩相关和负面信息。
在确定特征的组织形式后(静态或是时间序列),需要进行数据清洗、数据关联、宽表构建等,然后进入特征工程阶段。
2.3 特征工程
由于采用端到端的时间序列模型,在特征工程阶段不需要做过多的特征衍生工作,主要的处理步骤包括以下几个方面:
缺失值处理:首先对特征的缺失值分析,分析其缺失、为0的比例,根据特征的类型(离散/连续)与缺失的比例,以及业务含义的不同,进行不同方式的缺失值填充。对于作业数据的缺失,可以直接填充0,也就是默认没有作业;对于信用分和其他分值类数据填充最小值;对于离散型数据,单独新增“其他”类型进行填充。
异常值处理:通过对数值类特征进行EDA分析,发现部分特征存在异常值。异常值会严重影响数据归一化的结果,导致模型的区分度降低。因此我们结合业务含义,对异常值在98%或者95%的位置进行截断,保留绝大部分信息的前提下,消除异常值。
数据归一化:不同于树模型,逻辑回归、深度学习模型对于数据的量纲是敏感的,因此必须对原始数据进行归一化。目前主流的归一化方法是两种,MinMaxScaler和StandardScaler。MinMaxScaler根据特征的最大值、最小值将数据缩放到0、1区间内;StandardScaler根据特征的均值和方差,将数据缩放到以0为均值的区间上。从特性上来看,StandardScaler对数据的异常值容忍度更强;而在我们的工程实践中,使用StandardScaler模型的效果会更好,因此我们选用了StandardScaler进行数据归一化。
低频过滤:通过对类别型特征进行EDA分析,发现部分特征枚举值存在长尾效应。例如,招聘来源字段,总共有近100种枚举值,但是5个枚举值就占总样本的80%以上,剩下的枚举值十分稀疏。对于这种情况,我们将所有稀疏的枚举值进行合并,重新组合成新的离散特征。
特征筛选:原始的全量特征处理完后,有500个左右之多。但是这些特征并非全部对模型有增益作用;特征之间也会存在相关性、共线性。为提高模型训练、部署的效率,减少无效特征的干扰,必须对原始特征进行筛选。在本次工程实践中,我们使用了IV值、卡方检验、相关性、共线性等方法进行特征筛选,并对这些指标的阈值设置的较为宽松,尽可能多的保留原始信息。最终保留了近200个特征。
值得一提的是,对于时间序列数据,无法使用传统的特征筛选方法进行操作,因此我们给每个时间切片上均设置整个样本的标签,转化为二分类问题进行筛选。
时间序列步长:时间序列数据的步长是一个值得考量的关键问题。如果步长设置的过长,则会损失经纪人作业的细节,必然影响模型效果;如果设置的过短,比如以天为单位,会存在大量噪音数据,模型难以拟合收敛,无法抓住经纪人作业的本质规律;另外步长过短也会导致训练数据的容量太大。在我们的工程实践上,考虑到各类因素,最终选择以15天为一个周期。
Embedding:对于无序的类别型变量,我们使用Embedding层进行自动衍生,不使用手工编码和one-hot编码。通过Embedding层转换成低维、稠密的向量。降维后的特征具有较强的“扩展能力”,能够探索历史数据中从未出现过的特征组合,增强模型的表达能力。Embedding层向量可以随着模型一起训练,这正是端到端模型的魅力所在。
2.4 模型训练和优化
结合目前业界流行的模型结构,我们使用的网络结构如下:
如图所示,对于静态连续数据,如年龄、信用分、商机转化能力等等,经过归一化后直接转化为Dense Features;对于静态类别数据,如籍贯城市、星座、招聘来源等,首先通过Embedding层转化为Dense向量,再通过GRU神经网络结构提取特征向量;对于时间序列数据,经过序列整形后,首先通过Batch Normalization将数据规范化,从而加快训练速度,再通过LSTM网络结构进行时间序列特征的提取,生成特征向量。Hidden Layer将上一层各个模块输出的特征向量进行拼接,组成完整的特征向量,再后接一个全连接层,全连接层中有若干层神经网络,以Relu作为激活函数。最后通过Sigmoid函数进行激活,得到经纪人最终的离职倾向。
可以看到,整个模型可以被看做一个特征提取器。从不同结构、不同维度的数据中提取特征,进行数据降维操作。经过层层提取,最终数据被降成了一维,也就是最终的离职倾向,这可能是对端到端模型的一个直观理解。
我们将数据样本按7:3的比例划分为训练集和验证集,30天之后的样本作为时间外样本进行测试。为了防止模型过拟合,通过实验,我们加入了DropOut规则。可能由于经纪人数据不同于推荐场景的数据,离散型特征占比不大,对于特征交叉和注意力机制的加入并没有显著提高模型效果,基于综合考虑,本次模型结构中没有引入手工特征交叉和注意力机制。
在模型调优的过程中,我们尝试了调整网络结构、学习率、L2正则化、Batch Size以及迭代次数等,发现好的超参数可以明显提升模型的区分度和泛化性能。
2.5 模型效果
通过模型的调参和优化,最终在上线后取得以下效果:
AUC=0.84
KS=0.52
PR曲线
端到端模型的KS、AUC、LIFT均比传统分类器算法有明显的提升。在实际业务的开展中,帮助运营精准识别流失高风险人群,进行定向的挽留措施,降低经纪人流失率。
3. 总结和未来规划
本文简要回顾了端到端模型的发展历程,并介绍了其在贝壳经纪人流失预警场景下的应用,包括样本的选取、特征工程、模型结构的选择、模型训练和优化等,最终相对于传统分类器,排序性能取得了较大的提升。
目前我们正在准备模型的二次优化,从不同的方向进行总结和尝试,主要包括以下方面:
挖掘新的数据特征:寻找新的有效数据,衍生有效特征,提升模型效果;
分群建模:为满足个性化需求�
- 原文作者:知识铺
- 原文链接:https://geek.zshipu.com/post/%E4%BA%92%E8%81%94%E7%BD%91/%E8%B4%9D%E5%A3%B3%E6%89%BE%E6%88%BF%E7%AB%AF%E5%88%B0%E7%AB%AF%E6%A8%A1%E5%9E%8B%E5%9C%A8%E8%B4%9D%E5%A3%B3%E7%BB%8F%E7%BA%AA%E4%BA%BA%E6%B5%81%E5%A4%B1%E9%A2%84%E8%AD%A6%E5%9C%BA%E6%99%AF%E7%9A%84%E5%AE%9E%E8%B7%B5/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。
- 免责声明:本页面内容均来源于站内编辑发布,部分信息来源互联网,并不意味着本站赞同其观点或者证实其内容的真实性,如涉及版权等问题,请立即联系客服进行更改或删除,保证您的合法权益。转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。也可以邮件至 sblig@126.com