1. 数据准备与研究对象

原始数据来自 IBM Telco Customer Churn,共包含 7043 条客户记录。分析中将 tenure 定义为客户留存月份,将 churn=1 定义为客户流失事件。 未流失客户被视为右删失样本,即只知道这些客户至少已经留存到当前月份。

为了让事件发生更充分,建模对象限定为月付合约且订阅互联网服务的客户。 筛选后共有 3351 条记录,其中未流失客户 1795 人、已流失客户 1556 人。 已流失客户平均留存时间为 14.60 个月,低于未流失客户的 23.62 个月; 已流失客户平均月费为 76.38,高于未流失客户的 71.17,说明高月费客户可能更容易提前流失。

silver_df = (
    bronze_df
    .withColumn("churn", when(col("churnString") == "Yes", 1.0).otherwise(0.0))
    .drop("churnString")
    .filter(col("contract") == "Month-to-month")
    .filter(col("internetService") != "No")
    .filter(col("tenure").isNotNull() & col("churn").isNotNull())
)
数据准备核心结果
指标 结果
原始数据行数7043
筛选后数据行数3351
未流失客户数1795
已流失客户数1556
流失事件比例46.43%
总体中位生存时间34.0 月
按流失状态汇总
状态 客户数 平均留存月份 留存中位数 平均月费
未流失179523.6219.071.17
已流失155614.608.076.38

2. Kaplan-Meier 曲线与 Log-rank 检验

Kaplan-Meier 方法用于估计客户在不同月份仍未流失的概率。总体曲线显示,该客户群体的 中位生存时间约为 34 个月,也就是累计生存概率下降到 50% 左右的位置约在第 34 个月。

总体 Kaplan-Meier 生存曲线
总体 Kaplan-Meier 曲线显示月付互联网客户的留存概率随月份下降。

在分组分析中,不同变量的生存曲线分离程度代表其与流失时间的关联强弱。 性别分组曲线较接近,预测价值有限;而 onlineSecurity、 internetService、techSupport、onlineBackup 等服务相关变量的 Log-rank 检验 p 值较低,说明这些分组之间的生存曲线差异显著。

按在线安全服务分组的 Kaplan-Meier 生存曲线
是否订阅在线安全服务会明显改变客户留存曲线。
Log-rank 检验中差异最明显的变量
字段 最小两两 p 值
onlineBackup4.123e-43
onlineSecurity1.188e-32
partner2.253e-31
paymentMethod1.304e-21
techSupport1.916e-21
multipleLines1.795e-17
deviceProtection2.777e-17
dependents3.245e-09
internetService5.241e-07
streamingMovies2.278e-05

3. Cox Proportional Hazards 多变量模型

Kaplan-Meier 更适合单变量或少量分组的直观比较。为了同时控制多个变量,进一步使用 Cox Proportional Hazards 模型。模型输入包括 dependents_Yes、 internetService_DSL、onlineBackup_Yes 和 techSupport_Yes 等 one-hot 后的变量。

cox_survival_pd = cox_encoded_pd[
    ["churn", "tenure", "dependents_Yes",
     "internetService_DSL", "onlineBackup_Yes", "techSupport_Yes"]
].copy()

cph = CoxPHFitter(alpha=0.05)
cph.fit(cox_survival_pd, duration_col="tenure", event_col="churn")

Cox 模型的核心输出是风险比 exp(coef)。风险比小于 1 表示相对于基准组, 客户流失风险更低、留存更久。结果显示,DSL、在线备份和技术支持等变量对流失风险有明显影响, 服务类型和增值服务状态是预测客户留存的重要特征。

Cox PH 模型主要结果
变量 coef exp(coef) p 95% 下界 95% 上界
dependents_Yes-0.32870.71990.00000.62650.8272
internetService_DSL-0.21730.80470.00020.71670.9034
onlineBackup_Yes-0.77660.46000.00000.40960.5165
techSupport_Yes-0.63920.52770.00000.45530.6117
Cox PH 模型风险比和置信区间
在线备份和技术支持对应的风险比明显低于 1,代表流失风险下降。

