利向晴,夏國恩,2,張顯全,唐 琪,葉 帥
(1.廣西師范大學 計算機科學與信息工程學院,廣西 桂林 541004; 2.廣西財經學院 工商管理學院,廣西 南寧 530003)
隨著社會經濟的不斷發展,各企業在不斷涌現,行業的競爭壓力也越來越大,許多公司都面臨客戶流失的實質問題。越來越多的公司開始意識到一個事實:挽留現有的客戶是想在行業中生存的最好的市場營銷方式,因為吸引新客戶的成本要比挽留現有客戶的成本大得多[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)結合相同網絡結構的不同訓練階段的權重獲得集成模型,對客戶流失進行預測。實驗結果表明,該方法顯著提升了客戶流失預測的效果。
深度神經網絡(deep neural network,DNN)[15]通過其隱層逐步學習類別,神經網絡將多層隱藏層添加到感知器模型中,以增強模型的泛化能力。為使模型更具靈活性,以便更好應用于分類、聚類和回歸等問題,神經網絡層由節點(神經元)組成,其輸入函數如下所示:
(1)
其中,i表示第i層,j表示神經網絡層數,w表示權重,b表示偏置,Z表示輸入函數。 單個神經元結構如圖1所示。

圖1 單個神經元結構
神經元將來自數據的輸入與一組系數或權重進行組合,這些系數或權重會放大或衰減該輸入,將這些輸入權重乘積相加,然后將總和傳遞給節點的激活函數,激活函數將非線性因素加入到神經網絡中,并將神經元的輸入映射到輸出端,以確定該信號是否應通過網絡進一步傳輸以影響最終結果(如分類),信號通過,則說明神經元已被“激活”。根據各層的位置,DNN神經網絡層分為輸入層、隱藏層和輸出層,如圖2所示。

圖2 DNN模型
DNN模型圖小圓圈代表著神經元,從圖中可看出,同一層神經元之間沒有連接,層與層之間全連接,神經網絡每個連接都有權重,最終輸出結果對應的層也成為全連接層,隱藏層和輸出層的神經元由輸入的數據計算后輸出,輸出層神經元可以是一個或多個輸出。
隨機加權平均(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
文中提出的基于深度神經網絡權重集成的客戶流失預測框架如圖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。訓練結束后只會得到一個具有組合權重的集成模型,這將加快后續模型預測的速度。
該實驗使用Windows10操作系統,軟件為Jupyter Notebook,具體硬件配置如下:內存64 GB;CPU型號為Intel(R)Xeon(R) CPU E5-2620 v4 @ 2.10 GHz。實驗中使用的工具:python3.7、Sklearn、Tensorflow、Keras。
文中使用的數據集是電信客戶流失數據集,選自kaggle數據科學大賽。該數據集共包含7 043個樣本,其中非流失的客戶數據為5 174,流失客戶數為1 869,客戶流失率為26.5%,其中存在11個缺失值,對其進行數據清洗,最終獲得樣本數為7 032。訓練數據大小5 625,測試數據1 407,從客戶流失數量與非客戶流失數量來看,該數據集屬于不平衡數據。根據數據的各個屬性對流失率的影響,可將流失率相關性低的忽略掉,共獲得17個屬性指標,其中離散屬性13個,數值屬性4個,對離散特征進行one-hot編碼,使用Scikit-learn標簽編碼,將分類的數據變換為整數編碼形式。
為了充分驗證文中提出的隨機加權平均優化深度神經網絡的方法,采用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)為最終的分類器。通過分類結果對權重進行更新可以使被錯誤分類的樣本權重變大,從而在下一輪迭代中得到重視。
為評估模型,采用準確率(accuracy)、精準率(precision)、召回率(recall)和精準率與召回率的調和平均值F1值來定義模型對客戶流失預測的效果。

表1 分類結果混淆矩陣
準確率、精準率、召回率和F1值的計算公式如下:

(16)
(17)

(18)
(19)
其中,TP表示對客戶流失正確預測的樣本數;FN表示實際為流失客戶的數據卻錯誤地將其預測為非客戶流失的樣本數;FP表示被錯誤預測為流失客戶的非流失客戶樣本數;TN為對非客戶流失正確預測的樣本數。
文中采用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曲線
文中提出一種深度學習神經網絡權重集成方法對電信客戶流失進行預測,在做深度神經網絡訓練的時候,通過隨機加權平均(SWA)結合相同網絡結構不同訓練階段的權重獲得集成模型,對客戶流失進行預測。實驗結果表明,該方法對客戶流失預測具有較好的效果。對模型訓練具有更廣泛的優化和更好的泛化,提高了神經網絡的性能。客戶流失預測是一個不斷發展的問題,數據的不斷龐大,需要新的方法去應對,所以在未來的工作中應不斷改進方法以適應復雜性更高的數據。