簡介
客戶流失/流失,是企業最重要的名額之一,因為擷取新客戶的成本通常高于保留現有客戶的成本。
事實上,根據一個 study by Bain & Company,随着時間的推移,現有客戶傾向于從公司購買更多産品,進而降低企業的營運成本,并可能将他們使用的産品推薦給其他人。例如,在金融服務領域,客戶保留率每增加 5%,利潤就會增加 25% 以上。
通過使用生存分析,公司不僅可以預測客戶是否可能停止開展業務,還可以預測該事件何時發生。
資料集
描述和概述
團隊想要使用的資料集包含以下功能:

從分類到數值
有幾個分類特征需要編碼為 one-hot 向量:
1. # 建立向量
2.
3. dtset = pd.get_dummies(rawdaset, columns=caegres)
4.
5. # 建立時間和事件列
6. timeolun = 'onth_tive
7. ent_clmn = 'chuned' (事件列)。
8.
9. # 提取特征
10. 特征 = np.setdiff1d(daaet.oums, [tie_olmn,] ).tolist()
探索性資料分析
在這裡,我們将隻檢查資料集是否包含 Null 值或是否有重複的行。然後,我們将看看特征相關性。
空值和重複
首先要做的是檢查 raw_dataset 是否包含 Null 值和重複的行。
1. # 檢查是否為空值
2. Null = sum(dtaet[feaues].isnull().sum())
3.
4. # 如果存在重複的資料,則将其删除
5. daast = datt.drop_duplicates(keep='first').reset_index(drop=True)
6.
7. # 資料集中的樣本數
8. N = det.shape[0] 。
事實證明,資料集沒有任何 Null 值或重複項。
相關性
讓我們計算和可視化特征之間的相關性
圖 1 - 相關性
模組化
構模組化型
為了稍後執行交叉驗證并評估模型的性能,讓我們将資料集拆分為訓練集和測試集。
1. # 建立訓練和測試集
2. dex_train, index_test = train_test_split( range(N), test_size = 0.35)
3.
4. # 建立X、T和E輸入
5. X_tain, Xtst = daa_ain[ftures], datts[fees]
6. T_tin, T_tst = daa_rain[ie_olumn], dta_est[tme_olumn]
7. E_tain, _tst = daa_tain[vent_cumn], dattet[evet_lumn]
注意:超參數的選擇是使用網格搜尋選擇獲得的。
- # 拟合模型
- cf.fit(_trai, T_tra, _tain, ax_eatrs='sqrt',
變量重要性
建立生存森林模型後,我們可以計算特征重要性:
- # 計算變量的重要性
- sf.vaialeipotanetle.head(5)
這是最重要的功能中的前 5 個。
由于功能的重要性,我們可以更好地了解是什麼推動了保留或流失。在這裡,會計和薪資管理産品、滿意度調查得分以及與客戶支援通話的時間都發揮着重要作用。
注意:重要性是擾動和未擾動錯誤率之間的預測誤差差異
交叉驗證
為了評估模型性能,我們之前将原始資料集拆分為訓練集和測試集,以便我們現在可以在測試集上計算其性能名額:
這C-index代表模型辨識能力的全局評估: 這是模型根據個體風險評分正确提供生存時間可靠排名的能力。一般來說,當 C-index 接近 1 時,模型具有近乎完美的判别力;但如果接近0.5,則沒有區分低風險和高風險對象的能力。
Brier score
這Brier score測量給定時間狀态和估計機率之間的平均差異。 是以,分數越低(通常低于 0.25),預測性能就越好。為了評估跨多個時間點的整體誤差測量,通常還計算綜合 Brier 分數 (IBS)。
圖 2 - 條件生存森林 - Brier 分數和預測誤差曲線
IBS 在整個模型時間軸上等于 0.13。這表明該模型将具有良好的預測能力。
預測
總體預測
既然我們已經建立了一個似乎可以提供出色性能的模型,讓我們比較每個時間 t 停止與 SaaS 公司開展業務的實際客戶數量和預測客戶數量的時間序列。
comroal(cf, X_tst, T_tst, E_tst
圖 3 - 條件生存森林 - 流失的客戶數量
該模型總體上提供了非常好的結果,因為在整個 12 個月的視窗中,它隻會産生約 5 個客戶的平均絕對誤差。
個人預測
讓我們計算在 所有時間 t 中保留客戶的機率。
首先,我們可以根據風險評分分布建構風險組。
- cree_rskups(oel=csf, X=X_test
圖 4 - 條件生存森林 - 風險組
在這裡,可以區分 3 個主要群體, 低風險、 中風險 和 高 風險群體。由于 C 指數較高,模型将能夠對每組随機單元的生存時間進行适當的排序。
讓我們随機選擇每組中的單個單元,并比較它們在所有時間 t 中保留客戶的機率。為了證明我們的觀點,我們将特意選擇經曆過事件的機關來可視化事件的實際時間。
圖 5 - 條件生存森林 - 預測個人保留客戶的機率
在這裡,我們可以看到該模型設法提供了對事件時間的出色預測。
結論
我們現在可以儲存我們的模型,以便将其投入生産并為未來的客戶評分。