透過機器學習預測「電信業」顧客流失率 —揭秘機器學習建模與不平衡資料集處理實戰(附Python程式碼)

徐佳靖
Marketingdatascience
Oct 12, 2021

此為系列文第二篇文

點此回顧-透過機器學習預測「電信業」顧客流失率 — 基礎概況分析(附Python程式碼)

前情提要

在透過<機器學習預測「電信業」顧客流失率 — 基礎概況分析(附Python程式碼)>一文中,我們透過之前電信業499之亂背景,跟大家介紹電信產業的背景和特性,也帶大家了解模型建立當中的資料前處理,包含原始資料的模樣、透過敘述性統計和探索性分析大致了解各個變數之間的關係。在系列1文章的最後,我們也初步的替大家統整出在電信業中會流失的客戶特性,包含:年輕人、大約一年就會流失、簽署的合約多為一月一期、月費高

接下來,我們將運用進階的資料處理技巧以建構不同的機器學習模型,建模流程如圖一所示。下方也附上Python程式碼,供大家參考。

本文章資料與程式碼可見本處。

圖一、模型建立步驟

資料前處理

特徵處理

由於機器學習通常只能處理數值性質的資料來去預測我們想要的目標變數。因此,需要檢查我們的資料,將類別變項的資料做轉換,也就是將類別變數(categorical variable)轉變為二元變數(dummy variable)的形式。資料當中的20個特徵其中有幾個是類別變數,以性別(Gender)為例子,由於這是一個類別變數,因此在訓練模型與分析之前要先做好轉換,也就是將客戶性別欄位中的Female與Male轉變成1跟0,如圖二所示,以利後續能夠順利進行模型訓練與分析。

圖二、虛擬變數轉換

資料切分

為了後續要評估各個模型好壞,因此不能將資料全部拿來做訓練,必須要保留一些當作測試資料(Testing Data)來評估模型表現,這些資料必須跟訓練資料是完全不同的,否則就有作弊的嫌疑,如同在考試前就先拿到考題的話,這樣就算出來的成績很高,也並不能代表這個學生真的很了解這個科目,對於機器來說也是一樣的道理。

所以最簡單的方式,會將資料切分成測試集跟訓練集,通常會保留比較多當作訓練資料(60%~80%),其餘作為測試資料,而我們前處理過後總資料數為7032筆,切分過後取80%當作訓練集共有5625筆,取20%當作測試集共有1407筆,資料切分結果如圖三所示。

圖三、資料切分結果

資料不平衡

問題簡介

資料不平衡的問題來自於樣本先天分布的傾斜性,以本篇電信流失率的案例為例,在資料母體中流失的顧客比未流失的顧客多,如圖四所示,客戶流失的比率為26.6%,明顯低於客戶未流失73.4%,所以在抽取樣本後也會得到同樣的結果。但在這個案例中,我們主要想討論的目標就是這些流失的顧客為什麼會流失,也就是這些樣本中數量較少的部分,這就衍生出了資料不平衡的問題。

圖四、客戶是否流失比例

解決方法

針對不平衡資料集解決方法主要分為三個方面,第一種方案主要從資料的角度出發,主要方法為抽樣,既然我們的樣本是不平衡的,那麼可以通過某種策略進行抽樣,從而讓我們的資料相對均衡一些;第二種方案是從演算法的角度出發,考慮不同錯誤分類情況代價的差異性對演算法進行優化,使我們的演算法在不平衡資料下也能有較好的效果;第三種方案是對特徵進行篩選,因為不平衡問題常常伴隨著特徵屬性分布失衡,從而導致特徵所包含的訊息不均衡,這個方法可以從特徵集中選出有代表性的特徵,有效區分資料集中的各個類別。

1.隨機過取樣(Random oversampling)

如圖五所示,從少數類樣本(本案例中為流失的客戶)中隨機抽樣,再將這些隨機抽樣的少數類樣本複製並新增到資料集中。但這樣複製的方法會衍生出一個問題,隨機過取樣後的資料集中會反覆出現一些相同的樣本,導致模型產生過擬合。所以使用過取樣方法來解決不平衡問題時,應適當的應用交叉驗證來確保模型預測的可信度。

