梁 曉,洪 榛
1(中國(guó)電信股份有限公司 浙江分公司 企業(yè)信息化事業(yè)部,杭州 310001)
2(浙江工業(yè)大學(xué) 信息工程學(xué)院,杭州 310023)
隨著互聯(lián)網(wǎng)與通信技術(shù)的快速發(fā)展,國(guó)內(nèi)通信市場(chǎng)已經(jīng)趨于飽和,通信運(yùn)營(yíng)商之間的競(jìng)爭(zhēng)異常激烈.用戶離網(wǎng)已成為運(yùn)營(yíng)商重點(diǎn)關(guān)注的問題之一.因此,創(chuàng)建一個(gè)性能優(yōu)異的用戶離網(wǎng)預(yù)測(cè)模型預(yù)測(cè)用戶離網(wǎng),及時(shí)發(fā)現(xiàn)具有較高離網(wǎng)概率的用戶,并制定有效的挽留策略,這對(duì)通信運(yùn)營(yíng)商來說具有重要意義.
在眾多分類算法中,決策樹算法效率高、簡(jiǎn)單易實(shí)現(xiàn),能夠可視化決策規(guī)則,業(yè)務(wù)解釋性較強(qiáng),因此,非常適合用戶離網(wǎng)預(yù)測(cè),被廣泛應(yīng)用于各類用戶離網(wǎng)預(yù)測(cè)場(chǎng)景中[1].Logistic 回歸、Bayesian 網(wǎng)絡(luò)、人工神經(jīng)網(wǎng)絡(luò)、支持向量機(jī)等算法也被學(xué)者用于用戶離網(wǎng)預(yù)測(cè)[2–6],都獲得了一定的成果,創(chuàng)建了具有優(yōu)秀預(yù)測(cè)性能的單一模型.然而,由于分類算法通常都具有不穩(wěn)定性的問題,在實(shí)際生產(chǎn)應(yīng)用過程中,訓(xùn)練數(shù)據(jù)集輕微的變化就能夠造成模型性能的顯著差異,模型預(yù)測(cè)魯棒性和泛化能力均較差,不能滿足實(shí)際生產(chǎn)應(yīng)用的要求.因此,有學(xué)者將集成學(xué)習(xí)算法(如:Random Forest、GBDT 等)應(yīng)用于用戶離網(wǎng)預(yù)測(cè),在提升模型穩(wěn)定性和預(yù)測(cè)準(zhǔn)確率方面都取得了較大的進(jìn)步[7,8].近年來,各類新型梯度提升樹算法層出不窮,最具有代表性的為:XGBoost、LighGBM和CatBoost,它們?cè)诟黝悪C(jī)器學(xué)習(xí)競(jìng)賽中表現(xiàn)優(yōu)異.本文提出一種基于多分類器融合的方法創(chuàng)建用戶離網(wǎng)預(yù)測(cè)模型,該方法將應(yīng)用XGBoost、LighGBM、CatBoost、深度神經(jīng)網(wǎng)絡(luò)以及隨機(jī)森林分別創(chuàng)建多個(gè)分類器,并將多個(gè)分類器進(jìn)行融合,以利用多個(gè)分類器之間的互補(bǔ)性有效提升用戶離網(wǎng)預(yù)測(cè)效果.
深度學(xué)習(xí)通過建立具有層次結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò)對(duì)輸入信息進(jìn)行逐層提取和篩選,從而自動(dòng)獲得數(shù)據(jù)的特征表示,最終實(shí)現(xiàn)端到端學(xué)習(xí).深度神經(jīng)網(wǎng)絡(luò)(Deep Neural Network,DNN)是由一組受限玻爾茲曼機(jī)構(gòu)成的層次神經(jīng)網(wǎng)絡(luò)[9],其網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示,包括:Input 層、Hidden 層和Output 層.Input 層負(fù)責(zé)接收樣本數(shù)據(jù),Output 層負(fù)責(zé)生成預(yù)測(cè)結(jié)果,相鄰層神經(jīng)元之間采用全連接,位于同一層中的神經(jīng)元之間不存在連接.DNN 被廣泛應(yīng)用圖像識(shí)別、語(yǔ)音識(shí)別等領(lǐng)域中,并擁有良好的表現(xiàn).
圖1 DNN 網(wǎng)絡(luò)模型
批規(guī)范化(BN)本質(zhì)上解決了深層網(wǎng)絡(luò)難以訓(xùn)練的弊端[10].隨著層次的增多,信號(hào)的正向傳播和梯度的反向計(jì)算會(huì)越來越大或越來越小,導(dǎo)致梯度消失或梯度爆炸等問題.為了解決上述問題,BN 將過小或過大的信號(hào)進(jìn)行歸一化.即首先對(duì)輸入進(jìn)行白化預(yù)處理:
式(1)中,E(x)指其中一批輸入x的平均值;Var(x)為該批次數(shù)據(jù)的方差;ε是極小的正數(shù),為了確保分母不等于零.對(duì)于深層網(wǎng)絡(luò),在每個(gè)單元輸出后都可加上一層BN,使得單元輸出信號(hào)的每一維特征均值為0,標(biāo)準(zhǔn)差為1+ε,但這樣做會(huì)降低每個(gè)單元的表達(dá)能力.為了提升模型的表達(dá)能力,加入“比例和平移(scale and shift)”操作,即:
式(2)中,參數(shù) α,β隨著網(wǎng)絡(luò)中每層的迭代訓(xùn)練而得到更新學(xué)習(xí),當(dāng)時(shí),BN也就能夠還原最初的輸入,如此可使BN層智能地更新參數(shù),在改變信號(hào)的同時(shí)也可以保持原輸人,不僅提升了模型的表達(dá)能力,而且使信號(hào)在深層網(wǎng)絡(luò)里更好地傳遞,加速網(wǎng)絡(luò)收斂.在訓(xùn)練階段,每個(gè)批次數(shù)據(jù)的均值和方差都不同,采用滑動(dòng)平均的方式記錄并更新均值和方差.在測(cè)試階段,可直接調(diào)用最后一次修改的均值方差進(jìn)行測(cè)試.
Microsoft 在2016年開源LightGBM,它是基于決策樹的梯度提升集成學(xué)習(xí)框架.與基于決策樹的傳統(tǒng)集成學(xué)習(xí)方法相比,LightGBM 的訓(xùn)練速度更快、效率更高、內(nèi)存使用率更低、模型效果更好、支持并行學(xué)習(xí)[11,12].
LightGBM 主要有以下特點(diǎn):
(1) Histogram 優(yōu)化
LightGBM 將連續(xù)型數(shù)值特征的每一個(gè)特征值劃分到一系列離散的域中(bins),摒棄了傳統(tǒng)的預(yù)排序思路,如圖2所示.以浮點(diǎn)型特征為例,一個(gè)區(qū)間的值會(huì)被作為一個(gè)桶,然后用這些以桶為精度單位的直方圖來做.通過這樣的方法,有效簡(jiǎn)化了數(shù)據(jù)的表達(dá),而且降低了內(nèi)存使用率.此外,直方圖還帶來了一定的正則化的效果,可以平滑異常數(shù)據(jù),避免模型過擬合,使其具有良好的泛化性.
圖2 Histogram 優(yōu)化流程
(2) Leaf-wise 生長(zhǎng)方法
為了提升模型的預(yù)測(cè)效果,LightGBM 采用Leafwise (按葉子)生長(zhǎng)方法,如圖3所示.相比較于XGBoost中的Level-wise (按層)生長(zhǎng)方法,Leaf-wise 生長(zhǎng)方法效率更高.使用Leaf-wise 生長(zhǎng)方法,能夠有效降低訓(xùn)練誤差.然而,僅使用Leaf-wise 生長(zhǎng)方法很容易得到深度較大的樹,從而出現(xiàn)過擬合現(xiàn)象.因此,深度限制被添加到Leaf-wise 生長(zhǎng)方法中.
圖3 Leaf-wise和Level-wise 節(jié)點(diǎn)展開方式比較
(3)類別型變量支持
傳統(tǒng)的集成學(xué)習(xí)算法一般不能直接處理類別型變量,需要先將類別型變量通過One-Hot 編碼等方式轉(zhuǎn)化為數(shù)值型變量,這種處理類別型變量的方法往往效率較低.LightGBM 通過在決策樹算法上添加了對(duì)類別型變量的決策規(guī)則,能夠?qū)崿F(xiàn)類別型變量的直接輸入,無需再對(duì)類別型變量進(jìn)行轉(zhuǎn)化.
CatBoost是由俄羅斯公司Yandex 開發(fā)的一種新型梯度提升樹算法,于2017年7月宣布開源,CatBoost算法的設(shè)計(jì)初衷是為了更好的處理類別特征[13].在傳統(tǒng)GBDT 中,處理類別特征的方法是用類別特征對(duì)應(yīng)標(biāo)簽的平均值來替換.在決策樹中,標(biāo)簽平均值將作為節(jié)點(diǎn)分裂的標(biāo)準(zhǔn),此方法被稱為Greedy Target-Based Statistics (TBS),用公式表示為:
式(3)中,xi,k表示第k個(gè)特征的第i類值,分子表示第k個(gè)特征的第i類值對(duì)應(yīng)的標(biāo)簽值的和,分母表示第k個(gè)特征的第i類值的數(shù)量.
該方法有一個(gè)明顯的缺陷,即:通常特征比標(biāo)簽包含更多的信息,如果強(qiáng)行用標(biāo)簽平均值來表示特征的話,當(dāng)訓(xùn)練數(shù)據(jù)集和測(cè)試數(shù)據(jù)集數(shù)據(jù)結(jié)構(gòu)和分布不一樣的時(shí)候會(huì)出現(xiàn)條件偏移問題.CatBoost 改進(jìn) Greedy TBS 的方式是添加先驗(yàn)分布項(xiàng),從而有效減少噪聲和低頻率數(shù)據(jù)對(duì)于數(shù)據(jù)分布的影響[14].用公式表示為:
式(4)中,P是添加的先驗(yàn)項(xiàng),α通常是大于0 的權(quán)重系數(shù),其余參數(shù)與式(3)一致.
本文采用一種融合多個(gè)模型的方法創(chuàng)建最終的離網(wǎng)用戶預(yù)測(cè)模型,方法過程如圖4所示.首先,由原始訓(xùn)練數(shù)據(jù)經(jīng)過有放回隨機(jī)抽樣和正負(fù)樣本平衡后得到5 份不同的訓(xùn)練數(shù)據(jù),并將每份訓(xùn)練數(shù)據(jù)隨機(jī)切分成數(shù)量相等的兩份(如:將訓(xùn)練數(shù)據(jù)集i切分為訓(xùn)練數(shù)據(jù)集i_a和訓(xùn)練數(shù)據(jù)集i_b,其中,i=1,2,3,4,5);然后,通過訓(xùn)練數(shù)據(jù)集i_a分別使用CatBoost、LightGBM、XGBoost、隨機(jī)森林、DNN-BN 訓(xùn)練得到不同的基礎(chǔ)模型;最后,將訓(xùn)練數(shù)據(jù)集i_b分別輸入基礎(chǔ)模型,得出輸出結(jié)果,并將該結(jié)果作為輸入,把訓(xùn)練數(shù)據(jù)集i_b的標(biāo)簽作為訓(xùn)練目標(biāo),使用邏輯回歸算法訓(xùn)練得到高層模型.評(píng)估模型時(shí),將測(cè)試數(shù)據(jù)輸入融合模型得到用戶離網(wǎng)概率,離網(wǎng)概率值大于0.5 的用戶判為離網(wǎng)用戶,反之,離網(wǎng)概率值小于0.5 的用戶判為非離網(wǎng)用戶.
圖4 融合模型創(chuàng)建流程
DNN-BN 需要搭建如圖5所示網(wǎng)絡(luò)結(jié)構(gòu),具體包括:1 個(gè)Input 層、3 個(gè)Hidden 層以及1 個(gè)Output 層.DNN-BN 使用全連接層提取特征,并結(jié)合BN 層來幫助深層網(wǎng)絡(luò)更好地傳遞信息.本文使用Keras 實(shí)現(xiàn)深度神經(jīng)網(wǎng)絡(luò).預(yù)測(cè)用戶是否離網(wǎng)是典型的二分類問題,因此,Loss 函數(shù)選用Cross Entropy.Adam是一種能自適應(yīng)選擇學(xué)習(xí)率的優(yōu)化算法,在計(jì)算學(xué)習(xí)率用于更新參數(shù)時(shí),綜合考慮當(dāng)前梯度和歷史梯度,Adam 計(jì)算效率高,對(duì)內(nèi)存需求少,對(duì)超參數(shù)不敏感,應(yīng)用于大規(guī)模數(shù)據(jù)及參數(shù)的場(chǎng)景中能取得較好的效果,因此本文選擇Adam 作為優(yōu)化算法.為避免神經(jīng)元權(quán)重?zé)o法更新,出現(xiàn)梯度為0 的情況,激活函數(shù)使用LeakyReLU(alpha=0.05);最終,通過Sigmoid 函數(shù)輸出用戶離網(wǎng)概率.
圖5 DNN-BN 網(wǎng)絡(luò)結(jié)構(gòu)圖
本文選取浙江省某大型城市電信公司的手機(jī)用戶為研究對(duì)象,手機(jī)用戶指該用戶使用電信公司的手機(jī)業(yè)務(wù)而沒有使用電信公司的其他業(yè)務(wù),如:寬帶、網(wǎng)絡(luò)電視等.由于用戶數(shù)量較為龐大,需要將研究目標(biāo)聚焦在質(zhì)量較高且相對(duì)較為活躍的公眾市場(chǎng)用戶上,因此,需要剔除行業(yè)客戶、商業(yè)客戶、校園客戶等非公眾市場(chǎng)客戶和入網(wǎng)時(shí)長(zhǎng)低于6 個(gè)月的用戶.
為了預(yù)測(cè)用戶在未來一段時(shí)間內(nèi)的離網(wǎng)傾向,在定義數(shù)據(jù)的時(shí)間范圍時(shí),需要在模型輸入訓(xùn)練數(shù)據(jù)的時(shí)間和模型輸出預(yù)測(cè)結(jié)果的時(shí)間之間增加一段間隔,因此,用戶數(shù)據(jù)的時(shí)間范圍包括:觀察分析期、維系期和預(yù)測(cè)期,如圖6所示.觀察分析期是指用戶產(chǎn)生通信行為信息、消費(fèi)信息等數(shù)據(jù)的時(shí)間范圍,即模型訓(xùn)練所需輸入數(shù)據(jù)的時(shí)間窗口;預(yù)測(cè)期是模型輸出用戶離網(wǎng)標(biāo)識(shí)的時(shí)間;維系期位于預(yù)測(cè)期與觀察分析期之間,當(dāng)模型預(yù)測(cè)到某個(gè)用戶在預(yù)測(cè)期有很大離網(wǎng)傾向時(shí),公司營(yíng)銷人員可以充分利用維系期去對(duì)潛在離網(wǎng)用戶采取維系和挽留措施.本文將訓(xùn)練集數(shù)據(jù)時(shí)間跨度界定為2019年5月至2019年9月,其中,觀察期為:2019年5月至2019年7月,該時(shí)間范圍內(nèi),用戶數(shù)據(jù)如:近3 個(gè)月通話總次數(shù)、通話總時(shí)間、近3月新增積分等經(jīng)過計(jì)算后作為建模需要的用戶屬性;2019年9月用戶離網(wǎng)數(shù)據(jù)作為模型預(yù)測(cè)的目標(biāo)數(shù)據(jù),即作為預(yù)測(cè)期數(shù)據(jù)輸入模型.另外,本文將測(cè)試集數(shù)據(jù)時(shí)間跨度界定為2019年7月至2019年11月,其中,觀察期為:2019年7月至2019年9月,預(yù)測(cè)期為2019年11月.
圖6 用戶數(shù)據(jù)時(shí)間范圍選擇
對(duì)于用戶離網(wǎng)的定義,根據(jù)業(yè)務(wù)經(jīng)驗(yàn),以下3 類用戶基本可以判定為離網(wǎng),分別為:緩沖期和預(yù)測(cè)期內(nèi),主動(dòng)拆機(jī)的用戶;緩沖期和預(yù)測(cè)期內(nèi),連續(xù)兩個(gè)月出賬金額為0 元且通話時(shí)長(zhǎng)為0 秒的用戶;截止到預(yù)測(cè)期,欠費(fèi)雙向停機(jī)超過30 天的用戶.本文根據(jù)以上口徑標(biāo)準(zhǔn)為樣本數(shù)據(jù)打上“是否離網(wǎng)”標(biāo)簽,“離網(wǎng)”為1,“非離網(wǎng)”為0.
最終,經(jīng)過數(shù)據(jù)篩選和數(shù)據(jù)處理,選取2019年5月浙江省某城市電信公司的1812 311 戶手機(jī)用戶為訓(xùn)練樣本用于訓(xùn)練模型;選取2019年7月該市電信公司的1841 950 戶手機(jī)用戶為測(cè)試樣本,用于評(píng)估模型.另外,根據(jù)業(yè)務(wù)經(jīng)驗(yàn),用戶的付費(fèi)類型和套餐類型不同,通信行為和消費(fèi)習(xí)慣會(huì)存在較大差異,因此,本文將用戶分為后付費(fèi)暢享、后付費(fèi)非暢享、預(yù)付費(fèi)暢享、預(yù)付費(fèi)非暢享4 類,并針對(duì)每類用戶分別進(jìn)行建模.表1為4 類用戶的離網(wǎng)人數(shù)和離網(wǎng)率統(tǒng)計(jì)情況.
表1 各類用戶的離網(wǎng)情況統(tǒng)計(jì)
電信公司經(jīng)過多年的數(shù)據(jù)積累已經(jīng)獲取了較為全面的用戶特征信息,這些特征信息可以歸納為8 大類,分別為:用戶基本信息,如:用戶年齡、性別、等級(jí)、在網(wǎng)時(shí)長(zhǎng)等;用戶消費(fèi)信息,如:ARPU 值、近三月ARPU均值等;用戶產(chǎn)品信息,如:套餐名稱、套餐大類、套餐協(xié)議到期時(shí)間等;用戶服務(wù)信息,如:近三月投訴次數(shù)、投訴類型等;用戶通信行為信息,如:通話次數(shù)、通話時(shí)長(zhǎng)、主被叫比例、上網(wǎng)流量等;用戶互聯(lián)網(wǎng)應(yīng)用信息,如:APP 使用情況等;用戶社交圈信息,如:社交圈大小,社交圈本網(wǎng)用戶占比等;用戶終端信息,如:終端品牌、終端型號(hào)、終端價(jià)格等.根據(jù)業(yè)務(wù)經(jīng)驗(yàn),初步選取8 大類特征信息中134 個(gè)特征制作成用戶寬表.用戶寬表制作完成后,數(shù)據(jù)量依然較為龐大,并且存在部分與用戶離網(wǎng)相關(guān)性不大特征,需要通過一定的方法將這些特征進(jìn)行過濾,保留與用戶離網(wǎng)相關(guān)性較大的特征,從而保證后續(xù)建模的效果.
(1)基于Pearson 相關(guān)系數(shù)的特征選擇
使用Pearson 相關(guān)系數(shù)可以衡量每個(gè)特征與標(biāo)簽變量的線性相關(guān)性,其計(jì)算方法如下:
式(5)中,x和y表示兩個(gè)特征變量,Cov(x,y)表示協(xié)方差,σx,σy表示標(biāo)準(zhǔn)差;r(x,y)表示Pearson 相關(guān)系數(shù),其取值范圍為[?1,1],其中,0 表示線性不相關(guān),其值越接近1 則是正線性相關(guān)性越大,越接近?1 則是負(fù)線性相關(guān)性越大.
通過上述方式計(jì)算特征變量與離網(wǎng)標(biāo)簽之間的線性相關(guān)性,對(duì)與目標(biāo)變量不相關(guān)的特征或相關(guān)性弱的特征予以排除.使用scipy.stats 包中的Pearson 或者sklearn.feature_selection 包中的f_regrssion,均可以實(shí)現(xiàn)Pearson 相關(guān)系數(shù)的計(jì)算.本文計(jì)算得到每個(gè)特征與離網(wǎng)標(biāo)簽特征的相關(guān)性系數(shù)和P 值后,將與離網(wǎng)標(biāo)簽特征相關(guān)性小于0.001 的特征進(jìn)行過濾,過濾特征的名稱、相關(guān)性系數(shù)以及P 值如表2所示.
表2 基于Pearson 相關(guān)性系數(shù)的過濾特征列表
(2)基于卡方檢驗(yàn)的特征選擇
卡方檢驗(yàn)是一種基于卡方分布的假設(shè)檢驗(yàn)方法[15].本文采用卡方檢驗(yàn)來確定特征變量是否與離網(wǎng)標(biāo)簽?zāi)繕?biāo)變量相關(guān)聯(lián),基本假設(shè)為:H0 (特征變量與離網(wǎng)標(biāo)簽變量無關(guān)聯(lián));H1 (特征變量與離網(wǎng)標(biāo)簽變量有關(guān)聯(lián)).使用sklearn.feature_selection 的SelectKBest和chi2 可以實(shí)現(xiàn)卡方檢驗(yàn),得到每個(gè)特征的卡方值和P 值,如果某特征的P 值小于顯著性水平或者其卡方值大于在顯著性水平下的卡方值,則拒絕H0 假設(shè),即該特征與離網(wǎng)標(biāo)簽變量存在關(guān)聯(lián).通過設(shè)定參數(shù)k,可以得到k個(gè)與標(biāo)簽值相關(guān)性最大的特征.本文通過程序計(jì)算得到所有特征的卡方值和P 值,并將所有特征按照P 值從大到小排列(或者卡方值從小到大排列),最后結(jié)合業(yè)務(wù)經(jīng)驗(yàn)知識(shí)過濾一部分特征,過濾特征信息如表3所示.
表3 基于卡方檢驗(yàn)的過濾特征列表
由于樣本數(shù)據(jù)中絕大部分?jǐn)?shù)值型特征的值均為非負(fù)值,并且特征之間數(shù)值量綱差距較大,故需要對(duì)這些數(shù)據(jù)進(jìn)行Min-Max 標(biāo)準(zhǔn)化,將每個(gè)特征的數(shù)值縮放到同一尺度,數(shù)值在0 到1 之間,計(jì)算公式如下:
式(6)中,x*表示標(biāo)準(zhǔn)化后的各個(gè)數(shù)據(jù)點(diǎn)取值,x表示各個(gè)數(shù)據(jù)點(diǎn)的原始取值;xmin和xmax分別表示每個(gè)特征數(shù)值系列中的最小值和最大值.Min-Max 標(biāo)準(zhǔn)化能夠完整的保留原始數(shù)據(jù)之間的關(guān)系.
本文使用有放回抽樣和基于K-means 聚類算法的分層抽樣來得到多份訓(xùn)練樣本,用于訓(xùn)練多個(gè)基礎(chǔ)模型,其基本流程如圖7所示.
圖7 數(shù)據(jù)采樣流程
有放回抽樣借鑒了Bagging 集成算法的思想,抽樣數(shù)據(jù)Dt的大小和原始訓(xùn)練數(shù)據(jù)集大小雖然一致,但是理論上原始訓(xùn)練數(shù)據(jù)集中有36.8%的數(shù)據(jù)不會(huì)出現(xiàn)在Dt中,這樣就可以獲得多個(gè)具有一定差異性的訓(xùn)練集,從而保證了每個(gè)基礎(chǔ)模型的差異性.
本文使用基于K-means 聚類算法的分層抽樣來平衡訓(xùn)練數(shù)據(jù)集中的正樣本和負(fù)樣本數(shù)量.首先,使用Kmeans 算法分別將每個(gè)訓(xùn)練數(shù)據(jù)集Dt中的負(fù)樣本進(jìn)行聚類;然后在每個(gè)類簇中分別抽取一定數(shù)量的負(fù)樣本組成新的負(fù)樣本集合;最后,將該負(fù)樣本集合與正樣本集合進(jìn)行合并組成新的訓(xùn)練集合Dt-balanced,使得Dt-balanced中的負(fù)樣本數(shù)量與正樣本數(shù)量的比例為10:1.這種抽樣方法最大限度保證了負(fù)樣本的特征多樣性.
通過前述數(shù)據(jù)預(yù)處理工作,四類用戶數(shù)據(jù)集都可獲得5 份不同訓(xùn)練數(shù)據(jù)用于訓(xùn)練基礎(chǔ)模型并融合成高層型.根據(jù)第2 章提出的模型訓(xùn)練方法,針對(duì)每類用戶數(shù)據(jù)分別訓(xùn)練一個(gè)融合模型.其中,基于批規(guī)范化的深度神經(jīng)網(wǎng)絡(luò)使用TensorFlow2.1.0 版本中的Keras 模塊進(jìn)行實(shí)現(xiàn),Keras 支持快速構(gòu)建神經(jīng)網(wǎng)絡(luò)模型,并且代碼同時(shí)支持在CPU和GPU 上運(yùn)行,本文采用keras.models模塊中的Sequential 實(shí)現(xiàn)順序模型構(gòu)建深度神經(jīng)網(wǎng)絡(luò),全連接神經(jīng)網(wǎng)絡(luò)層采用keras.layers 模塊中的Dense 實(shí)現(xiàn),批規(guī)范化層采用keras.layers.normalization 模塊中的BatchNormalization 實(shí)現(xiàn).CatBoost、LightGBM、XGBoost 均需要通過pip 工具安裝對(duì)應(yīng)程序包,隨機(jī)森林算法則通過sklearn.ensemble 模塊中的RandomForest-Classifier 進(jìn)行實(shí)現(xiàn),CatBoost、LightGBM、XGBoost的基礎(chǔ)模型均為決策樹,因此3 種算法都含有兩類主要參數(shù),一類為控制樹生長(zhǎng)的超參數(shù),如:LightGBM和XGBoost 中的max_depath,CatBoost 中的depth、min_child_weight 等;另一類為控制集成的超參數(shù),如:LightGBM和XGBoost 中的n_estimators,CatBoost 中的iteration 以及l(fā)earning_rate 等;另外,CatBoost和LightGBM 均支持類別字段的直接輸入,將類別字段索引列表和類別字段名稱列表分別賦給CatBoost 中cat_features 參數(shù)和LightGBM 中的categorical_feature即可.對(duì)基礎(chǔ)模型的整合使用mlxtend.classifier 中的StackingClassifier 模塊進(jìn)行實(shí)現(xiàn),StackingClassifier 中的classifiers 參數(shù)用于設(shè)定基礎(chǔ)模型列表,meta_classifier參數(shù)用于設(shè)定高層模型,訓(xùn)練高層模型的算法采用邏輯回歸,使用sklearn.linear_mode 模塊中的Logistic-Regression 進(jìn)行實(shí)現(xiàn),主要通過設(shè)定參數(shù)C來控制正則化強(qiáng)度,同時(shí)通過設(shè)定class_weight 參數(shù)來進(jìn)一步提升對(duì)數(shù)量較少的正樣本判錯(cuò)懲罰.算法的參數(shù)設(shè)定較為復(fù)雜,需要使用sklearn.model_selection 模塊中的GridSearchCV 實(shí)現(xiàn)帶交叉驗(yàn)證的網(wǎng)格搜索來獲取最佳參數(shù),參數(shù)最終設(shè)定如表4所示.
表4 CatBoost、LightGBM、XGBoost、LogisticRegression 參數(shù)設(shè)定
本文使用精度、召回率、F1 值、ROC 曲線以及AUC 值對(duì)模型進(jìn)行全面評(píng)估.由于樣本數(shù)據(jù)中,正樣本與負(fù)樣本數(shù)量相差懸殊,負(fù)樣本數(shù)量遠(yuǎn)大于正樣本,因此,本文重點(diǎn)關(guān)注正樣本(離網(wǎng)用戶)的精度、召回率和F1 值.從表5中可知,融合模型在4 類用戶數(shù)據(jù)集上均表現(xiàn)較好,F1 值全部高于其他5 類算法所創(chuàng)建的模型.表6為融合模型綜合指標(biāo).
表5 融合模型與其他模型F1、精度、召回率比較
表6 融合模型綜合指標(biāo)
從表6中可知,融合模型在1841 950 個(gè)測(cè)試樣本數(shù)據(jù)中找出了43 928 個(gè)疑似離網(wǎng)用戶,其中真實(shí)離網(wǎng)用戶13 761 個(gè),精確度為0.31;實(shí)際離網(wǎng)用戶總數(shù)為31 642,模型找到的真實(shí)離網(wǎng)用戶數(shù)占實(shí)際離網(wǎng)用戶總數(shù)的43%,即模型召回率為0.43,模型綜合F1 值為0.36,符合業(yè)務(wù)要求,尤其是模型在占比最大的預(yù)付費(fèi)用戶數(shù)據(jù)集上表現(xiàn)較好.
為了更加直觀地將融合模型的性能展現(xiàn)出來,本文繪制與計(jì)算了融合模型與其他基礎(chǔ)模型在四類用戶數(shù)據(jù)集上的ROC 曲線和AUC 值,如圖8所示.從圖中的ROC 曲線以及對(duì)應(yīng)的AUC 值可以看出,融合模型的綜合性能相比于其他5 類模型有較為明顯的優(yōu)勢(shì),并且在4 類用戶數(shù)據(jù)集上,AUC 值均穩(wěn)定地保持在0.9 以上.
圖8 融合模型與其他模型ROC 曲線與AUC 值的比較
本文針對(duì)電信用戶離網(wǎng)預(yù)測(cè)問題,提出一種基于多分類器融合的方法創(chuàng)建用戶離網(wǎng)預(yù)測(cè)模型.該方法使用深度學(xué)習(xí)算法和集成學(xué)習(xí)算法分別訓(xùn)練多個(gè)基礎(chǔ)分類器,并將這些基礎(chǔ)分類器進(jìn)行融合形成一個(gè)高層模型,從而充分利用了多個(gè)分類器之間的互補(bǔ)性.實(shí)驗(yàn)結(jié)果表明,該方法創(chuàng)建的模型在各類用戶數(shù)據(jù)集上的預(yù)測(cè)效果相比較于基礎(chǔ)分類器均有一定程度的提升,模型預(yù)測(cè)效果也符合業(yè)務(wù)要求,因此,具有實(shí)際生產(chǎn)應(yīng)用價(jià)值.
本文所提出的方法雖然是應(yīng)用于用戶離網(wǎng)預(yù)測(cè)問題,但是該方法中的思想,可以用于解決運(yùn)營(yíng)商客戶經(jīng)營(yíng)領(lǐng)域中遇到的各類問題.近期,循環(huán)神經(jīng)網(wǎng)絡(luò)在各領(lǐng)域中被廣泛應(yīng)用,今后將應(yīng)用循環(huán)神經(jīng)網(wǎng)絡(luò)建立具有時(shí)序特性的電信用戶離網(wǎng)預(yù)測(cè)模型,以捕捉用戶從入網(wǎng)到離網(wǎng)的全生命周期時(shí)序特征,從而提高模型預(yù)測(cè)效果.