賈承瑞
(海南大學管理學院,海南 海口 570228)
隨著信息技術的高速發展,客戶對產品或服務的信息獲取越來越充分,顧客的需求也因此更加多樣化。尤其伴隨著“互聯網+”的興起,客戶對產品有了更多的選擇,激烈的市場競爭,使得客戶流失已經成為許多企業不可避免的問題[1]。如何在眾多競爭者中脫穎而出,盡可能降低客戶的流失率,成為各大企業經營者必須思考的問題。
本研究以某酒店平臺的用戶數據為基礎,利用Python對數據進行挖掘和分析,首先利用傳統機器學習算法中Accuracy值最高的隨機森林算法找出影響酒店客戶是否流失最重要的10個因素;隨后利用該組影響因素將用戶分為11個群體,采用機器學習中的交叉驗證方法,每次抽取1組作為測試集,其余10組作為訓練集,從而計算每個群體中的預測流失率(pred_prob)和實際流失率(true_prob),對比兩者的差異得出誤差率(err_rate)。從而發現隨機森林算法在true_prob為極值和中間值時,預測效果較好;而在true_prob為10%~40%和60%~90%的群體中預測效果較差。使用Accuracy稍低的支持向量機算法重新計算該類中間群體后,卻有較好的預測效果。
本研究數據全部來自某酒店預定網站2016年5月15日~2016年5月21日一周內的網絡訂單用戶數據。為保護用戶隱私,數據經過脫敏處理,和實際商品的訂單量、瀏覽量、轉化率等有一些差距,但是不影響此研究的分析。影響因素包括酒店和用戶兩部分,主要有當前酒店歷史用戶轉化率(cr)、當前酒店可訂最低價格、24小時內是否訪問訂單填寫頁、用戶決策習慣、近7天用戶歷史訂單數、24小時內登陸時長、用戶消費能力指數、價格敏感指數等共計51項相關變量。數據清理后,有效數據共計24286條。
在進行數據建模前要對所有變量進行描述性分析。表1給出主要變量的解釋說明。在后續的建模分析中,本研究以均值加減3倍標準差作為識別異常值的標準,如果取值在這個范圍之外,被認為是異常值,在建模分析中予以刪除。

表1 流失用戶主要變量描述性分析結果
本研究的因變量是客戶是否流失,是一個典型的0—1變量。流失定義為,用戶在瀏覽酒店網頁后未產生訂單。而客戶是否流失在源數據的churn列已經給出了相應的判別值,0為流失,1為非流失。經過統計分析可知,該酒店平臺的流失率維持在50.06%左右,主要變量的描述性分析結果如表1。從表中可以初步得到,流失用戶在一年內的訂單/取消訂單數的標準差較大,決策習慣較不穩定。
隨機森林(Random Forest,RF)是一種基于Bagging的集成學習方法,可以用于分類和回歸問題。它由多個決策樹構成,樹的構建遵從CART 策略,并不進行剪枝[2]。
首先要將自變量中的字符串轉化成布爾邏輯值(0-1),并刪除掉一些無用的屬性。由于要將隨機森林算法與其他非概率型機器學習算法進行比較,所以在Python中使用StandardScaler函數將每個特征標準化為大約1.0到-1.0的范圍,來實現歸一化。
在構建模型時,調參是極為重要的一個步驟,只有選擇最佳的參數才能構建一個最優的模型。而參數的值可以通過交叉驗證的方法,逐個來驗證。我們將數據集隨機分為11組進行交叉驗證,將每一組都當做一次測試集,其余10組當做訓練集,這樣循環11次。通過傳入的模型,訓練11次,最后將11次結果求平均值。通過此種方法避免過擬合,同時為每個觀測數據集生成預測。
根據隨機森林算法中各特征值的信息增益率高低,對自變量的重要程度進行排序,可以得到排名前五的影響因素分別為commentnums、historyvisit_totalordernum、landhalfhours、hotelcr和iforderpv_24h。
準確率的定義是,對于給定的測試數據集,分類器正確分類的樣本數與總樣本數之比。也就是損失函數是0-1損失時測試數據集上的準確率。我們使用內置的scikit-learn函數來構建混淆矩陣。混淆矩陣是一種可視化分類器預測的方式,用一個表格來顯示特定類的預測分布。x軸表示每個觀察的真實類別,而y軸對應于模型預測的類別。
為了比較隨機森林在常用機器學習算法中的性能,引入LR、GB、SVM、KNN等模型進行性能比較。可以得到各算法的總體準確率分別為,LR 最低,為61.2%;GB、SVM和KNN算法的準確率分別為 70.7%、72.4%、80.4%;RF最高,為88.2%。
有時我們并不關心變量的值,而是關心變量的分布和變量之間的條件概率。隨機森林就是一種概率模型。一般來說,輸出概率要比輸出決策結果更有說服力。在Python中根據預測概率分布對源數據進行切分,生成11個組群體,分別計算各群體的預測流失率(pred_prob)和實際流失率(true_prob),對比兩者的差異得出誤差率(err_rate)。得到的概率分布情況如表2所示,可以明顯看出true_prob為極值和中間值時,預測效果較好,平均誤差率在1%以下;而在其余流失群體(true_prob為10%~40%或60%~90%)中預測效果較差,平均誤差率高達12.5%以上。由此說明,總體準確率最高的隨機森林算法,在特征群體預測中存在缺陷,對某些特定群體的預測誤差率很低,而對另外一些群體的誤差率很高,存在改進空間。