圖五、過取樣流程圖

2.Smote

這個方法為隨機過取樣的改進版本,可以解決隨機過取樣中的過擬合問題。以圖六為例,如果紅色星代表的是某一少數類樣本,我們設定K值為5,也就是KNN中代表鄰近樣本的數值,隨機選取紅色星星周圍的其中一個黑色星作為輔助樣本,合成出新的樣本,重複這個動作直到兩個類別的樣本點相同。

圖六、SMOTE合成樣本原理

3.隨機欠取樣(Random undersampling)

隨機欠取樣的概念和過取樣相反,這個方法是將多數類樣本刪除。如圖七欠取樣流程圖所示,隨機欠取樣透過隨機取樣的方式抽出多數類樣本並將之刪除,直到少數類樣本和多數類樣本的比例相同。但由於刪除了樣本,即有可能將重要的資訊刪除,導致模型訓練出來的效果不好,產生過擬合的問題。

圖七、欠取樣流程圖

筆者帶大家認識了幾種資料不平衡方法後,大家認為哪種方法比較可以提升資料分類的準確度呢?

4.資料不平衡處理與未處理之結果比較

在本篇案例中,我們進行資料不平衡處理後,發現未處理(未增加或減少樣本)的準確度勝於其他處理方法(見圖八)。出現這個情況,可能是因為在分類是否為流失客戶時,客戶的特徵,例如:月費、合約月數和是否使用網路安全服務等與流失率有高度相關的重要變數,已經可以讓我們清楚的分類。所以,透過未對樣本加工的機器學習過程即可解決不平衡的問題。同時,這也意味著過取樣或欠取樣一定對最終的預測結果有絕對性的幫助,最好的方法依然是以資料及模型來驗證最終的結果。

圖八、資料不平衡處理與未處理之準確度比較

使用機器學習預測客戶是否流失真的能夠為企業帶來獲利嗎?

下一篇為完結篇,將為各位讀者呈現其他模型訓鍊(KNN、SVM、決策樹和隨機森林)的成果與比較,來探討哪一種模型在預測客戶流失率上能夠更加精準,減少企業在挽留顧客上的成本,並在最後計算出使用機器學習模型預測與未使用之下的利潤差異,以利企業在未來遇到類似情況時可以採用,大家敬請期待!

各位讀者們,我們完結篇見囉~
如果喜歡我的文章,請為我拍拍手!!讓我們更有動力往完結篇努力~

作者:張家穎、徐佳靖、林蔚恩(臺灣行銷研究特邀作者)、鍾皓軒(臺灣行銷研究創辦人)

資料來源:

  1. Kaggle-CUSTOMER CHURN PREDICTION
  2. Kaggle-Telecom Churn Prediction
  3. Kaggle-Telco Customer Churn — Neural Net.

參考資料:

  1. 資料不平衡問題總結

— — — — — — — — — — — — — — — —

◆◆◆ TMR最強新書與新課報到,火熱預購倒數中◆◆◆

【最強行銷武器 — 整合行銷研究與資料科學】

特惠價格: $458(原價:$580) 79折特惠中

💡 點此連結立即預購

【Python輿情應用趣:顧客樣貌分析攻略】

募資優惠價:$1,988(原價:$2,388)

募資期間:9/16(四) ~10/15(五),把握好機會呦~

💡 點此連結,購課詳情輕鬆看

— — — — — — — — — — — — — — — —

往後的文章都會持續在行銷資料科學粉絲專頁上發表喔,喜歡我們就趕緊追蹤吧!

同時再請大家多多follow我們的FB粉絲專頁,我們會在粉專上即時公布最新資訊,讓您重要消息不漏接!

FB粉絲專頁:行銷資料科學

官網:臺灣行銷研究

歡迎加入我們的Telegram獲取即時訊息!

歡迎加入我們的Line@獲取即時訊息!

--

--