小林在小区门口开了一家 AI 主题咖啡店。开业第一周,每天都有八十多位新客来尝鲜,第二周却只剩一半人推门。小林没有急着催人办卡,而是拿出了一个旧账本:从每位客人第一次到店的日期记起,之后每天数一数“这群人里还有几位会回来”。他把数字点在坐标纸上,横轴是距离第一次到店的天数,纵轴是回头的比例,一条弯弯曲曲的“回头客曲线”诞生了。这条曲线让他看明白:第一周的客人里只有 40% 会回来,一个月后稳定在 25%;做了“手冲体验券”活动的月份,新客曲线明显高出一截;凡第一次点单就加微信的客人,留存率是其他人的两倍。小林的故事,正是 AI 产品团队每天都在做的事——我们口中的“留存曲线”,本质上就是这条“回头客曲线”。它不炫技,却直白地回答一个问题:你的产品,凭什么让用户明天、下周、下个月还回来?
对 AI 产品经理与增长分析师来说,读懂留存曲线等于拿到产品健康度的“体温计”:能区分短期噪声与长期趋势、精准对比群组差异、定位驱动留存的关键行为,把有限的资源投在真正让用户回头的地方。
可视化演示
展示留存曲线三种类型(下降/稳定/微笑)与水位线概念、多渠道群组留存对比(D1-D30)、以及功能使用频率与留存关联的Aha Moment识别。
本节配有交互动效(进入视口后自动加载,约 3KB)。
留存曲线三种类型 稳定型曲线趋于水位线(约40%),进水与流失平衡,产品创造持续价值 下降型持续走低无稳定水位,需警惕;微笑型先降后升,个性化效果累积 留存率(Dn)=Dn活跃用户/D1新增用户 关键看曲线稳定水位而非单日数字
留存曲线导读
小林的账本第一页只有三列:到店日期、客人编号、今天是否还来。他把同一天第一次到店的客人看作一个班次,每天统计这个班次的“出席率”,把每天的点连起来,就成了这群客人的“考勤图”。这张图告诉他的不是某一位客人,而是整批新客的忠诚度走势——这正是留存曲线的雏形。
在 AI 产品里,这张考勤图就叫留存曲线。它回答的问题是:一批新用户从注册那天起,有多少人一天后在、一周后在、一个月后还在。曲线本身不复杂,难在口径要统一——“活跃”是打开就算,还是完成一次关键任务才算?“第几天”是按自然日算,还是按首次使用后满 24 小时算?口径不同,结论可能完全相反。所以做留存分析的第一步不是画图,而是立规矩。
最常用的口径是同期群留存率,按加入时间把用户分成不同的群,分别计算每个群在不同天数的留存:
小林把口径写进账本扉页,从此每一批客人都用同一把尺子量。产品团队的留存看板也一样:先定口径,再看曲线,否则任何对比都是拿卷尺量身高、拿皮尺量腰围,数字再多也说不清问题。
- 群组划分 c把同一天第一次使用产品的用户归为同一群,小林按到店日给客人分组。
- 第 t 天的活跃人数第 c 群用户里,在加入后的第 t 天仍活跃的用户数量。
- 群组总规模第 c 群成立当天的新增用户总数,也就是该群组的初始人数。
- 留存率换算用活跃人数除以总规模再乘以百分百,得到该群组第 t 天的留存率。
曲线形态研判
几个月下来,小林把咖啡店的留存曲线分成了三类:季节特调型一路下滑,客人尝个鲜就换口味;招牌手冲型快速走平,老客人每周准时出现;周末社群型越走越翘,客人从一周两次变成三天两头就来。三种形态,对应三种不同的经营策略。
AI 产品也一样,拿到一条曲线先不要急着优化,先认形态。快速衰减型常见于“一次性工具”——用户问完一个问题就走,比如翻译、图片生成类的轻量 AI 应用;平稳平台型说明产品找到了高频使用的场景;微笑回升型则出现在需要积累价值的场景,比如 AI 学习助手越用越懂你、AI 陪伴应用越聊越有感情。
业界常用幂律模型来拟合这种“先陡后缓”的衰减走势,它用两个参数就能概括一条曲线的性格:
小林发现招牌手冲客群的 b 值只有季节特调的一半,于是把特调配方迭代成季节新品,曲线慢慢从陡坡变成了缓坡。形态识别的作用就在于此:它告诉你问题出在“第一印象不够好”还是“缺少再来的理由”。
- 初始留存 R₀用户加入第一天仍活跃的比例,代表产品给人的第一印象。
- 时间因子 t从用户加入起经过的天数,随时间推移留存自然下降。
- 衰减指数 bb 越大幂次衰减越剧烈,曲线坡度越陡,粘性越弱。
- 模型合成初始留存乘上衰减因子,就是幂律衰减留存模型 R(t)。
波动与趋势
小雨天、店休、隔壁工地中午人声嘈杂,都会让当天的回头客数量抖一下。小林最初看到雨天回头客少了三个,急得想换掉招牌手冲,后来发现雨一停数据就回来了。他学乖了:不看单日,而看“最近 7 天的平均回头率”。
数据世界同理。留存曲线上每一次跳动背后都有原因:版本发布、推送触达、节假日、渠道买量,但多数是一过性的噪声。如果每次都对着噪声做决策,团队会变成惊弓之鸟——今天回滚、明天加功能、后天换渠道,产品被改得面目全非。正确的做法是先判断:这是短期的抖动,还是长期趋势真的变了?
判断趋势最朴素也最有效的工具是移动平均,把最近 k 天的留存率平均,抹平单日的偶然:
把曲线的“脉搏”平滑下来后,小林才看清招牌手冲的长期趋势其实在悄悄上涨——如果他当时被雨天吓得砍掉招牌产品,就等不到回升的那天。看趋势,要像看河水的流向,而不是盯着一朵浪花。
- 窗口长度 k移动平均取多少天,k 越大越平滑但反应越迟钝。
- 求和范围从第 t 天往前取 k 天,把这段区间的留存率全部相加。
- 平均化处理总和除以 k,得到平滑后的留存率,掩盖单日噪声。
群组对比分析
小林把每月的新客分别记账。他发现五月做“手冲体验券”活动的客群曲线,比四月没有活动的客群高出八个百分点。四月的客人里也有老主顾,但那是四月的功劳,跟五月没关系——两批客人必须分开比,才能看清活动到底有没有用。
群组对比分析(Cohort Analysis)是留存分析的显微镜:把用户按“加入时间”切成一个个同期群,像切洋葱一样一层层看。核心原则是“同一起跑线、同一把尺子”——不能拿上个月的老用户和这个月的新用户比留存,因为老用户本身就活过了筛选期,留存天然更高,混在一起会掩盖新用户的真实流失。
衡量两个群组的留存差异,最简单的指标是做差:
小林用这本群组账本说服了合伙人:五月曲线抬升是手冲体验券的功劳,不是五月风水好。群组分析的价值就在于此——它能在混沌的数据中分离出“到底是谁的变化带来了增长”。
- 目标群组留存新版或新渠道对应的群组在第 t 天的留存率。
- 基准群组留存旧版本或自然渠道对应群组在同一时间的留存率。
- 差异值计算两者相减得到留存差,正值说明改进起作用了。
功能驱动留存
小林开始给每位客人的消费记录做标记:点过招牌手冲的客人回头率明显更高,只点季节特调的客人往往来一次就消失。他心里有了个猜想:客人回来不是因为咖啡店装修好,而是因为那一杯手冲值得再来一趟。
产品侧也一样。AI 产品里功能千千万,但真正承担“留存引擎”角色的往往只有一两个核心功能。要把这个引擎找出来,需要把功能使用数据与留存数据对齐:每周用了几次核心 AI 功能、用了哪些技能、用量是多是少?然后计算使用频率与留存水平之间的相关程度——注意,这里用的是“相关”,还不能直接说“因果”。
衡量两个变量相关强度的常用指标是皮尔逊相关系数:
相关系数把“感觉手冲重要”变成了“0.62 的强相关”;小林据此在菜单上固定了招牌手冲的位置。菜单越短,客人越知道该点什么;功能越聚焦,用户越容易形成“打开就为这一件事”的心智。
- 数据配对每个用户对应一对数,x 是功能使用频率,y 是留存指标。
- 减去均值各自减去平均值,让高于平均与低于平均的配对显形。
- 协方差分子所有配对乘积相加,衡量两个变量同向波动程度。
- 标准化分母除以两组方差的乘积开方,把结果压缩到 -1 到 1。
关键行为洞察
小林翻账本时发现一个“魔幻数字”:第一次到店就加了微信的 42 位客人,一个月后还有 21 位在群里冒泡;没加的 120 位里只剩 9 位。加微信这个动作本身不产生收入,但它像一道分水岭,把“随便逛逛”和“打算常来”的客人瞬间分开。
在产品和增长圈里,这类动作叫“关键行为”,也叫激活时刻(Aha Moment)——用户做出这个行为后,留存率会出现明显的台阶式上升。对 AI 产品而言,关键行为往往是某类功能闭环的首次完成:第一次成功生成一篇像样的文章、第一次被 AI 回答准确命中需求、第一次完成一次高质量对话。找到它,等于给新用户体验找到了第一个“啊哈时刻”。
量化关键行为价值的方法是计算条件概率:
小林把“加微信送手冲券”的环节挪到点单流程的第一步,新客的 7 日留存率直接翻倍。关键行为的魔力就在于:它不是等用户自己悟出来,而是把“留下来”的瞬间设计进产品流程里。
- 行为且留存人数完成关键行为并在观察期内仍活跃的用户数量。
- 完成行为总人数所有做过关键行为的用户数,无论后续是否活跃。
- 条件概率计算前者除以后者,得到做行为后的留存概率,并与对照组比较。
留存诊断优化
小林渐渐形成了一套每月一次的“留存会诊”:先摊开曲线看形态,再翻开群组账本找波动出自哪一批客人,接着对比消费记录找关键行为,最后开一个“会员日”实验验证猜想。四步走完,下个月的菜单调整就有了依据。
这套流程对应到 AI 产品团队,就是留存诊断的完整闭环:描述(曲线长什么样)→ 归因(为什么掉、为什么涨)→ 抓手(改哪个功能、引导哪个行为)→ 验证(实验说了算)。每一步都有对应的数据动作,但不能跳步——没有形态判断就直接做实验,等于闭着眼睛改菜单。
验证策略效果时,最核心的指标是提升量:
留存分析永远是个循环,就像小林每个月都要重新翻开账本——不是看一次就大功告成,而是每个版本、每个渠道、每个季度都重新走一遍“看形态、拆群组、找行为、做实验”的流程。留存不是一次装修,而是持续养客。
- 实验组留存率接受新策略的那批用户在第 t 天的留存率。
- 对照组留存率没有接受任何改动的用户群在第 t 天的留存率。
- 提升量计算实验组减对照组,正数代表策略真实带来了留存增益。
AI 应用场景
AI 客服机器人:配置“手冲体验券”式的新手引导
阶段:留存诊断 → 群组对比分析
解决的问题:某 AI 客服 SaaS 产品的新用户首日体验完自动回复后就大量流失,团队只看整体 30 日留存率,一直稳定在 22%,不知道问题出在哪。按群组拆解后发现,老渠道买来的用户留存高,而信息流新渠道的用户 7 日留存只有 10%——不是产品不行,是渠道带来的用户预期错配。
具体案例:团队把新渠道用户随机分成两组,A 组首次对话后立刻引导用户配置自动知识库(预设的关键行为),B 组维持原样。实验 14 天后,A 组 7 日留存 34%,B 组仅 15%。团队随即将“配置知识库”提前到注册流程,整体 30 日留存提升了 5 个百分点。这就像小林把“加微信送手冲券”从收银台挪到点单第一步。
AI 写作助手:用功能使用频次锁定核心场景
阶段:功能驱动留存 → 关键行为洞察
解决的问题:某 AI 写作助手功能多达 20 余项,团队不确定该把哪个功能做到极致。传统做法是发问卷,但用户回答“都挺好”,无法指导资源分配。
具体案例:数据分析师计算每项功能的周使用频次与 30 日留存之间的相关系数,发现“AI 续写”的相关性高达 0.58,而“头脑风暴”仅有 0.12。进一步统计,首次会话内使用续写 3 次以上的用户,30 日留存是对照组的 2.1 倍。产品将续写入口从二级菜单提到编辑器首屏,留存曲线的平台期肉眼可见地上移了一个台阶。
AI 口语陪练应用:三线对比找出“拖后腿”的版本
阶段:群组对比分析 → 留存诊断优化
解决的问题:某 AI 口语陪练应用改版后整体留存曲线反而下滑了 1 个百分点,团队一度准备直接回滚。但整体曲线掩盖了一个事实:不同用户群对改版的反应完全不同。
具体案例:按版本拆分同期群后发现,新版对“零基础用户”的 7 日留存下降了 8%,对“有基础用户”提升 5%。原因是新版把 AI 对话入口藏到了第三屏,新手找不到。团队回滚了首页布局、保留新算法后,零基础用户留存回升,整体曲线的平台期反而比改版前更高。盲目回滚会丢掉真实收益,盲目全量上线又会误伤新手——只有群组对比能给出精确答案。
Python 演示
import numpy as np def simulate_cohort(days=30, base=0.7, decay=0.4, seed=42): """按幂律衰减规律生成一组用户的留存率序列,附带随机噪声。""" rng = np.random.default_rng(seed) retention = [] for t in range(1, days + 1): value = base * (t ** (-decay)) value += rng.normal(0, 0.008) retention.append(float(np.clip(value, 0.01, 1.0))) return retention def day_n_retention(cohort, day): """取第 day 天的留存率(cohort 下标从 1 开始计数)。""" return cohort[day - 1] def fit_power_law(retention): """将留存序列拟合为 R(t)=R0*t^(-b),返回 (R0, b)。""" t = np.arange(1, len(retention) + 1, dtype=float) slope, intercept = np.polyfit(np.log(t), np.log(retention), 1) return float(np.exp(intercept)), float(-slope) def retention_lift(with_event, without_event, day): """计算关键行为带来的留存增益(相对提升比例)。""" return with_event[day - 1] / without_event[day - 1] - 1.0 def main(): all_users = simulate_cohort(seed=42) only_event = simulate_cohort(seed=7, base=0.78, decay=0.3) r0, b = fit_power_law(all_users) print("day1=%.0f%% day7=%.0f%% day30=%.0f%%" % tuple( day_n_retention(all_users, d) * 100 for d in (1, 7, 30))) print("fitted R0=%.2f decay=%.2f" % (r0, b)) print("key-event day7 lift=+%.0f%%" % ( retention_lift(only_event, all_users, 7) * 100)) if __name__ == "__main__": main()
value = base * (t ** (-decay))按幂律规律计算第 t 天的预期留存:t 越大、decay 越大,数值越低。retention.append(float(np.clip(value, 0.01, 1.0)))把噪声叠加后的值夹在 [0.01, 1] 之间,避免出现负数概率。slope, intercept = np.polyfit(np.log(t), np.log(retention), 1)对幂律两边取对数变成线性,拟合出的直线斜率就是 -b。return float(np.exp(intercept)), float(-slope)把截距还原成初始留存 R0,负斜率还原成衰减指数 b。return with_event[day - 1] / without_event[day - 1] - 1.0两组留存相除再减一,算出关键行为带来的相对提升。all_users = simulate_cohort(seed=42)用固定随机种子生成基准群组,保证结果可复现。
常见误区
误区“我们产品首日留存才 45%,隔壁 AI 应用有 70%,肯定是我们产品不行,赶紧大改版!” 用第一天的一个数字给整个产品定罪,是新手最常犯的错。
正解首日留存受拉新渠道、激励活动影响极大——送三个月会员拉来的用户,第二天就走掉一大半,这是渠道问题而不是产品问题。更科学的做法是看一整条曲线:衰减有多快、平台期在哪、和同品类基准比如何。就像一个咖啡馆,开业首日排长队不代表生意好,要看的是有多少人“之后还来”。
为何常见:首日留存数字最醒目、最好拿,而平台期要等 30 天数据才出现。追求快速汇报的文化让人只盯着单个数字下结论。
误区“整体留存不是一直稳定在 60% 吗,没什么问题呀?” 只看大盘曲线,新用户的流失完全被老用户掩盖了。
正解整体留存是“幸存者混合体”:老用户本来就活过了筛选期,留存相对高,会把新用户的暴跌稀释掉。必须按同期群拆开看——五月的用户和六月的用户是两批人,绝不能混在一起算。小林要是把开业半年的老客和新客混着算,永远发现不了手冲体验券的效果。
为何常见:画一条整体曲线只需一条 SQL,按群组拆分要多写几行循环。省事的冲动让不少人省略了最关键的分组步骤。
误区“昨天留存下降了 5%,肯定是新版功能出 bug,马上回滚!” 把单日噪声当成趋势信号是团队内耗的常见来源。
正解留存曲线天然带抖动:周末、节假日、推送、渠道放量都会造成一天甚至几天的上下跳动。正确的动作是先算移动平均或拉长观察窗口,确认趋势真的掉了再行动。小林有一次看到雨天回头客少了三个就慌张,结果雨停后数据自己回来了——他差点为了一个天气噪声砍掉招牌手冲。
为何常见:人对近期事件有天然过度敏感,最新一天的抖动最容易留下印象,而长期趋势需要耐心等待足够的数据积累。
误区“统计发现用 AI 绘画功能的用户留存高出一倍,所以绘画功能是留存功臣,马上加大投入!” 这个推理链条看着顺滑,实则站不住脚。
正解相关不等于因果。也许高留存用户本来就活跃,什么功能都用;也许绘画功能只被老用户使用,它是“留存的结果”而不是“留存的原因”。要确认因果关系,必须做群组实验:让新用户一半用绘画、一半不用,再看留存差异。小林发现“点套餐的客人留存高”,但真正原因是套餐里含会员——后来单卖会员,效果一样好。
为何常见:归因是人类大脑的默认快思考模式,看到一个正相关就迫不及待地讲一个“因为所以”的故事。
误区“我们 7 日留存不到 30%,太差了,目标定到 60%。” 拿同一把尺子量所有类型的 AI 产品,是典型的基准错配。
正解留存基准因品类而异。高频工具类、内容类 AI 产品可以期待 40% 以上的月留存;低频高价值产品(比如合同审阅 AI)用户一年才用几次,留存率天然低,但单次价值极高。盲目对标“别人家的漂亮曲线”会带来灾难性改版——小林要是拿隔壁超市的日购客群要求自己咖啡店的月回头率,早就砍掉招牌手冲了。
为何常见:行业文章里常晒爆款产品的漂亮曲线,幸存者偏差让人误以为那是及格线,而不知道自己产品的品类逻辑根本不同。
面试题
Q1. 留存曲线最核心的横轴和纵轴分别表示什么?
- A.时间与留存率← 正确答案
- B.用户数与时间
- C.留存率与付费额
- D.群组与渠道数
答案:A。留存曲线的横轴是用户加入产品后的时间(第几天),纵轴是该时刻仍活跃的用户比例。它就像小林咖啡馆账本上的“回头客曲线”:时间轴上每一天对应一个还愿意回来的客人比例。用户数、付费额和渠道都不是留存曲线的基本坐标。
Q2. 同期群(Cohort)分析中,“一个群组”通常指什么?
- A.同一时间段首次加入的用户← 正确答案
- B.兴趣标签相同的用户
- C.年龄结构相同的用户
- D.地理位置相同的用户
答案:A。同期群按“加入时间”划分,比如某月注册的所有用户。这就像小林按“第一次到店的月份”给客人分班,同班同学才有可比性——五月的客人和四月的客人是两批人,不能混着算。兴趣、年龄、地域是用户画像维度,不是同期群的定义。
Q3. 幂律衰减模型 R(t)=R₀·t^(−b) 中,参数 b 的含义是什么?
- A.首日留存水平
- B.留存衰减快慢← 正确答案
- C.新增用户规模
- D.曲线平台高度
答案:B。R₀ 决定起点,t 是时间,b 是指数衰减参数:b 越大,t 的负次方衰减越剧烈,曲线掉得越快。就像咖啡店里季节特调的 b 值高、招牌手冲的 b 值低——前者客人来一次就消失,后者还能留住回头客。它与首日留存、用户规模和平台值都不是一回事。
Q4. 判断一条留存曲线是否进入平台期,最合适的依据是?
- A.最近一天的抖动幅度
- B.平滑后趋势线的斜率← 正确答案
- C.首日留存的具体数值
- D.总注册用户的数量
答案:B。平台期意味着留存率趋于稳定,只有看平滑后趋势线的斜率是否接近零才靠谱。单日抖动是噪声,首日数值只描述起点,注册总量与单批用户的留存行为无关。小林看的是“最近一周平均回头率变没变”,而不是某个晚上的客流起伏。
Q5. 处理留存曲线上的短期波动,最简单常用的方法是?
- A.删除异常高的数据
- B.计算移动平均值← 正确答案
- C.只保留周末数据
- D.拉长一次发布周期
答案:B。移动平均用一段时间的平均留存掩掉单日噪声,是最直接的去抖手段。删数据会引入人为偏差,只留周末则丢弃大量信息,发布周期与去抖没有关系。小林每天看的就是“七天平均回头率”,所以下雨天的客流失不会让他误判。
Q6. 某 AI 应用第 30 天留存曲线突然下滑 5%,科学的第一步应该是什么?
- A.立即回滚上一个版本
- B.拆解同期群确认范围← 正确答案
- C.加大投放拉新冲淡降幅
- D.忽略波动等待自然恢复
答案:B。先拆群组定位问题——是哪些用户、哪些渠道、哪些版本受影响,才能决定下一步是回滚还是优化。直接回滚可能误伤有效改动,拉新只是掩盖症状,完全忽略则可能错过真问题。就像小林发现回头客变少,先看是不是下雨,而不是急着换掉招牌手冲。
Q7. 分析“功能使用频率”与“用户留存”的关系,哪种做法最合理?
- A.计算两者的相关系数← 正确答案
- B.凭产品经理的个人经验
- C.看应用商店的海量评论
- D.参考竞品的功能清单
答案:A。用相关系数量化使用频率与留存之间的相关强度,是最直接的数据化方法。经验、评论和竞品清单都只是定性输入,无法给出“相关 0.58”这样可决策的体检表。小林的判断从“感觉手冲重要”升级为“相关系数 0.62”之后,才敢动菜单。
Q8. 下列哪些现象适合用“同期群对比”来定位?
- A.新版注册流程是否改善留存← 正确答案
- B.不同获客渠道的质量高低← 正确答案
- C.用户性别比例的分布差异
- D.运营活动带来的留存增益← 正确答案
答案:ABD。同期群对比适合验证“某一时点开始的变化”:新版上线、渠道切换、运营活动,都能用前后群组的留存差异定位效果。性别比例不是时间维度上的变化,不属于同期群分析的典型场景。就像小林拿五月做活动的新客和四月没活动的新客比,就能看出体验券值不值得继续发。
Q9. 关于留存曲线中的“关键行为”,下列说法正确的是?
- A.关键行为常出现在首次使用闭环中← 正确答案
- B.所有功能都值得做成关键行为
- C.关键行为与留存存在显著关联← 正确答案
- D.关键行为一定能用因果证明作用
答案:AC。关键行为通常藏在首次使用闭环里,并且与留存显著相关。但并非所有功能都值得引导,而且相关不等于因果——要证明关键行为真的驱动留存,还得靠分组实验。小林发现“加微信”与回头率强相关,但他最终靠实验才确认它是原因而不是附带现象。
Q10. 一份科学的留存诊断报告通常应包括哪些部分?
- A.平滑后的长期趋势与形态← 正确答案
- B.同期群之间的差异对比← 正确答案
- C.基于实验验证的优化结论← 正确答案
- D.全部用户的原始隐私数据
答案:ABC。完整诊断要覆盖“形态 → 对比 → 归因 → 验证”的闭环:先看平滑后的趋势与形态,再拆同期群差异,最后用实验验证策略效果。隐私数据既无必要也不合规,属于安全红线。小林的月度“留存会诊”正是前三项的循环:看曲线、比群组、做实验,缺一环都可能导向误判。