0 前言
隨著移動互聯網時代的到來,在移動通信市場上,內部而言,各家運營商之間的產品優勢相對有限;外部而言,運營商面臨互聯網企業的沖擊,對單個用戶價值的開發使得競爭更加激烈。在存量用戶十分有限的情況下,對于運營商而言,維護高價值老客戶的投入比開發新用戶的投入更能有效節省企業成本開支。電信客戶離網分析相關研究已經開展了很多年,從早期利用數據庫進行OLAP分析,到使用數據挖掘算法進行用戶離網預測。針對離網傾向的用戶實施客戶挽留,展開維系與關懷,以利于電信企業客戶的保持,對增強電信企業的綜合競爭力具有重要意義[5-6]。本文介紹了使用近年來機器學習中的流行算法來分析潛在離網用戶的方法,和早期研究使用的邏輯回歸、決策樹[2]、SVM等方法相比,XGBOOST適用于二分類問題,并具有很好泛化能力。
1 數據挖掘流程
采用機器學習的方法進行數據挖掘,一般流程如圖1所示。

其中程序開發涵蓋算法選擇、算法實現和模型輸出。由于目前很多算法已經實現了功能模塊化,因此,這部分算法可以通過直接調用現成API[3]或者安裝功能模塊來實現。
2 用戶離網預測問題
在預測離網客戶的分析中,通常有幾個關鍵步驟:問題定義、算法選擇、數據準備、結果評估、反饋修正。
問題定義:在電信企業實際業務中,對客戶離網理解最深入的是該領域的專家,因此對客戶流失的重要因素的判定具有指導意義。相關理解應包括,定義什么是離網,離網用戶類型有哪些(高價值用戶還是普通用戶),離網有哪些形式(是主動流失,例如由于客戶不滿意當前服務或競爭對手提供了更優質服務而主動停止當前服務,進行轉網、退網,還是被動流失,例如學生客戶畢業異地工作,或客戶職業升遷異地調動的原因),離網分析通常更關注高價值用戶的主動流失,他們是電信企業利潤的重要來源。
算法選擇:確定好問題以后,對離網用戶的分析是根據準備使用的算法來進行建模的,需要確定原始數據集的來源,以及使用潛在離網用戶的哪些相關屬性。同時,原始數據集通常也被拆分為2個部分,一部分是訓練集,用作構造算法模型,另一部分是測試集,用于評估分類算法通過學習生成的模型是否合理。兩者的拆分通常是按照1∶1的比例,也可以根據業務分析專家的判斷進行比例的調整。
數據輸入:據統計,電信企業平均每月有97.5%的在網客戶,以及2.5%的離網客戶,因此原始數據集存在嚴重的比例不平衡。另外,電信企業一個地(市)的用戶數據就達到幾十萬甚至上百萬,如果對所有數據進行訓練,時間上很難滿足要求。并且,原始數據集由于來源于電信企業的不同領域和部門,許多比較重要的屬性值存在缺失和錯誤,降低了對潛在用戶離網的預測精度。同時,要進行用戶離網預測,需要將能收集到的用戶相關屬性組織成一張表,稱為數據聚集,新生成的表稱為數據寬表,例如將用戶基本信息、持有終端信息和月消費信息整合為一張寬表。
效果評估:算法輸出的模型用于測試樣本集時,混淆矩陣約定:TP(True Positive)指真實為1,預測也為1;FN(False Negative)指真實為0,預測為1;FP(False Positive)指真實為1,預測為0;TN(True Negative)指真實為0,預測也為0,則模型效果可通過以下各項指標反映[4]。
準確率 P = TP/(TP+FP) (1)
召回率 R = TP/(TP+FN) (2)
F1-score = 2×P×R/(P+R) (3)
3個指標用于綜合評估模型效果優劣。
模型輸出:通過指標的綜合評定,確定使用或保留何種機器學習算法,保存訓練模型以供調用。
3 機器學習算法
機器學習從無序的數據中挖掘有用的信息,狹義的指計算機“學習算法”的一門學問。關鍵術語包括:特征(也稱為屬性)、標識(標簽)、任務(分類或聚類、回歸)、訓練樣本集、測試樣本集等。開發機器學習應用程序的基本步驟通常包括[1]:收集數據、標準化輸入數據、分析輸入數據、訓練模型、測試驗證、實際應用。機器學習的目的就是給定輸入x,得到預測值,并希望預測值與真實值y之間的誤差盡可能的小。下面介紹機器學習的4個經典挖掘算法。
3.1 邏輯回歸
相對于線性回歸處理因變量是連續變量,邏輯回歸能更好地適用于因變量是分類變量的回歸問題,常見的就是二分類問題。邏輯回歸的因變量和自變量之間通常采用Sigmoid函數來描述:
(4)
它是一個S形的曲線(見圖3)。

3.3 支持向量機(SVM)分類算法與核函數
SVM是機器學習中的有監督線性分類算法,最初正式發表于1995年。SVM應用在文本分類尤其是針對二分類任務顯示出卓越的性能,因此得到了廣泛的研究和應用,后期在多分類任務也進行了專門推廣。SVM通過向高維度空間映射來解決多維線性不可分問題,使樣本線性可分。如圖5所示,可將一維不可分問題轉化為二維可分問題[7]。核函數選擇是SVM中性能差別的最大原因。核函數選擇不合適,意味著樣本被映射到了不合適的特征空間,很可能導致性能不佳。
3.4 XGBoost
XGBoost(eXtreme Gradient Boosting)采用了回歸樹和集成Boosting 2種技術。在數據建模中,當我們有數個連續值特征時,經常采用Boosting分類器將成百上千個分類準確率較低的樹模型組合起來,形成一個準確率很高的預測模型。XGB可以理解為多個樹的并行預測,并將預測分值相加用于類別判斷。這個樹模型經過不斷地迭代,在每次迭代就生成一棵新的樹,從而使預測值不斷逼近真實值(即進一步最小化目標函數)。
XGBoost的并行樹如圖6所示,以樣本1為例,預測得分為:Tree1.樣本1.得分(2)+ Tree2.樣本1.得分(0.9)=2.9,相比于樣本2的-0.8,樣本3的-0.1,樣本4、5的-1.9,具有更大的預測概率。注意到,由于XGBoost出眾的效率與較高的預測準確度在機器學習領域引起了廣泛關注。

