鄭 紅,葉 成,金永紅,程云輝
1.華東理工大學信息科學與工程學院,上海200237
2.上海師范大學商學院,上海200234
互聯(lián)網(wǎng)的高速發(fā)展摧生了互聯(lián)網(wǎng)應用市場的繁榮,也使互聯(lián)網(wǎng)行業(yè)的競爭愈發(fā)激烈.客戶的消費行為是企業(yè)獲利的重要渠道,用戶群體越大,企業(yè)獲利的空間越大[1].當用戶流失的速度低于獲取新客的速度時,用戶量呈增加狀態(tài).研究表明,吸引一個新用戶的成本是維護一個老用戶成本的4 至5 倍[2],如果用戶留存率提高5%,利潤率將提高25%[3].
用戶流失現(xiàn)象可以解釋為在一段時間內(nèi)用戶從當前平臺轉(zhuǎn)移到其他平臺的現(xiàn)象[4].大量的用戶流失,不僅會影響企業(yè)盈利,而且也會帶來一系列的負面影響,比如:損害公司估值、使企業(yè)市場規(guī)??s水、傷害企業(yè)信譽和影響市場情緒、與同行競爭中處于下風等.因此,提前預測可能的流失用戶并及時發(fā)出用戶流失預警對降低用戶流失率具有重要的現(xiàn)實意義.
流失用戶預測問題本質(zhì)上是將用戶分類成流失和留存兩種類別的問題[5].國內(nèi)外學者提出了許多方法試圖提高流失用戶預測準確率,如決策樹、支持向量機(support vector machine,SVM)、聚類算法以及人工神經(jīng)網(wǎng)絡(luò)等.文獻[6]通過對電信行業(yè)用戶流失的研究,提出了一個基于決策樹和邏輯回歸比較的統(tǒng)計生存分析工具進行用戶流失預測.文獻[7]基于邏輯回歸模型,通過對電子商務(wù)客戶流失行為的研究,建立了電子商務(wù)用戶流失預測模型.文獻[8]利用K-means 聚類算法探究了電信行業(yè)用戶細分及其在實際營銷中的作用.文獻[9]提出了一種基于支持向量機的客戶關(guān)系管理規(guī)則提取方法,并在銀行信用卡客戶流失預測數(shù)據(jù)集中進行測試,實驗結(jié)果表明所提出的方法優(yōu)于其他測試方法.文獻[10]通過貝葉斯網(wǎng)絡(luò)對電信行業(yè)的流失用戶進行預測可知,用戶通話時間與用戶流失有很大關(guān)系.文獻[11]利用卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural networks, CNN)來預測客戶流失,并在測試集中取得了較高的AUC(area under ROC curve)得分.文獻[12]將客戶行為看作是一種時序行為,從而利用長短期記憶網(wǎng)絡(luò)(long short-term memory, LSTM)進行用戶流失預測,所得實驗結(jié)果與隨機森林算法相當,且優(yōu)于邏輯回歸算法.
在上述流失用戶預測方法中,大多只使用了單一的分類模型,或者是不同模型之間的簡單融合,而沒有進行過多的優(yōu)化.受隨機森林自助采樣法的啟發(fā),本文提出一種基于自助采樣法的Stacking 集成算法(bootstrap sampling stacking, BS-Stacking).實驗結(jié)果表明,該集成算法相對于簡單集成方法具有更高的流失用戶預測準確率.
Boosting 算法的主要思想是將弱分類器提升為強分類器.Adaboost 算法是Boosting 最具代表性的算法之一,它允許不斷加入新的弱分類器并要求弱分類器在性能上至少要優(yōu)于隨機猜想,直到滿足規(guī)定的訓練誤差值為止.Adaboost 算法在開始訓練時為每一個訓練樣本賦予相同的權(quán)重,該權(quán)重表示被某一個分類器選中并進入其訓練集的概率大小.如果某一個訓練樣本被準確分類,那么它在下一輪的分類器構(gòu)造中被選中的概率就會降低;反之,如果它被錯誤分類,那么它在下一輪的分類器構(gòu)造中被選中的概率就會變大[13-14].算法步驟如下:
步驟1訓練數(shù)據(jù)集D={xi,yi}(i=1,···,n),初始化訓練數(shù)據(jù)權(quán)值分布,W1(i)=1/n,i=1,2,3,···,n,訓練k輪;
步驟2使用按權(quán)重Wk(i)采樣的數(shù)據(jù)訓練弱分類器Ck,Ck表示第k輪訓練得到的分類器;
步驟3計算Ck在訓練數(shù)據(jù)集上的分類誤差Ek=P(Ck(xi yi));
步驟4計算Ck(x)的系數(shù)αk=12ln[(1?Ek)/Ek];
步驟5更新訓練集數(shù)據(jù)的權(quán)重,即
步驟6最終的判決結(jié)果由各個分類器加權(quán)得到,即
Boosting 算法的基分類器具有訓練順序的相關(guān)性,因此只可以串行訓練,從而導致其訓練速度較慢.
Bagging 算法即裝袋法,其典型代表為隨機森林算法.隨機森林算法通常選擇CART 決策樹作為基分類器,通過對樣本進行自助采樣來訓練基分類器,最終的預測結(jié)果由所有基分類器投票決定[15].隨機森林算法的流程如圖1所示.
圖1 隨機森林算法流程Figure 1 Process of random forest algorithm
在樣本層面,隨機森林算法通過自助采樣法對數(shù)據(jù)集進行樣本子集的隨機選取,從而實現(xiàn)樣本擾動,增加基分類器的差異性;隨后對屬性進行隨機選擇,選擇出一個包含N個屬性的集合以增加屬性擾動.這種做法減少了基分類器間的相關(guān)性,提高了算法抗噪聲能力和魯棒性.另外,隨機森林算法的基分類器訓練順序沒有相關(guān)性,因此可以進行并行訓練,從而可以縮短訓練時間.
Stacking 集成學習方法最初由Wolpert 于1992年提出[16].它與Bagging 和Boosting 集成方法不同,后兩種方法只可以集成同種分類器,而Stacking 集成可以集成異構(gòu)的分類器.假設(shè)有數(shù)據(jù)集D={xi,yi}(i=1,···,n),其中xi代表一個樣本,yi表示樣本xi的類別標簽,則Stacking 可以用以下2 個步驟描述:
步驟1基于數(shù)據(jù)集分別訓練基模型BM=(BM1, BM2,..., BMT);
步驟2將基模型的輸出y(i,t)(i=1,···,n;t=1,···,T)組成的新的數(shù)據(jù)集作為元分類器(meta model, MM)的輸入.
Stacking 集成通常為兩層,有時也有多層的情況,但是多層Stacking 一般較為復雜且在實際情況中較少使用.為了防止過擬合情況的發(fā)生,在訓練基模型時還會結(jié)合交叉驗證.圖2給出了經(jīng)典Stacking 集成的框架圖.
圖2 Stacking 集成框架Figure 2 Framework of Stacking ensemble
受隨機森林算法提升分類準確率方法的啟發(fā),本文改進了經(jīng)典Stacking 集成方法,提出了BS-Stacking 模型.對Stacking 算法中的每一個基分類器BM 進行T次拷貝,使用自助采樣法并加入屬性擾動得到T個數(shù)據(jù)子集,分別對基分類器的副本進行訓練,該基分類器的最終預測結(jié)果由該基分類器的所有副本投票決定.本文所采用的基分類器有SVM、LDA、AdaBoost、KNN、Native-Bayes,元分類器為邏輯斯蒂回歸(logistic regression,LR).基于bagging 的隨機森林算法同樣會對樣本進行采樣,如果將隨機森林也作為一個基分類器,將會發(fā)生隨機森林的基分類器會在已采樣的樣本子集上再次采樣的情況,因此不再將隨機森林作為基分類器.
BS-Stacking 算法
輸入訓練集數(shù)據(jù)Dn×m={(x1,y1),(x2,y2),···,(xn,yn)};
基分類器BM1, BM2,···, BMT;
次級學習算法MM;
參數(shù)如下:
MS 表示最大樣本采樣比例(maximum sample)∈(0,1];
MF 表示最大屬性采樣比例(maximum feature)∈(0,1];
S表示基分類器副本數(shù)量;
過程如下:
輸出
第1 行計算了在采樣過程中樣本子集的樣本數(shù)和屬性數(shù),當MF 和MS 都取1 時,BSStacking 退化成經(jīng)典的Stacking 算法.
第2~7 行實現(xiàn)了對樣本的隨機采樣并訓練基分類器的副本.
第9~16 行完成了在基分類器副本的預測結(jié)果中使用投票得到該樣本的預測過程,其結(jié)果可作為元分類器的訓練集.
第18 行是以基分類器的預測結(jié)果訓練元分類器,并得到最終訓練模型的過程.
BS-Stacking 對數(shù)據(jù)集做自助采樣并訓練對應基分類器的副本,當數(shù)據(jù)集的樣本數(shù)和維度過小時,都不利于對數(shù)據(jù)的采樣,所以BS-Stacking 更適合于數(shù)據(jù)集足夠大且數(shù)據(jù)維度夠高的情況.
本文目的是預測未來7 d(天)內(nèi)的流失用戶,這是一個二分類問題,即將當前用戶分為留存用戶和流失用戶.用戶是否流失可以通過分析用戶行為數(shù)據(jù)來確定.流失用戶由留存用戶轉(zhuǎn)化而來,但留存用戶通常不會突然變?yōu)榱魇в脩?對于大多數(shù)用戶來說,期間一般會有一個平滑的過渡過程,這個用戶群體可以稱為具有流失傾向的用戶.這3 個用戶群體在時間軸上的活動規(guī)律是不同的,表現(xiàn)為留存用戶有連續(xù)的活動記錄,有流失傾向的用戶一般正處于興趣衰退階段,活動頻率逐漸開始降低,直到不再活動、完全流失為止.基于這個特點,本文可以確定用戶的標簽,具體過程如下:
設(shè)p為某一時間節(jié)點,[1,q]區(qū)間為用戶活動區(qū)間,[p+1,p+7]為標簽區(qū)間.在用戶活動區(qū)間內(nèi)注冊的用戶集合為R,在標簽區(qū)間內(nèi)所有存在活動記錄的用戶集合為A,則用戶類別標簽的計算公式為
即根據(jù)某一個時間節(jié)點T開始至此后7 d 內(nèi)用戶有無活動記錄來確定用戶是否為流失用戶,若在活動區(qū)間內(nèi)注冊的用戶在標簽區(qū)間內(nèi)有活動記錄則該用戶為留存用戶;若無活動記錄,則該用戶記為流失用戶.
2.2.1 數(shù)據(jù)集描述
本文選用的數(shù)據(jù)集來源于國內(nèi)某視頻APP 公司.數(shù)據(jù)為用戶行為數(shù)據(jù),由4 個日志文件構(gòu)成,其數(shù)據(jù)描述和字段信息如表1所示.
表1 實驗所用的數(shù)據(jù)集文件Table 1 Dataset used in the experiment
數(shù)據(jù)集共包含30 d 的用戶數(shù)據(jù),不包括在開始時間節(jié)點之前注冊的用戶.日期按照1~30 進行編碼,所有屬性類型均為數(shù)值型.注冊方式有手機號注冊、微信注冊、微博注冊等;注冊設(shè)備有手機、電腦、平板電腦等;活動類型有點贊、評論、轉(zhuǎn)發(fā)等.
2.2.2 數(shù)據(jù)集擴充
數(shù)據(jù)集為一個月內(nèi)所有用戶的行為數(shù)據(jù),共51 709 條.利用2.1 節(jié)中的規(guī)則判斷用戶標簽,第24~30 d 的數(shù)據(jù)無法判斷是否流失,因此可用的數(shù)據(jù)為1~23 d,樣本數(shù)量為37 456 條.可采用類滑動窗口的方法來增加數(shù)據(jù)量,具體過程如圖3所示.
圖3 窗口滑動過程Figure 3 Window sliding process
下面以滑窗1 為例說明類別標簽判定過程.設(shè)置滑窗1 的窗寬為7,區(qū)間為1~7 d,標簽區(qū)間為8~14 d.在滑窗區(qū)間內(nèi)注冊的用戶如果在標簽區(qū)間內(nèi)有活動記錄,則該用記為活躍用戶;每一個滑窗都是一個單獨的特征構(gòu)造過程,互不影響.滑窗4 的區(qū)間為1~23 d,標簽區(qū)間為23~30 d.經(jīng)過滑窗處理后,總的數(shù)據(jù)集數(shù)據(jù)量為4 個滑窗的數(shù)據(jù)量之和,相比于滑窗處理前,數(shù)據(jù)量增加至94 059 條.
初始窗寬和滑動步長可以有多種選擇,但是滑動步長不宜太大或太小:太大會導致滑動次數(shù)減少,數(shù)據(jù)量得不到有效擴充;滑動步長太小會導致滑動過密,數(shù)據(jù)之間的區(qū)分度變小,影響最后的預測準確率.
2.2.3 特征提取
特征提取階段的主要原則是所提取的特征要有實際含義.特征提取的主要方式有以下3 點:
1)用戶活動時間間隔,包括應用啟動時間間隔、互動時間間隔、視頻上傳時間間隔等;
2)用戶最后一次活動(應用啟動、視頻上傳、互動點贊、轉(zhuǎn)發(fā)等)與當前時間節(jié)點的差值;
3)用戶的注冊時間是否在周末.
從直觀上來說,用戶的活動間隔是描述用戶活躍程度的最好特征,活動間隔越大表示用戶越不活躍,流失的可能性越大;相反,用戶的活動間隔越小則表示用戶活動頻繁,流失可能性較小.考慮到用戶的活動具有一定黏性,所以用戶最后一次活動時間與當前時間的差值可以用來描述用戶活動的黏性,差值越大說明黏性越小,用戶再次活動的可能性也越小;反之,則很有可能會再次活動.經(jīng)過對數(shù)據(jù)的統(tǒng)計發(fā)現(xiàn),在周末注冊的用戶比在工作日注冊的用戶平均每天少活動34.9 次,可見用戶的注冊時間與用戶的活躍程度有一定的相關(guān)性.
特征選擇的主要目的是過濾冗余特征、構(gòu)造效率更高且消耗更低的預測模型[10].本文采用方差過濾的方式進行特征選擇,提前過濾方差較小的特征.方差對于特征的取值范圍比較敏感,因此在進行特征選擇之前需要對數(shù)據(jù)進行歸一化,將數(shù)據(jù)統(tǒng)一映射到[0,1]區(qū)間上.數(shù)據(jù)歸一化x?和方差s2的計算公式分別為
式中,M為樣本平均數(shù),n為樣本數(shù)量.
本文旨在用戶群體中準確識別有流失傾向的用戶,預測用戶是流失用戶還是留存用戶是一個典型的二分類問題.二分類問題的混淆矩陣如表2所示.
表2 分類結(jié)果混淆矩陣Table 2 Confusion matrix of classification results
實驗中,模型結(jié)果采用準確率、查準率、查全率和流失用戶的F1 值作為評價指標.準確率是模型預測正確的樣本數(shù)量與所有樣本數(shù)量的比值;在流失預測模型中,與留存用戶相比,本文更加關(guān)注流失用戶,因此查全率是一個重要的指標.但是如果只關(guān)注查全率而不關(guān)注查準率有可能會使模型的結(jié)果變得虛高.一般來說,查準率和查全率是一對相互矛盾的量,若一個升高,則另一個就會下降.F1 值是P和R的調(diào)和平均值[17],可以更全面地評價模型的效果.
準確率A定義為
查全率(召回率)R定義為
查準率(精確率)P定義為
F1 值定義為
本次實驗使用的數(shù)據(jù)是用戶一個月的行為數(shù)據(jù).特征構(gòu)造后共產(chǎn)生174 維特征,樣本數(shù)量為94 059 條.采用過濾式的低方差篩選方式進行特征選擇,方差閾值設(shè)置為0.001,低于閾值的特征將被刪除.特征選擇后數(shù)據(jù)降為104 維.同時,將數(shù)據(jù)集按2∶1 的比例隨機切分為訓練集和驗證集,用來驗證模型的分類效果.
合適的參數(shù)值選擇會使得模型具有更高的分類準確率.BS-Stacking 有3 個超參數(shù),分別為最大樣本采樣比例MS、最大特征采樣比例MF 以及基分類器副本數(shù)量S.調(diào)參方法采用GridSearchCV(網(wǎng)格調(diào)參法),交叉驗證為5 折.網(wǎng)格調(diào)參會重復構(gòu)建模型,以確定合適的模型參數(shù).因此,當參數(shù)候選值過多或數(shù)據(jù)量大時,網(wǎng)格調(diào)參往往效率不高.在BS-Stacking 模型中,MS 和MF 有固定的取值范圍(0,1],而基分類器副本數(shù)量S的取值范圍較大,3 個參數(shù)同時用網(wǎng)格調(diào)參會使得調(diào)參過程非常緩慢.為了避免這種情況,將調(diào)參過程分為兩步:
步驟1固定S的值,找到使BS-Stacking 具有最高分類準確率時的MF 和MS 的取值;
步驟2固定MF 和MS 的值,比較S取不同值時模型的分類準確率.S取分類正確率最高時的值.
這種方法的優(yōu)點是可以加快參數(shù)搜索過程,快速得到合適參數(shù)值;缺點是找到的參數(shù)組合是局部最優(yōu)組合,而不是全局最優(yōu)組合.
在步驟1 中,將S的初始值設(shè)置為21(奇數(shù)是為了防止在投票過程中出現(xiàn)流失與非流失票數(shù)相同的情況).MS 和MF 的取值范圍均為0.1~0.9,每次增加0.1.此時的模型最優(yōu)參數(shù)如下:MS 取值為0.1,MF取值為0.3,S取值為21.
在步驟2 中,固定MS 和MF,S取值范圍定為3~60,每次增加2 個分類器副本,使用網(wǎng)格搜索尋找最佳S的值.當給定最大樣本和最大特征取樣比例時,模型正確率隨基分類器副本數(shù)量變化的折線圖如圖4所示.前期副本數(shù)量較少時模型的正確率不高,隨著副本數(shù)量的增加,模型的正確率也隨之增加;當副本數(shù)達到27 時,模型的分類正確率達到最高;隨后副本數(shù)量增加,基分類器對數(shù)據(jù)的采樣逐漸接近于樣本全集,模型的正確率趨于平衡.
經(jīng)過網(wǎng)格調(diào)參后,BS-Stacking 在預測流失用戶中最優(yōu)的超參數(shù)如下:MS 取值為0.1,MF 取值為0.3,S取值為27,準確率為0.812.
圖4 基分類器副本數(shù)量與分類正確率的變化Figure 4 Trend of classification accuracy with number of base classifier’s copies
集成學習的目的是通過一定的策略集合各個分類器的優(yōu)勢,達到博采眾長、提高分類效率的目的,因此集成后的分類效果應好于單個基分類器的分類效果,否則就是沒有意義的集成.本節(jié)將比較BS-Stacking、經(jīng)典Stacking 以及所有基分類器、決策樹、隨機森林、聚類方法、神經(jīng)網(wǎng)絡(luò)在驗證集上的表現(xiàn),比較指標為2.4 節(jié)中的準確率、查準率、查全率和流失用戶的F1值.
表3給出了各個分類模型的得分.其中經(jīng)典Stacking 集成方法在測試集中的得分比其最好的基分類器在F1度量上差0.3%,可見集成后分類效果沒有提升,造成這種情況的一種可能是:基分類在訓練集中對某些相同的樣本均分類錯誤,使元分類器在錯誤的數(shù)據(jù)中訓練,從而導致最后樣本的分類錯誤.實驗結(jié)果表明,BS-Stacking 具有較高的分類準確率及流失用戶的F1值得分.在基分類器中,Logistic Regression、SVC 和AdaBoost 具有相近的得分,其中得分最高的為Logistic Regression.BS-Stacking 與Logistic Regression 相比,F(xiàn)1值提高0.8%,準確率提高0.2%;與經(jīng)典Stacking 相比,F(xiàn)1值提高1.1%,準確率提高0.4%;與LSTM 相比,F(xiàn)1值提高0.5%,準確率提高0.4%.BS-Stacking 具有最高的準確率、查準率和F1值,具有最高召回率的是Native Bayes 模型和K-Means 模型,但是這兩個模型的查準率遠低于其他模型.
表3 分類結(jié)果比較Table 3 Comparison of classification results
本文針對互聯(lián)網(wǎng)行業(yè)的用戶流失預測問題,提出了一種基于自助采法的Stacking 集成學習方法(BS-Stacking).在數(shù)據(jù)預處理方面,首先利用類滑窗的方式進行數(shù)據(jù)的擴充,每次滑動都從3 個方面對用戶的行為數(shù)據(jù)進行特征提取,刪除方差較小的特征項之后將其他特征作為模型的輸入數(shù)據(jù).在模型方面,對數(shù)據(jù)集進行多次的自助采樣并加入屬性擾動得到多個數(shù)據(jù)集的子集,使用得到的樣本子集訓練基分類器的副本,基分類器的最終分類結(jié)果由所有的基分類器的副本投票決定.最后將該方法與其他機器學習算法進行比較.
實驗結(jié)果表明BS-Stacking 的流失用戶預測能力優(yōu)于其他模型,同時也說明針對流失用戶的特征提取方法是有效的,從而為企業(yè)提前預測流失用戶、制定用戶留存策略、挽回用戶流失提供了新的思路.