比例风险假设检查提示 internetService_DSL、onlineBackup_Yes 和 techSupport_Yes 可能存在时间变化效应。如果目标是严格解释,应考虑分层 Cox 或时间交互项;如果目标主要是预测,则需要结合预测误差和业务解释性继续评估模型。

4. Accelerated Failure Time 参数模型

为了对比 Cox PH,还使用 Log-Logistic Accelerated Failure Time 模型。AFT 是参数模型, 需要假设生存时间服从某种分布。AFT 系数更接近“时间尺度”的解释:某个变量可能延长或缩短客户到流失事件发生之前的时间。

本次 Log-Logistic AFT 模型估计的中位生存时间约为 4.91 个月。由于分布假设较强, 结果应作为参数化基线进行比较,而不是单独作为最终解释。

Log-Logistic AFT 模型变量系数
AFT 模型从时间尺度角度描述服务配置对流失时间的影响。
AFT 模型部分结果
变量 coef exp(coef) p
onlineSecurity_Yes0.86162.36690.0
onlineBackup_Yes0.81282.25420.0
techSupport_Yes0.68931.99230.0
internetService_DSL0.38371.46780.0
Intercept1.59114.90900.0

5. 客户生命周期价值 CLV 计算

最后,将 Cox 模型预测出的生存概率用于客户生命周期价值计算。核心思路是: 先预测某个客户画像在未来各月份仍未流失的概率,再用“生存概率 × 月利润”得到每月期望利润, 最后用月折现率计算净现值和累计净现值。

monthly_discount_rate = annual_irr / 12
expected_profit = survival_probability * monthly_profit
monthly_npv = expected_profit / ((1 + monthly_discount_rate) ** contract_month)
cumulative_npv = monthly_npv.cumsum()

示例画像假设每月利润为 30、年折现率为 10%。12、24、36 个月的累计 NPV 可用于估算获客成本上限: 如果获客成本超过某一周期下的累计 NPV,则从该周期看客户可能无法带来正回报。

示例画像前 12 个月 CLV 明细
月份 生存概率 期望月利润 月 NPV 累计 NPV
11.0030.0029.7529.75
20.8725.9825.5555.30
30.8124.4123.8179.11
40.7723.2022.44101.55
50.7422.1021.20122.76
60.7121.2620.23142.99
70.6920.7019.53162.52
80.6720.0218.73181.25
90.6519.4418.04199.29
100.6318.7917.30216.59
110.6018.1016.52233.12
120.5917.7016.02249.14
12、24、36 个月累计客户净现值柱状图
示例画像在 12、24、36 个月的累计 NPV 分别为 249.14、402.35、504.06。
示例客户画像预测生存概率曲线
预测生存概率可进一步转化为逐月期望利润。

6. 综合结论

第一,生存分析比简单的“是否流失”分类更进一步,因为它显式建模了“什么时候流失”。 tenure 和 churn 构成了生存分析的两个核心字段,使我们能够估计客户在不同月份继续留存的概率。

第二,Kaplan-Meier 和 Log-rank 检验表明,不同服务配置的客户留存曲线差异明显。 与性别这类人口统计变量相比,互联网服务类型、在线安全、在线备份和技术支持等业务变量更能解释客户留存差异。

第三,Cox PH 和 AFT 模型从多变量角度进一步量化了这些因素的影响。Cox 模型便于解释风险比, 但需要检查比例风险假设;AFT 模型提供了参数化对照,但依赖分布假设。

第四,将生存概率用于 CLV 计算可以把统计模型输出转化为业务指标。 模型不只回答“客户是否会流失”,还可以帮助估计某类客户未来每月的期望价值, 从而支持获客预算、客户保留策略和增值服务设计。