weka 數據分析 telecom 客戶流失 機器學習

機器學習模型之研究 - 以電信業者為例

莊興旺 2019/02/14 19:25:45
604

機器學習模型之研究 - 以電信業者為例


簡介

對電信業者來說,"人要進得來,而且不能轉出去",是最重要的事情之一。在這顧客忠誠度普遍不高的通訊市場,如何避免碗內的蛋糕,被競爭對手挖走,是各大電信老總傷透腦筋的問題。透過"數據分析"的方法,讓我們抓出變了心的女友(顧客)。

作者

莊興旺


研究目的

研究背景和動機

台灣2018 年第 2 季,電信業者行動通訊用戶數排名:

中華電信  1,051.8 萬
台灣大哥大 722.8 萬
遠傳電信 714.1 萬
 
對競爭激烈的電信公司來說,如何避免客戶流失,一直是持續研究的議題。
各家電信,往往會分析現有的數據,建立合適的統計模型,預測可能流失的客戶。
針對潛在流失的客戶,提出促銷方案或慰留計畫。
 

擷取、轉換和載入 (ETL)

資料概述

本次數據分析的資料,來自於 Kaggle 平台, 紀錄 7043 位客戶,上個月的資料,共 7043 筆。
 
資料集包含的信息,共 21 個欄位
第一個欄位為 customerID
背景資訊:依序分成 5 個欄位, gender, ... , tenure
註冊服務:依序分成 9 個欄位, PhoneService, ... ,StreamingMovies
帳戶信息:依序分成 5 個欄位, Contract, ... , TotalCharges
最後一個欄位為 Churn,是目標預測欄位,標記上個月是否流失。
 

欄位意義

 

前處理

型態修正
原始資料是 csv,可透過 weka 載入,另存成 arff 專用檔。
weka 載入資料時,會根據欄位值,自動判斷欄位型態。
有時會判斷錯誤,需透過 Notepad++ 修正 @attribute 描述。
 
移除雜訊
每筆資料來源,往往會帶有 ID 欄位,此次分析欄位 customerID 不具意義,故將其移除。
透過 Notepad++ 規則運算式取代。
 
 

資料內容

原始資料
 
前處理後
 

資料視覺化

共 20 個分析欄位
Churn 欄位 :  No = 5174 (73%) , Yes = 1869(27%)
Correctly Classified Instances (正確分類) 至少要 > 73 %  (全猜 No)
 
 
 

數據分析

樣本分析

樣本是多變量, 預測的欄位 Churn,是類別型變數,故用分類方法。
事先區分因變量 Churn,故為監督式學習。
 

機器學習模型評估

採用下列模型比較
bayes.NaiveBayes
functions.SMO
trees.J48
trees.RandomForest
 
 
根據 "維基百科" 的說明
 
1. NaiveBayes (單純貝氏分類器)
在機器學習中,單純貝氏分類器是一系列以假設特徵之間強(樸素)獨立下運用貝葉斯定理為基礎的簡單機率分類器。
單純貝氏自20世紀50年代已廣泛研究。在20世紀60年代初就以另外一個名稱引入到文字資訊檢索界中,並仍然是文字分類的一種熱門(基準)方法,文字分類是以詞頻為特徵判斷檔案所屬類別或其他(如垃圾郵件、合法性、體育或政治等等)的問題。通過適當的預處理,它可以與這個領域更先進的方法(包括支援向量機)相競爭。它在自動醫療診斷中也有應用。
 
2. SMO (序列最小優化算法 / Sequential minimal optimization)
是一種用於解決支持向量機訓練過程中所產生優化問題的算法。SMO由微軟研究院的約翰·普萊特於1998年發明,目前被廣泛使用於SVM的訓練過程中,並在通行的SVM庫LIBSVM中得到實現。1998年,SMO算法發表在SVM研究領域內引起了轟動,因為先前可用的SVM訓練方法必須使用複雜的方法,並需要昂貴的第三方二次規劃工具。而SMO算法較好地避免了這一問題。
 
3. J48 (實現 C4.5決策樹算法 的 JAVA 開放原始碼)
C4.5算法是由Ross Quinlan開發的用於產生決策樹的算法。該算法是對Ross Quinlan之前開發的ID3算法的一個擴展。C4.5算法產生的決策樹可以被用作分類目的,因此該算法也可以用於統計分類。
C4.5算法與ID3算法一樣使用了信息熵的概念,並和ID3一樣通過學習數據來建立決策樹。
 
