生存分析(Survival Analysis)是一类专门对“事件发生时间”建模的方法。它关心的是:“多久之后出事”,而不是“会不会出事”;预测“会不会出事”是二分类模型的工作。并且,它必须正面处理一类特殊数据:删失(censoring)。
它究竟在算什么
普通二分类模型回答“会不会”:这个用户会不会退订,这台机器会不会坏。生存分析回答“多久”:这个用户退订前还能撑几个月,这根轴承还剩多少小时寿命。
输出通常不是单个数字,而是一条随时间变化的曲线:生存函数(survival function)S(t),表示“活过 t 时刻的概率”;或者风险函数(hazard function)h(t),表示“已经活到 t 时刻、还没出事的前提下,此刻出事的瞬时速率”。
举个具体的例子:你在一家店门口蹲点,记录每位顾客逛多久出来。蹲到打烊,店里还有人没出来。这些人不能记成“逛了 0 分钟”,也不该直接扔掉——你确切知道的只有一件事:他们待的时间大于你等到现在的时长。这种“只知道下限、不知道终点”的数据叫删失,最常见的是右删失(right censoring):观察结束时事件尚未发生。
如果粗暴处理会怎样?把删失样本当“没发生”塞进二分类器,模型会系统性低估风险——因为被删掉的恰恰是“还没出事”的那批样本。这有幸存者偏差的味道。
和相邻概念的区别
| 普通二分类/回归 | 生存分析 | |
|---|---|---|
| 输出 | 概率或数值 | 随时间变化的生存/风险曲线 |
| 时间信息 | 基本丢弃 | 核心信号 |
| 删失样本 | 只能丢弃或当负样本 | 正常参与训练 |
| 常见评估 | AUC、准确率 | C-index(一致性指数) |
典型方法包括:Kaplan-Meier 估计(非参数地画出生存曲线)、Cox 比例风险模型(Cox proportional hazards model,假设特征按固定倍数缩放风险)、加速失效时间模型(accelerated failure time, AFT)。工程上常把它和神经网络结合,为每个样本输出个性化风险曲线。
对实际工作的意义
- 用户增长:预测首次付费时间、流失时间,能直接算出“第几个月是流失高峰”,干预窗口一目了然。
- 预测性维护:估计剩余使用寿命(remaining useful life),比“明天会不会坏”更贴合排产决策。
- 医疗与保险:随访数据天生带删失,这是生存分析最早应用的领域。
- A/B 测试:只看期末转化率,会漏掉“转化更快”这类收益;把时间维度加进来才看得见。
一个提醒:若删失比例很高,或“比例风险假设”不成立(特征对风险的影响随时间变化),Cox 模型的结论要谨慎对待,可考虑时变系数或换用其他模型。
