冀慧杰,倪 楓,劉 姜,陸祺靈,張旭陽,闕中力
(上海理工大學(xué) 管理學(xué)院,上海 200093)
隨著電信市場的飽和以及激烈的競爭,移動運營商要想占領(lǐng)龐大的移動通信市場,必須提供高質(zhì)量的服務(wù)來吸引新客戶,同時留住現(xiàn)有客戶。不僅僅是電信業(yè),對任何行業(yè)來說客戶流失是現(xiàn)代企業(yè)客戶關(guān)系管理中面臨最多也是最難的問題。以往的研究發(fā)現(xiàn)客戶流失對企業(yè)造成的損失是巨大的。一是已流失客戶不能再為企業(yè)創(chuàng)造價值,每流失1%的客戶將會對企業(yè)造成5%~16%的利潤損失;二是流失的客戶可能會傳播一些負面口碑,不利于企業(yè)的形象,甚至?xí)绊懙狡渌蛻舻牧魇?;三是企業(yè)發(fā)展一個新客戶比挽留一位老客戶需要投入更多的精力和金錢等成本。有研究表明用戶保持率增加5%,則能給企業(yè)帶來85%的利潤增長。因此客戶保留已成為CRM部門重點關(guān)注的領(lǐng)域??蛻舯A羰侵腹玖糇∑洮F(xiàn)有客戶的能力,在很大程度上取決于準確、及時地預(yù)測客戶流失,并采取有效的防范措施??蛻袅魇ьA(yù)測對于電信公司挽留用戶和提供個性化服務(wù)至關(guān)重要,通過預(yù)測用戶的流失,根據(jù)流失的可能性將用戶分為不同的等級,并提供相應(yīng)的服務(wù);同時分析客戶流失的原因,盡可能減少客戶流失??蛻袅魇ьA(yù)測是電信行業(yè)中保留現(xiàn)有客戶的最有效策略之一。
國內(nèi)外有大量文獻研究了客戶流失預(yù)測,研究領(lǐng)域涉及到電信、銀行、網(wǎng)絡(luò)以及游戲客戶的流失等??蛻袅魇ьA(yù)測是一個復(fù)雜的問題,其特殊性表現(xiàn)在高維的特征、大量的數(shù)據(jù)、流失與非流失類不平衡和分類準確性要求。目前經(jīng)過多年的研究,客戶流失預(yù)測研究領(lǐng)域取得了諸多成果。客戶流失的現(xiàn)有算法主要可分為四種:基于傳統(tǒng)統(tǒng)計學(xué)方法[1-2]、基于人工智能[3-4]、基于統(tǒng)計學(xué)習(xí)理論[5]以及基于集成分類器[6-7]的預(yù)測算法。此外,模糊分類器[8]、粗糙集[9]和社會網(wǎng)絡(luò)分析方法[10]也都被用于客戶流失預(yù)測。通過對以往文獻的分析,Logistic、決策樹和隨機森林[11]、Adaboost[12]、XGBoost[13]等集成分類器都是客戶流失預(yù)測中最常使用的方法。
其次,電信客戶流失預(yù)測包含用戶的人口統(tǒng)計學(xué)特征、通話、賬單等信息,往往是高維數(shù)據(jù)集,一些特征屬性對決策過程很有用,而另一些特征對客戶流失與否則不太重要,在構(gòu)建模型時應(yīng)選擇重要特征進行訓(xùn)練。特征選擇就是從數(shù)據(jù)集中篩選掉與目標變量無關(guān)冗余的特征,選擇重要特征并減少無關(guān)屬性的數(shù)量可提高分類性能,節(jié)約模型訓(xùn)練時間。特征選擇的方法有三種:過濾式(Filter)、包裝式(Wrapper)和嵌入式(Embedded)。過濾式特征選擇根據(jù)特征與類別的相關(guān)性,采用具體的評價準則通過設(shè)定閾值選擇特征。文獻中常用的方法有信息增益[11]、Pearson相關(guān)系數(shù)、Fisher Score[14]、MRMR[15]、relief等。Filter算法效率高,但獨立于分類器,導(dǎo)致特征子集的冗余度高,且部分弱相關(guān)特征可能對模型有用。包裝式特征選擇將特征選擇與分類器算法結(jié)合在一起,根據(jù)搜索策略選擇在分類器上預(yù)測精度較好的特征子集,如遞歸特征消除可以和算法本身能夠輸出特征重要性的分類器結(jié)合在一起。子集搜索策略有前向搜索、后向搜索和雙向搜索。Wrapper算法能夠選擇出較優(yōu)的特征子集,但采用子集搜索策略進行特征選擇需要耗費大量的時間。Embedded特征選擇將Wrapper和Filter結(jié)合起來,直接使用學(xué)習(xí)算法進行訓(xùn)練,模型訓(xùn)練結(jié)束后可根據(jù)特征的權(quán)值大小選擇特征,例如基于L1的特征選擇和基于樹的特征選擇(Adaboost、隨機森林、XGBoost等)。如文獻[16-18]使用XGBoost的特征重要性進行特征選擇,均是根據(jù)重要性度量選取指定數(shù)量的特征。李占山等(2019)混合了XGBoost特征重要性的三種指標,通過序列浮動前向搜索策略選擇特征[19]。XGBoost算法具有良好的防止過擬合的特性和計算效率,并且XGBoost可以提供三種特征重要性度量的方法,因此基于XGBoost的特征重要性度量來選擇特征的方法被廣泛使用。通過對以往文獻的分析,根據(jù)模型特征重要性度量直接刪除特征易導(dǎo)致存在冗余特征,且部分弱相關(guān)特征對提高模型的性能有正向作用,根據(jù)文獻[20]設(shè)計的基于隨機森林的雙向特征選擇,提出一種基于XGBoost的混合特征選擇算法XGB-BFS,該算法從兩個角度進行特征選擇。首先根據(jù)XGBoost內(nèi)置的特征重要性度量Fscore值對特征進行排序,然后使用序列后向搜索的方式對排序好的特征依次刪除Fscore值最低的特征,根據(jù)驗證集的AUC值判斷是否保留刪除的特征,遍歷特征集,最后將選出的特征子集應(yīng)用到XGBoost分類器中預(yù)測客戶流失。
XGBoost[21](extreme gradient boosting)是對GBDT的改進,在數(shù)據(jù)挖掘比賽中被廣泛使用,效果顯著。XGBoost構(gòu)建客戶流失預(yù)測模型時以CART樹為基分類器進行組合構(gòu)造強分類器,目標函數(shù)可表示為:
Obj(Θ)=L(Θ)+Ω(Θ)=
(1)
(2)
(3)
由上式可知,在構(gòu)建二分類模型時,只需尋找一棵樹使得目標函數(shù)最小,然后迭代k次就可完成訓(xùn)練。對損失函數(shù)使用二階泰勒展開可得:
(4)
對葉子節(jié)點進行L2正則化:
(5)
其中,T為葉子節(jié)點個數(shù)。
(6)
對wj進行求導(dǎo),可以得到極值:
(7)
代入可得:
(8)
上式即為葉子節(jié)點取值的表達式。XGBoost在分裂時計算增益Gain:
(9)
γ用來控制樹的復(fù)雜度。
XGBoost提供了三種特征重要性度量指標。根據(jù)上述XGBoost原理,XGBoost模型構(gòu)建了k棵分類樹,在所有樹中,統(tǒng)計一個特征在分裂節(jié)點被使用的次數(shù)得到第一種特征重要性排序方式Fscore值;二是特征在所有樹中的平均增益值A(chǔ)verageGain;三是在所有樹中,使用該特征作為分裂節(jié)點時覆蓋樣本數(shù)量的平均值A(chǔ)verageCover。該文使用Fscore值判斷特征重要性。
(10)
(11)
由于XGBoost模型可在訓(xùn)練結(jié)束后輸出特征重要性排序,該文提出了一種基于XGBoost的混合特征選擇算法XGB-BFS。該算法根據(jù)XGBoost特征重要性度量的Fscore方法對特征進行排序,采用序列后向搜索的方式尋找最優(yōu)特征子集。將數(shù)據(jù)集分為訓(xùn)練集、驗證集和測試集,首先將包含所有特征訓(xùn)練集進行XGBoost建模,采用五折交叉驗證尋找最優(yōu)參數(shù),根據(jù)Fscore對特征進行排序。然后對經(jīng)過排序的特征集進行篩選,用Fscore值評價一個特征是否能夠保留,依次將Fscore得分最低的特征剔除特征集;用驗證集在新特征子集下的AUC值判斷留下特征的預(yù)測結(jié)果是否更優(yōu)。在選擇特征過程中需權(quán)衡特征數(shù)量以及對模型效果的提升,而部分特征對模型的提升效果有限,因此在實驗中為盡可能篩選對客戶流失預(yù)測影響較大的特征,通過設(shè)定閾值h(h的具體數(shù)值根據(jù)實驗結(jié)果設(shè)置)來選擇特征,若驗證集的AUC值提高大于h則保留剛刪除的特征,若AUC值提高小于h或者降低則仍剔除刪掉的特征。該算法既能夠篩選出對目標變量影響較大的特征,又能降低特征之間的冗余。算法的流程如圖1所示。
算法1:XGB-BFS。
輸入:含有M個特征的訓(xùn)練集;
輸出:含有m(m 過程: (1)通過XGBoost訓(xùn)練包含所有特征的訓(xùn)練集,交叉驗證求出最佳參數(shù)值 (2)WhileM≠?: M=Selectfeature//根據(jù)Fscore對特征重要性進行排序 (3) ForfinM: NSelectfeature=M-{f}//移除Fscore值最低的特征 If AUC(NSelectfeature)-AUC(Selectfeature) deletefeature=f//刪除該特征 Selectfeature=NSelectfeature //更新特征集 Else Selectfeature=NSelectfeature+deletefeature //保留刪除的特征 End if End for (4) Return m //最終特征子集 圖1 XGB-BFS流程 (12) 表1 數(shù)據(jù)集部分屬性 在實驗中,該算法采用python3.6語言編寫,使用了公開的XGBoost、Imbalance、Scikit-Learn工具包。采用五折交叉驗證和網(wǎng)格搜索的方式找出XGBoost模型的最佳參數(shù),經(jīng)實驗設(shè)置XGBoost算法的參數(shù)為:max_depth=5,n_estimators=200,learning_rate=0.3。選擇Accuracy、AUC、Recall、Precision、F1 score作為模型的評價指標。 (13) 該文采用目前在客戶流失預(yù)測中流行的分類算法Logistic、Adaboost、隨機森林作為對照,這三個分類器在模型訓(xùn)練完成后均可輸出特征重要性排序,因此采用現(xiàn)有的特征選擇技術(shù)分別構(gòu)建RFE_logistic、Embedded_Adaboost和Embedded_RF模型與所提算法進行對比,驗證基于XGB-BFS特征選擇方法的客戶流失預(yù)測模型的性能。 (1)RFE_Logistic:基于Wrapper方法中的遞歸特征消除法使用邏輯回歸模型進行多輪訓(xùn)練,每輪訓(xùn)練完成后,移除部分特征,獲得最終特征子集后構(gòu)建Logistic客戶流失預(yù)測模型; (2)Embedded_Adaboost:基于Embedded思想訓(xùn)練Adaboost選擇重要特征,并構(gòu)建Adaboost客戶流失預(yù)測模型; (3)Embedded_RF:基于Embedded思想根據(jù)隨機森林的基尼特征重要性排序刪除相關(guān)性較弱的特征,并構(gòu)建隨機森林客戶流失預(yù)測模型; (4)XGB-BFS_XGBoost:按照所提算法選擇特征子集,構(gòu)建XGBoost客戶流失預(yù)測模型。XGBoost特征重要性度量Fscore值排名前10的特征如圖2所示。根據(jù)實驗,將閾值h的值設(shè)為0.002,共刪除了13個特征,保留43個特征。各模型的對比結(jié)果如表2所示,圖3為所提算法的ROC曲線。 圖2 基于XGBoost的特征重要性排序 表2 各模型預(yù)測結(jié)果對比 圖3 XGBoost模型的ROC曲線 通過對五個評價指標的比較,可以看出提出的基于XGBoost的特征選擇方法在準確度、AUC值、精度和F1 score值在四個模型中均表現(xiàn)最佳。具體相較于其他三個模型而言,相比最低值在分類準確率上提高了6%,AUC值提高了2%,精度提高了13%,F(xiàn)1 score值提高了6%。從模型的召回率來看,雖然Logistic模型和Adaboost模型的Recall值高于XGBoost模型,但是這兩個模型的準確度和精度較低,意味著模型將未流失客戶預(yù)測為流失客戶的錯誤更高,對企業(yè)來說這會增加不必要的客戶挽留成本。因此綜合各個指標來看,構(gòu)建的XGBoost模型在進行客戶流失預(yù)測時有更好的性能。 針對電信客戶流失預(yù)測數(shù)據(jù)集高維特征的問題,提出了一種混合的XGB-BFS特征選擇算法,該算法從兩個角度對特征進行選擇:首先使用XGBoost模型的Fscore值輸出特征重要性排序,然后采用序列后向搜索的方式依次移除重要性最低的特征計算驗證集的AUC值,根據(jù)設(shè)定AUC增長閾值選擇將特征移除還是保留,直到遍歷整個特征集。該特征選擇算法既可以篩選出對預(yù)測客戶流失最重要的特征,又能去除冗余特征。在電信客戶流失數(shù)據(jù)集上的實驗結(jié)果表明該方法具有良好的性能,也可應(yīng)用到其他分類領(lǐng)域進行特征選擇。3 實驗分析
3.1 數(shù)據(jù)預(yù)處理
3.2 模型參數(shù)及評價指標
3.3 模型結(jié)果對比
4 結(jié)束語