4. RandomForest (隨機森林)
在機器學習中,隨機森林是一個包含多個決策樹的分類器,並且其輸出的類別是由個別樹輸出的類別的眾數而定。 Leo Breiman和Adele Cutler發展出推論出隨機森林的演算法。而"Random Forests"是他們的商標。這個術語是1995年由貝爾實驗室的Tin Kam Ho所提出的隨機決策森林(random decision forests)而來的。這個方法則是結合Breimans的"Bootstrap aggregating"想法和Ho的"random subspace method" 以建造決策樹的集合。
 

輸出結果

評估階段:選擇分類器

Test options 使用所有樣本 7043筆,來做交叉驗證。

 
#1 NaiveBayes + Resample(0)
 
 
#2 SMO + Resample(0)
 
 
#3  J48 + Resample(0)
 
#4  RandomForest + Resample(0)
 
 
#5 NaiveBayes + Resample(1)
 
 
#6  SMO + Resample(1)
 
 
#7 J48 + Resample(1)
 
 
#8 RandomForest + Resample(1)
 
 
#9 RandomForest + Resample(10)
 

2 種正確率 (以 #8 RandomForest  為例分析)

(1) 正確分類(CCI, Correctly Classified Instances)
表示猜 No 和 Yes 時,猜對數佔總樣本的的比率為 91.35%
 
(2) Class=Yes, TP Rate
將實際要流失(Yes),當作不會流失(No)的情況比較嚴重
以 #8 的混淆矩陣為例,錯估的有 404 筆 (左下) 
Class= Yes (猜 Yes時),TP Rate = 0.784  表示猜對佔總 Yes的比率為 78.4%
Class= No (猜 No時),FP Rate = 0.216 表示猜錯(實際YES) 佔總 Yes 的比率為 21.6%
 
 
(1) 91.35% ,  (2) 78.4% 都可以視為正確率
 
後續做電信客戶流失預測
使用 Resample = 1 的情境下
預測1. 採用 (1) 正確率較高的模型 RandomForest
預測2. 採用 (2) 正確率較高的模型 NaiveBayes 
 
 

電信客戶流失預測

拆分樣本

測試樣本 (原樣本前 100筆)、訓練樣本 (6943筆)
線上工具 Weka Spreadsheet to ARFF  
 

錯誤排除

載入訓練 arff 檔,出現錯誤訊息
 
發現有11筆樣本的 TotalCharges 為空值
之前csv轉存arff 會自動轉成 '?' ,現在人工輸入 '?',便能載入成功。
 
 

預測1.  建立 RandomForest 預測模型

分類器採用 RandomForest,Resample 1 次
建立 RandomForest.model 檔案
Test options 選擇 Use training set (結果如下表)
在 Result list 右鍵點選 RandomForest > Save model
RandomForest   #4 正確分類 = 77.8929%,  TP Rate 46.7%
                        #8 正確分類 = 91.3531%,  TP Rate 78.4%
 

預測1. RandomForest 預測結果

步驟參考 (略)
 
預測 100筆測試資料
正確分類:78%  > 73 %  (全猜 No)
TP Rate :62.5%
 
 

預測2. 建立 NaiveBayes 預測模型

分類器採用 NaiveBayes ,Resample 1 次
建立 NaiveBayes.model 檔案
Test options 選擇 Use training set (結果如下表)
在 Result list 右鍵點選 NaiveBayes > Save model
 

預測2. NaiveBayes 預測結果

步驟參考 (略)
 
預測 100筆測試資料
正確分類:74%  > 73 %  (全猜 No)
TP Rate :87.5%
 

結論

本次研究報告從 4 個機器學習模型評估: NaiveBayes,   SMO,   J48,   RandomForest,
 
若預測目的是要正確分類,選擇 RandomForest,正確率 (Correctly Classified Instances ) 高達 78%;或許改用 SMO 會更好 - Resample 影響評估階段。
若預測目的是要避免客戶流失,請選擇 NaiveBayes,正確率 (Churn = Yes, TP Rate) 高達 87.5%。 
 
莊興旺