基于深度神经网络权重集成的客户流失预测
2021-10-28利向晴夏国恩张显全
利向晴,夏国恩,2,张显全,唐 琪,叶 帅
(1.广西师范大学 计算机科学与信息工程学院,广西 桂林 541004; 2.广西财经学院 工商管理学院,广西 南宁 530003)
0 引 言
随着社会经济的不断发展,各企业在不断涌现,行业的竞争压力也越来越大,许多公司都面临客户流失的实质问题。越来越多的公司开始意识到一个事实:挽留现有的客户是想在行业中生存的最好的市场营销方式,因为吸引新客户的成本要比挽留现有客户的成本大得多[1]。长期性客户对企业更有利,企业在想办法吸引新客户的同时,也应该避免客户的流失。《Harvard哈佛商业评论》认为,若能将客户流失率降低5%,则企业的利润将增加25%~85%,而美国著名的财政企业杂志《商业周刊》则认为利润将增加140%[2]。一般来说,客户流失分为两类:一类是意外流失,有时因为生活环境的原因,如客户离开了公司服务的范围,或是客户的财政状况发生了变化,导致客户被迫放弃他们的服务;另一类是主动性流失,由于客户决定将其服务转移到别的公司而导致的流失,这背后的原因或许是别的公司提供了更优的服务[3]。所以在客户流失之前进行预测,并采取适当营销策略对客户进行挽留,将客户流失的损失降到最低是非常重要的,不仅可以提高企业的利润,也能避免企业在核心竞争中被淘汰。目前对于客户流失预测的方法有很多,如逻辑回归(logistic regression,LR)[4]、XGBoost算法[5]、循环神经网络(recurrent neural network,RNN)[6]、多层感知机(multi-layer perception,MLP)[7]等。
研究者们将客户流失预测问题视为二分类问题,如今,客户流失预测方面的研究取得了长足的进展。为提升模型预测的泛化能力,夏国恩等人[8]提出了一种基于支持向量机的客户流失预测模型,结果表明支持向量机在客户流失预测方面是有效的;周捷等人[9]提出了基于LSTM的模型集成方法,对客户流失进行预测,LSTM自动学习序列隐含信息以及复杂高阶特征,减少了对特征工程的依赖,同时对其进行集成提高了预测效果;E.Jamalian等人[10]提出了一种数据融合和特征提取技术的混合方法,以更准确地预测客户的变动;Wangperawong A等人[11]提出深度卷积神经网络和自动编码对客户流失进行分析,使用自动编码无监督学习,以便更好地了解客户流失的原因;Yu R等人[12]提出了一种基于客户细分优化的BP网络用于客户流失预测,该算法优化了BP神经网络的初始权重和阈值,大大提高了客户流失预测的准确性;Mishra A等人[13]利用卷积神经网络进行客户流失预测,实验取得了很好的效果,相比于传统机器学习,通过深度学习能更好地发现客户流失的潜在风险。
如今深度学习在图像处理(物体识别、场景识别、人脸身份认证、恢复黑白照片和视频颜色等)、自然语言处理(翻译、文本识别、聊天对话、在野外阅读文本等)、语音处理(语音识别、音乐创作、恢复视频声音等)中都得到了很好的应用[14]。深度学习算法最大的优点是它尝试以增量形式从数据中逐步学习高级功能。这就使得算法不会太依赖于领域专业知识和人工特征提取。
文中提出一种深度神经网络权重集成方法(stochastic weight average deep neural network,swaDNN)来预测电信客户流失,在做深度神经网络训练的时候,通过随机加权平均(stochastic weight average,SWA)结合相同网络结构的不同训练阶段的权重获得集成模型,对客户流失进行预测。实验结果表明,该方法显著提升了客户流失预测的效果。
1 相关理论基础
1.1 深度神经网络
深度神经网络(deep neural network,DNN)[15]通过其隐层逐步学习类别,神经网络将多层隐藏层添加到感知器模型中,以增强模型的泛化能力。为使模型更具灵活性,以便更好应用于分类、聚类和回归等问题,神经网络层由节点(神经元)组成,其输入函数如下所示:
(1)
其中,i表示第i层,j表示神经网络层数,w表示权重,b表示偏置,Z表示输入函数。 单个神经元结构如图1所示。
图1 单个神经元结构
神经元将来自数据的输入与一组系数或权重进行组合,这些系数或权重会放大或衰减该输入,将这些输入权重乘积相加,然后将总和传递给节点的激活函数,激活函数将非线性因素加入到神经网络中,并将神经元的输入映射到输出端,以确定该信号是否应通过网络进一步传输以影响最终结果(如分类),信号通过,则说明神经元已被“激活”。根据各层的位置,DNN神经网络层分为输入层、隐藏层和输出层,如图2所示。
图2 DNN模型
DNN模型图小圆圈代表着神经元,从图中可看出,同一层神经元之间没有连接,层与层之间全连接,神经网络每个连接都有权重,最终输出结果对应的层也成为全连接层,隐藏层和输出层的神经元由输入的数据计算后输出,输出层神经元可以是一个或多个输出。
1.2 随机加权平均权重集成
随机加权平均(SWA)[16]在随机梯度下降(stochastic gradient descent,SGD)[17]的基础上进行了改进,随机梯度下降是一种为机器学习算法找到最佳参数配置的方法。迭代地对机器学习网络的参数进行小的调整,以减少网络的错误。SWA以周期性或较高的恒定学习率对SGD遍历的点进行加权平均。一般的集成方法是对不同的模型进行集成,然后用相同的输入对模型进行预测,集成模型的最终预测由某种平均方法来确定。
传统的集成方法有:Snapshot集成、Fast Geometric Ensenmbling集成和Stacking集成。Snapshot集成方法利用循环学习率的策略来训练深度学习模型,Stacking集成方法通过将训练集分成若干部分,为同一机器学习算法生成多个参数不同的分类器,Fast Geometric Ensembling集成使用线性分段的循环学习率,来取代Snapshot集成中的余弦,这些都是基于模型空间的集成方法,需要多个训练模型来预测每个模型,并对最终的预测结果进行平均。而随机加权平均为基于权重空间的新集成方法,经过训练后的网络为多维权值空间的点,对于给定的网络结构,不同权值的组合将产生不同的模型,SWA的重点是使用改进SGD迭代周期性学习率(lr_schedule为cyclic)或高恒定学习率(lr_schedule为constant),并利用深度学习训练目标的平坦性来提高泛化能力。其中,周期性学习率在每个周期线性地将学习率从α1降到α2,第i次迭代的学习率公式为:
α(i)=(1-t(i))α1+t(i)α2
(2)
(3)
其中,α1≥α2,c表示周期长度,t(i)表示第i次迭代的时间。SWA通过加入周期性加权平均来限制权重的变化,解决了传统SGD在反向过程中的权重震荡问题。SWA局部极小值倾向于累积在损耗值较低的损耗表面区域的边界上,通过取几个这样的点的平均值,使得结果具有更低的损耗。SGD收敛到一个宽平坦损失区域内的解。重量空间是极高维的,且大部分平面区域的体积集中在边界附近,因此SGD的解总是在平面区域的边界附近找到。另一方面,SWA有多个SGD解决方案,这使它能够向平坦区域的中心移动。SWA在训练过程中,第一个模型用于存储模型权重的平均值,并在训练结束时作为最终模型用于预测结果;第二个模型将遍历权重空间,并用周期性学习率对其进行探索。随机加权平均的权重更新方程如式(4)所示:
(4)
其中,wswa表示存储模型权重的平均值,w表示用于遍历权重空间的值,n表示模型数。SWA算法描述如下:
算法:随机加权平均。
周期长度c(对于恒定的学习率则c=1),迭代次数n
输出:wswa
2.wswa=w
3. fori=1,2,…,ndo
4.α1=α(i)
5.w=w-αli(w)
6. if mod(i.c)=0 then
7.nmodels=i/c
9. end if
10. end for
11. returnwswa
2 深度神经网络权重集成方法的客户流失预测模型
文中提出的基于深度神经网络权重集成的客户流失预测框架如图3所示,主要包含客户数据、数据预处理、模型训练、结果评价几个阶段,原始的客户数据并不都是可以直接拿来用的,那会导致某些错误。数据预处理是为了获取更好的数据来进行训练,接着进行模型训练得到预测结果,企业可以根据预测制定相应的客户挽留策略,以免造成更严重的客户流失问题。
图3 客户流失预测框架
DNN模型结构如图4所示。首先是对客户的数据进行预处理,进行数据清洗和数据变换,通过3层隐藏层,最终由输出层输出,得到预测结果。每一层可以有一个或多个神经元,文中模型隐层神经元选用8个,输出层只有1个神经元。
图4 DNN模型结构
神经元常见的激活函数包括tanh、elu、sigmoid、relu、maxout等,在文中实验中,神经元的激活函数选用relu。relu函数能克服梯度消失的问题,使得神经网路具有更快的训练速度,relu函数的表示如公式(5)所示:
f(x)=max(0,x)
(5)
输出层设置了1个神经元,使用Sigmoid作为激活函数,输出在0和1之间,表示如公式(6)所示:
(6)
客户流失预测是二分类问题,文中实验采用Binary Cross_entropy作为损失函数:
(7)
深度神经网络的层数和神经元数对模型训练的结果具有较大的影响,通过实验得出3层隐藏层和隐藏层的神经元设为8个的拟合效果较好,输出层只有1个神经元。SGD学习率设为0.1,SWA采用周期性学习率,周期长度c为10,学习率α1=0.001,α2=0.003,在训练过程中,在模型初始化参数之后,使用SGD进行梯度下降,迭代了c个epoch之后,将模型的参数用加权平均,得到wswa,当前模型参数为wswa,接着再用SGD梯度下降c个epoch,再进行加权平均得到新的wswa。训练结束后只会得到一个具有组合权重的集成模型,这将加快后续模型预测的速度。
3 实 验
3.1 实验环境
该实验使用Windows10操作系统,软件为Jupyter Notebook,具体硬件配置如下:内存64 GB;CPU型号为Intel(R)Xeon(R) CPU E5-2620 v4 @ 2.10 GHz。实验中使用的工具:python3.7、Sklearn、Tensorflow、Keras。
3.2 数据选用及预处理
文中使用的数据集是电信客户流失数据集,选自kaggle数据科学大赛。该数据集共包含7 043个样本,其中非流失的客户数据为5 174,流失客户数为1 869,客户流失率为26.5%,其中存在11个缺失值,对其进行数据清洗,最终获得样本数为7 032。训练数据大小5 625,测试数据1 407,从客户流失数量与非客户流失数量来看,该数据集属于不平衡数据。根据数据的各个属性对流失率的影响,可将流失率相关性低的忽略掉,共获得17个属性指标,其中离散属性13个,数值属性4个,对离散特征进行one-hot编码,使用Scikit-learn标签编码,将分类的数据变换为整数编码形式。
3.3 对比模型
为了充分验证文中提出的随机加权平均优化深度神经网络的方法,采用Random Forest、Logistic Regression、CatBoost、Support Vector Machine、AdaBoost作为基准对比模型。
(1)Random Forest:随机森林[18]由多个决策树分类器组成,随机森林的每棵决策树都对类别进行预测,将投票多的决策树作为预测的模型。采用重复m次的有放回的采样,并在这些样本上训练树模型,最终取所有单个回归树的预测的平均来实现对未知样本的预测。
(8)
(9)
(2)Logistic Regression:逻辑回归(LR)是用于分类的模型,逻辑回归将线性回归的输出作为它的输入,逻辑回归通过Sigmoid函数映射来解决分类问题,逻辑回归模型和损失函数可表示为:
(10)
yi)log(1-hθ(x))]
(11)
其中,m表示样本数,yi表示真实值,θTx表示线性回归模型的矩阵形式。一般使用梯度下降法对逻辑回归损失函数进行求解,以减少损失函数的值,最终使得预测效果更准确。
(3)CatBoost:是对传统Boosting算法的重大改进,CatBoost主要思想是在决策树中,先对样本随机排序,节点分裂的标准为类别标签平均值,并通过添加先验分布项来减少噪声和低频率分类数据对于数据分布的影响。
(12)
其中,p是添加的先验项,a通常是大于0的权重系数,σj,k表示第j个数据的第k个特征。
(4)Support Vector Machine:支持向量机(SVM)可用于分类和回归,算法的目的是在n维空间(n特征数)中找到可对数据点明确分类的超平面。支持向量机的约束优化问题表示为:
(13)
支持向量机约束优化问题由损失项和正则项以及约束项组成,其中n为样本数,通过上述代价函数来获得一个最优参数θ,将优化问题转化为最小参数向量θ的范数平方,最终找到能产生最大间距分类现象的θ范数。
(5)AdaBoost[19]:其核心对弱分类器进行迭代训练,弱分类器的权重更新方式如公式(14)所示,在每次迭代中加入一个新的弱分类器,直到加权误差率达到预定的值。
(14)
(15)
其中,t=1,2,…,T,表示第t轮迭代,w表示样本权重,i表示第i个样本,Zt表示归一化因子,第t轮迭代的αt可表示为0.5*ln((1-εt)/εt),其中εt为弱分类器Gt(x)的加权误差率,当εt>0.5时,达到终止条件,G(x)为最终的分类器。通过分类结果对权重进行更新可以使被错误分类的样本权重变大,从而在下一轮迭代中得到重视。
3.4 评价指标
为评估模型,采用准确率(accuracy)、精准率(precision)、召回率(recall)和精准率与召回率的调和平均值F1值来定义模型对客户流失预测的效果。
表1 分类结果混淆矩阵
准确率、精准率、召回率和F1值的计算公式如下:
(16)
(17)
(18)
(19)
其中,TP表示对客户流失正确预测的样本数;FN表示实际为流失客户的数据却错误地将其预测为非客户流失的样本数;FP表示被错误预测为流失客户的非流失客户样本数;TN为对非客户流失正确预测的样本数。
3.5 实验结果以及分析
文中采用5折交叉验证,以测试集实验结果的平均值作为模型评判的标准,实验结果如表2和图5所示。随机森林模型在数据集中整体性能的不是很好,说明随机森林模型不太适用于非平衡数据,不能很好地区分流失和非流失数据。支持向量机(SVM)模型对数据多的分类的误差比数据少的分类误差小,因为其对不平衡样本数据的预测具有倾向性。逻辑回归模型形式简单,特征对数据结果影响较大,且对正负样本不平衡的数据的分类不是很友好。CatBoost和AdaBoost都是Boosting算法的一种实现,相比之下,AdaBoost的综合性能较好,模型较稳健,但是在处理非平衡数据上精度不是最好的。文中实验DNN模型使用Adam优化算法迭代更新神经网络的权重,召回率不是很高,表明流失用户被正确预测出来的概率不是很高。swaDNN中SGD的学习率设为0.1,SWA的lr_schedule采用cyclic的形式,相比于DNN,swaDNN的准确率、精准率、召回率和F1值都分别高出了0.53%、0.22%、9.26%和5.20%,在相同batch size情况下,总计训练100个epoch,DNN训练时间为52.92 s,swaDNN的训练时间为17.84 s,相比之下,swaDNN的训练时间缩短了2.96倍,大大提高了训练的速率。通过与其他模型进行对比,swaDNN的准确率、精准率、召回率和F1值要优于其他模型,实验结果表明文中提出的深度神经网络权重集成方法可以有效提升预测效果。
表2 不同模型的预测效果
(a)ROC曲线
(b)PR曲线图5 各模型ROC曲线与PR曲线
4 结束语
文中提出一种深度学习神经网络权重集成方法对电信客户流失进行预测,在做深度神经网络训练的时候,通过随机加权平均(SWA)结合相同网络结构不同训练阶段的权重获得集成模型,对客户流失进行预测。实验结果表明,该方法对客户流失预测具有较好的效果。对模型训练具有更广泛的优化和更好的泛化,提高了神经网络的性能。客户流失预测是一个不断发展的问题,数据的不断庞大,需要新的方法去应对,所以在未来的工作中应不断改进方法以适应复杂性更高的数据。