「把还在用的客户删掉」——当同事提出这个建议时,作者的第一反应是「这感觉不对」。确实不对。但为什么?
被忽视的34%:删活数据的代价
![]()
模拟了1000名客户、观察期24个月的数据后,结果很典型:664人已经流失(66%),336人仍在活跃(34%)。
这34%就是「右删失」(right-censoring)——客户存活了至少8个月,但终点未知。删掉他们,模型只会从「已经离开的人」身上学习,系统性地低估客户生命周期。
作者用PyMC构建了一个加速失效时间(AFT)模型,核心武器是pm.Potential。这个函数让模型能同时处理两类信息:已流失客户的精确时间,以及活跃客户的「至少存活X月」。
代码里藏着一个关键设计:对数时间服从Gumbel分布(极值分布的一种),通过eta + s * W的线性结构,把月消费额(标准化后)和工单数量转化为生存时间的预测因子。
参数设定很有信息量:月消费系数+0.4(花得越多活得越久),工单系数-0.3(找客服越频繁走得越快)。真实业务里,这两个信号的方向基本确定,但贝叶斯方法的价值在于给出不确定性区间,而非点估计。
Weibull vs Log-Logistic:分布选择即假设
原文比较了两种生存分布。Weibull假设风险率随时间单调变化(递增或递减),Log-Logistic则允许先升后降的驼峰形态——某些场景下客户早期风险高,中期稳定,后期再上升。
![]()
选择哪个分布,等于对客户行为模式做先验判断。没有放之四海的标准答案,只有对业务场景的理解。
个体生存曲线:从群体模型到单点预测
模型跑完后,最有价值的输出不是参数表,而是个体生存曲线。输入任意客户的消费额和工单历史,能画出「该客户未来12个月的存活概率」。
这对运营动作有直接指导:曲线陡峭下坠的,提前介入挽留;曲线平缓的,减少过度打扰。
作者提供的交互笔记本(badge链接)把全流程串了起来:合成数据→模型拟合→分布比较→可视化。对想落地的人来说,这是可执行的起点。
实用指向
流失预测的真正难点从不是算法,而是对「不完整数据」的尊重。336个活跃客户不是噪音,是信息。PyMC的pm.Potential把这个信息纳入似然函数,贝叶斯框架则天然输出预测的不确定性——这对制定运营预算、评估干预ROI至关重要。如果你正在用传统ML做二分类(流失/不流失),考虑转向生存分析:同样的数据,更多的信息。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.