表2 特征群體的概率分布
從表2中可以明顯看出隨機森林模型的缺陷。為了對比不同機器學習模型的預測概率,在此部分引入一致性/標定度(Calibration)和區分度(Descrimination)的概念。
標定度的意思是,評價模型預測值的數值大小和實際事件發生概率的大小是否一致。假設我們這個模型已經能夠很好地區分開“酒店客戶流失”和“酒店客戶未流失”兩類,并且某名客戶恰好屬于“客戶流失”這一類,但是還想進一步分析,在這一類里,是不是模型的預測值越大,該客戶就越容易流失呢?由此定義,如果模型的預測值越大,真實發生概率越大的話,就表明標定度越好。即標定度的值越低,說明模型的特征群體誤差率越小。常用的衡量標準為擬合優度檢驗。
區分度的意思是,在模型的預測值上,能不能找到一個截點,把酒店客戶流失和酒店客戶未流失,這兩類客戶區分開來,如果模型區分的兩類客戶和真實情況越吻合,說明模型的區分度越高,最理想的狀態就是通過模型區分的“客戶是/否流失”的這兩組人=真實情況中“客戶是/否流失”的這兩組人,那么這個模型的區分度就是1。常用的衡量指標為ROC曲線下的面積(AUC值)。
從表3中可以看出,采用兩項指標進行重新評價后,可得隨機森林雖然在區分度值中仍具有優勢,但標定度卻為最低。而支持向量機模型(Support Vector Machine,SVM)在標定度中表現優異,僅有0.0016,說明將其用于某些特征群體中的預測可以取得較小的誤差率。

表3 不同算法指標得分
由上述結論分析,進一步嘗試使用RF-SVM混合模型。本文使用兩步預測法,先使用SVM算法進行第一次預測,然后使用RF算法進行特征值的降維進行第二次預測,從而進一步提升結果準確性。混合模型的ROC曲線下與坐標周圍成的面積(AUC值)得到進一步提升,即區分度值變大;總體預測的準確率也上升至92.3%。
客戶流失作為客戶生命周期管理的重要階段,一直是學術界和工業界的研究熱點。如何準確地預測客戶的流失傾向,已成為客戶管理關系研究的重要問題。準確率作為預測模型中最常用的評估度量指標之一,常常用來評價預測模型分類能力的優劣。而本研究發現單一的準確率評價指標不能準確說明某些特征群體的客戶趨向。
以某酒店平臺的用戶數據為基礎,利用Python對數據進行挖掘和分析,首先利用傳統機器學習算法中Accuracy值最高的隨機森林算法找出影響酒店客戶是否流失最重要的10個因素;隨后利用該組影響因素將用戶分為11個群體,采用機器學習中的交叉驗證方法,每次抽取1組作為測試集,其余10組作為訓練集,從而計算每個群體中的預測流失率(pred_prob)和實際流失率(true_prob),對比兩者的差異得出誤差率(err_rate)。從而發現隨機森林算法在true_prob為極值和中間值時,預測效果較好;而在true_prob為10%~40%和60%~90%的群體中預測效果較差。而通過Calibration和Descrimination的兩項指標進行進一步測評,Accuracy稍低的支持向量機卻具有最高的Calibration值,說明中間群體使用SVM算法會具有更好地預測效果。最后,結合RF和SVM算法在Python中構建出兩步綜合模型,將預測準確率進一步提升至92.3%。
本研究仍存在繼續探討的空間:①本文僅基于某酒店平臺的用戶數據分析了RF算法的缺陷,而該缺陷是否具有普遍性,是否同樣存在于其他領域用戶流失的預測中,有待進一步驗證;②本次研究對用戶數據中的日期類特征值進行了刪除,實際情況中,酒店的預訂率很大程度上會受到節假日、工作日等特定日期的影響,包含日期的酒店用戶數據流失分析有待進一步探討;③用戶數據的特征值可以用主成分分析法進行降維,能否構建出特征值之間的線性表達式,從而進一步解釋影響酒店客戶流失的原因;④RF和SVM算法是否存在其他的融合方法,從而進一步提高預測的準確率。