1. 引言
生存分析(Survival Analysis)是一类用于分析"事件发生时间"的统计方法。 它最初起源于医学领域,用于研究患者的存活时间。如今,生存分析已广泛应用于电信、金融、制造等行业。
传统的分类模型(如逻辑回归)只能预测客户是否会流失,但无法回答何时流失。 生存分析不仅建模流失时间,还能处理删失数据(即观测期内未流失的客户), 并输出随时间变化的生存概率曲线。
本文基于 Databricks 官方生存分析教程,对 IBM 电信客户流失数据集应用了三种互补的分析方法:
| 方法 | 类型 | 核心用途 |
|---|---|---|
| Kaplan-Meier | 非参数 | 单变量生存概率估计 |
| Cox 比例风险模型 | 半参数 | 多变量风险建模 |
| 加速失效时间模型 | 全参数 | 替代性多变量建模 |
2. 数据集介绍
数据集来自 IBM, 模拟了一家虚构电信公司的客户数据,共包含 7,043 条客户记录。
核心变量
| 类别 | 变量 | 说明 |
|---|---|---|
| 目标变量 | tenure | 客户在公司的月数 |
| 事件指标 | Churn | 是否已流失(Yes/No) |
| 人口统计 | gender, SeniorCitizen, Partner, Dependents | 客户基本信息 |
| 服务订阅 | InternetService, OnlineSecurity, TechSupport 等 | 订购的各项服务 |
| 账户信息 | Contract, PaymentMethod, MonthlyCharges | 合同与付费详情 |
其中,tenure(存续时间)和 Churn(事件标记)是生存分析的两个必要输入。
对于已流失客户,tenure 表示其在离开前的总月数;对于仍在活跃的客户,tenure 是观测截止时的月数(右删失数据)。
3. 数据预处理
数据管道架构
CSV 原始文件 → Bronze 表(PySpark DataFrame)→ Silver 表(筛选清洗)→ Pandas DataFrame
Bronze 层(原始数据)
- 使用 PySpark 显式定义 Schema 加载 CSV 文件
- 包含全部 7,043 条记录和 21 个字段
- 优势:避免自动推断类型带来的错误和性能开销
Silver 层(清洗数据)
对原始数据应用了两个关键变换:
- 流失编码:将字符串列
Churn(Yes/No)转换为数值列churn(1/0) - 数据筛选:仅保留按月付费(Month-to-month)且有互联网服务的客户
按月付费的客户可以随时取消服务,因此是最容易流失的群体。 一年期和两年期合约客户有合同约束,流失模式不同。 聚焦于按月付费群体使分析更具针对性和实用性。
预处理结果
- Silver 表约包含 3,356 条记录
- 流失率约 53%,未流失率约 47%(删失观测)
- 这一高流失率突显了该客户群体对留存策略的重要性
4. Kaplan-Meier 估计与 Log-Rank 检验
方法概述
Kaplan-Meier(KM)估计是最常用的非参数生存函数估计方法。 它计算在时间 t 之后继续存活的概率:
其中 di 是时间 ti 的事件数(流失数),ni 是该时刻处于风险中的人数。
总体水平结果
- 中位生存时间 ≈ 34 个月:50% 的客户至少留存 34 个月
- 前 10 个月生存概率急剧下降(新客户流失风险最高)
- 40 个月后流失速率明显放缓(长期客户更稳定)
- 随时间推移,置信区间变宽(数据点减少,估计不确定性增大)
协变量分层分析
我们对每个分类变量绘制分层 KM 曲线,并使用 Log-Rank 检验 判断组间生存曲线是否存在统计学显著差异(原假设:各组生存曲线相同)。
| 变量 | p 值 | 是否显著 | 观察结果 |
|---|---|---|---|
| gender(性别) | > 0.05 | 否 | 曲线重叠,性别不影响流失 |
| seniorCitizen(老年人) | < 0.05 | 是 | 老年客户流失更快 |
| partner(配偶) | < 0.05 | 是 | 有配偶的客户留存更久 |
| dependents(家属) | < 0.05 | 是 | 有家属的客户留存更久 |
| internetService | < 0.05 | 是 | DSL 客户比光纤客户留存更久 |
| onlineSecurity | < 0.05 | 是 | 强保护效应 |
| techSupport | < 0.05 | 是 | 强保护效应 |
| onlineBackup | < 0.05 | 是 | 中等保护效应 |
| paperlessBilling | < 0.05 | 是 | 无纸化账单与更高流失率相关 |
| paymentMethod | < 0.05 | 是 | 电子支票用户流失更快 |
5. Cox 比例风险模型
方法概述
Cox 比例风险模型(CPH)是最流行的半参数生存分析方法, 支持多变量分析。其数学表达式为:
其中:
- h0(t):基线风险函数(仅与时间相关)
- exp(βi):风险比(Hazard Ratio),表示变量对风险的乘性效应
- 模型被称为"半参数",因为 h0(t) 不需要预先指定分布形式
数据准备
对 5 个分类变量进行独热编码,并选择以下特征:
dependents_Yes、internetService_DSL、onlineBackup_Yes、techSupport_Yes- 每个变量删除一个类别以避免多重共线性
- 基线选择 KM 曲线与总体最相似的类别
模型结果
| 协变量 | 系数方向 | exp(coef) | p 值 | 解释 |
|---|---|---|---|---|
| dependents_Yes | 负 | < 1 | < 0.005 | 有家属降低流失风险 |
| internetService_DSL | 负 | < 1 | < 0.005 | DSL 降低流失风险(相比光纤) |
| onlineBackup_Yes | 负 | < 1 | < 0.005 | 在线备份降低流失风险 |
| techSupport_Yes | 负 | < 1 | < 0.005 | 技术支持降低流失风险 |
所有协变量统计显著(p < 0.005),且均具有保护效应(exp(coef) < 1)。 模型一致性指数(Concordance)约为 0.63,表明中等预测能力。
比例风险假设检验
CPH 模型的核心假设是风险比随时间保持不变。我们使用三种方法进行检验:
方法 1:Schoenfeld 统计检验
结果:4 个变量中有 3 个违反比例风险假设(p < 0.05),说明风险比随时间变化。
方法 2:Schoenfeld 残差图
internetService_DSL:残差随时间呈现清晰的趋势onlineBackup_Yes:趋势最为明显techSupport_Yes:在时间线末端影响最为显著
方法 3:Log-Log KM 图
在 log-log 尺度下,若比例风险假设成立,各组的曲线应当平行。 实际观察发现曲线不平行,进一步证实了假设违反。
- 若目标是预测,可以保持现有模型(关注损失指标)
- 对问题变量进行分层建模
- 引入时变协变量(扩展 Cox 模型)
- 使用三次样条(Cubic Splines)增加灵活性
- 改用其他方法(如加速失效时间模型)
6. 加速失效时间模型(AFT)
方法概述
加速失效时间(Accelerated Failure Time, AFT)模型是一种全参数方法。 其核心概念是"加速因子":
其中 γ 是加速因子。当 exp(β) > 1 时,该因素延长生存时间(保护作用); 当 exp(β) < 1 时,该因素缩短生存时间(风险因素)。
分布选择
我们使用 Log-Logistic 分布,其生存函数为:
其他可选分布包括 Weibull 和 Log-Normal。
模型结果
- 所有协变量统计显著(p < 0.005)
internetService_DSL(exp(coef) ≈ 1.47):DSL 客户生存时间延长约 47%techSupport_Yes:显著的保护(延长)效应onlineSecurity_Yes:显著的保护效应
假设验证
使用 log-odds 诊断图验证:
- 分布适合性(线条是否为直线):线条较为平直 → Log-Logistic 分布选择合理
- 比例赔率假设(线条是否平行):线条大多不平行 → 假设部分违反
CPH 与 AFT 对比
| 方面 | Cox PH | Log-Logistic AFT |
|---|---|---|
| 类型 | 半参数 | 全参数 |
| 假设 | 比例风险 | 比例赔率 + 分布假设 |
| 假设满足? | 违反 | 部分违反 |
| 输出解释 | 风险比 | 加速因子 |
| 一致性指数 | ~0.63 | ~0.63 |
7. 客户生命周期价值(CLV)
方法论
利用 CPH 模型预测生存概率,结合预期收入计算 CLV:
其中:
- S(m):第 m 个月的预测生存概率
- Monthly Profit:假设每月利润为 $30
- r:月内部收益率(年化 10% / 12)
关键里程碑
| 时间节点 | 累计净现值(CLV) |
|---|---|
| 12 个月 | 约 $260-280 |
| 24 个月 | 约 $420-450 |
| 36 个月 | 约 $520-550 |
业务应用
- 客户获取成本(CAC)预算:获客成本不应超过 CLV
- 留存投资:高 CLV 客户值得更多留存投资
- 精准营销:不同画像的客户有不同的 CLV,可实施差异化策略
8. 总结与结论
核心发现
- 按月付费互联网用户流失率高达约 53%,是留存策略的重点目标群体。
- 强保护因素(降低流失风险):技术支持、在线安全、DSL 互联网、有家属。
- 风险因素(增加流失风险):光纤互联网、电子支票支付、无纸化账单、老年客户。
- 性别不显著影响客户流失行为。
- 比例风险假设被违反,表明协变量与风险的关系随时间变化。
业务建议
- 捆绑增值服务(技术支持、在线安全、在线备份)以增强客户粘性
- 重点关注光纤用户,尤其是入网初期,提供主动留存优惠
- 监控电子支票用户的早期流失预警信号
- 利用 CLV 估算为不同客户群制定合理的获客预算
局限性与未来工作
- 比例风险假设违反表明存在时变效应,可通过扩展模型(时变协变量、分层模型)捕捉
- 数据集较小(约 7K 条),更大的数据集可提高模型置信度
- 实际部署需要定期重新训练模型以适应客户行为变化
- 额外特征(如使用量指标、客服交互记录)可进一步提升预测效果
参考文献
- Databricks Industry Solutions: Survival Analysis
- Kleinbaum, D., & Klein, M. (2012). Survival Analysis: A Self-Learning Text (3rd ed.). Springer.
- Lifelines Python Library: Documentation
- IBM Telco Customer Churn Dataset: GitHub