為了增加模型的有效性,可以通過單個算法的測試以及融合多個算法的測試,例如可以在實踐應用時,第1次采用邏輯回歸算法建模和預測,第2次采用決策樹算法,第3次采用XGBoost算法,第4次采用將邏輯回歸和XGBoost算法的結果合并的預測方法。采用XGBoost算法建模的實驗偽代碼如下。
第1步:
#導入xgboost模塊:
import xgboost as xgb
第2步:
#讀取訓練屬性,為建模準備輸入數據:用戶離網預測是一個典型的有監督分類問題。因此需要讀入訓練特征,以及目標標識:
feature_file_name = "train.feat"
target_file_name = "train.target"
feature_file = open(feature_file_name,'rt')
target_file = open(target_file_name,'rt')
#準備矩陣型訓練數據:
#讀寫樣本特征,生成訓練矩陣training_matrix和目標列表target_list。
第3步:
#生成訓練模型,在測試集上驗證并調參。
param = {'booster':'gbtree','objective':'binary:logistic','eval_metric':'auc','max_depth':5,'min_child_weight':1,'subsample':0.9,'lambda':10,'gamma':0.0,'eta':0.3,'silent':1 }
num_round = 100
dtrain=xgb.DMatrix(training_matrix,label=target_list)
bst = xgb.train(param,dtrain,num_round)
bst.save_model('model.xgb')
第4步:
#使用及應用。將生成的xgb模型用于需要生成標簽的樣本集。
#加載樣本屬性數據
#加載訓練模型數據
bst = xgb.Booster({'nthread':4})
bst.load_model("model.xgb")
#預測
dtest = xgb.DMatrix(trainingMatrix)
y_pred = bst.predict(dtest)
result_list = (y_pred ≥ 0.5) × 1
#結果寫入文件
result_file = open(result_file_name,'wt')
for index in range(len(y_pred)):
result_file.write('%s/t%d/n'%(uid_list[index],result_list[index]))
result_file.close()
第5步:
#如果采用多算法融合,例如除XGBoost之外同時采用邏輯回歸的判決概率,可將XGBoost輸出判決概率和邏輯回歸輸出判決概率取均值,作為最終判決依據。
bst = xgb.Booster({'nthread':4})
bst.load_model("model.xgb")
pred_leaves = bst.predict(xgb.DMatrix(test_matrix),pred_leaf=True)
tree_node_enc = OneHotEncoder()
lr_model = LogisticRegression()
……
transformed_feature = tree_node_enc.transform(pred_leaves).toarray()
y_pred = lr_model.predict_proba(transformed_feature)[:,1]
result_list = (y_pred ≥ 0.5) × 1
5 總結
使用機器學習來預測用戶離網,是大數據相關技術在電信企業的一個典型應用[8-11]。機器學習在現代的應用已經相當廣泛,用戶可以不必再開發最原始的算法代碼,而是直接安裝、調用現成的模塊或者API。電信企業的數據資產是寶貴的礦藏,通過數據挖掘,無論是用于提升企業內部運營效率,還是和外部合作進行行業應用支撐,都將是一筆非常可觀的財富。
參考文獻:
[1] HARRINGTON P.機器學習實戰[M].李銳,李鵬,曲亞東,等,譯.北京:人民郵電出版社,2013
[2] 王凱. 數據挖掘在移動離網用戶分析模型中的研究與應用[D]. 鄭州:鄭州大學,2014.
[3] 陳康,向勇,喻超.大數據時代機器學習的新趨勢[J].電信科學,2012,28(12):88-95.
[4] 周志華,王玨. 機器學習及其應用[M]. 北京:清華大學出版社,2009.
[5] HASSOUNA M,TARHINI A,ELYAS T,et al. Customer Churn in Mobile Markets A Comparison of Techniques[J]. International Business Research,2015,8(6):224-237.
[6] SINGH I,SINGH S. Framework for Targeting High Value Customers and Potential Churn Customers in Telecom using Big Data Analytics[J]. International Journal of Education & Management Engineering,2017,7(1):36-45.
[7] DONG R,SU F,YANG S,et al. Customer Churn Analysis for Telecom Operators Based on SVM[C]// International Conference On Signal And Information Processing,Networking And Computers. Springer,Singapore,2017:327-333.
[8] 張婧姣. 電信社會網絡離網用戶預測及分析[D]. 北京:北京郵電大學,2017.
[9] 陳曄. 基于組合預測的電信客戶流失預測分析[D].長沙:湖南大學,2011.
[10] 楊曉峰,嚴建峰,劉曉升,等.深度隨機森林在離網預測中的應用[J].計算機科學,2016,43(6):208-213.
[11] 趙慧,劉穎慧,崔羽飛,等.機器學習在運營商用戶流失預警中的運用[J].信息通信技術,2018,12(1):14-21.