← 返回 QuantGrowth 首页

推荐什么功能更能留住用户:留存算法建模

增长
增长主启留存

假设一个应用首页有多个服务入口:充值、健身、外卖、电影票、小游戏……有限的推荐位究竟应该展示什么?
截屏2026-08-25 15.51.14
只优化点击率,模型容易偏爱标题醒目、利益刺激强的服务;只看次日留存,又可能把用户本来就会回来的功劳算给推荐内容。留存算法要解决的是:哪些服务不仅能吸引点击,还更可能让用户第二天回来?

把留存拆成点击和点击后留存

最直观的做法,是把“曝光后产生点击并在次日留存”拆成两个阶段。对用户、服务和场景特征 ​x,定义:

pCTR(x)=P(C=1\mid X=x)

它表示服务曝光后发生点击的概率。再定义:

pCRR(x)=P(R=1\mid C=1,X=x)

它表示用户点击该服务后,第二天再次打开应用的概率。根据条件概率,两者相乘得到“点击且次日留存”的联合概率:

pCTCRR(x)=pCTR(x)\times pCRR(x)

截屏2026-08-25 15.52.51
这个目标比单纯优化CTR前进了一步。某项服务虽然容易获得点击,但如果点击后的用户不再回来,它的长期排序价值就会下降。相反,一项入口点击率不是最高,却能帮助用户完成真正有价值的任务,可能获得更多流量。

例如,用户看到健身内容后浏览了健身房网友晒图,第二天回来购买私教课。两次行为存在连续性,昨日服务很可能参与了留存形成。模型希望找到的,正是这种可以延续到下一次访问的价值。

没点击的人,也可能自然留存

两阶段模型有一个明显缺口:推荐入口的点击率往往不高,但大量未点击用户第二天仍然会回来。

他们可能通过搜索、消息或其他功能获得了价值,也可能本来就是稳定活跃用户。如果只拿点击用户训练 ​pCRR,模型学到的只是“点击人群中的留存规律”,却要给全体曝光用户打分,训练人群和预测人群并不一致。
截屏2026-08-25 15.52.31
因此,还需要估计未点击路径:

pNCRR(x)=P(R=1\mid C=0,X=x)

全体曝光用户的预测留存率可以写成:

P(R=1\mid X=x)=pCTR(x)pCRR(x)+[1-pCTR(x)]pNCRR(x)

这个公式将用户分成两条互斥路径:点击后留存,以及未点击仍留存。它既没有把未点击等同于流失,也更完整地利用了曝光样本。

工程上可以共享底层的用户、服务和场景特征,同时学习点击、点击后留存与未点击留存三个任务。共享层负责学习共性,任务塔分别拟合不同路径,最终再按照概率关系组合。

不过,​pCRR-pNCRR 不能直接解释为“点击带来的留存增量”。点击不是随机发生的:高意愿、高活跃用户本来就更容易点击,也更容易留存。这里首先解决的是预测完整性,不是因果归因。

用户回来,不代表昨日推荐有效

第二个问题来自次留标签本身。用户昨天点击足浴按摩,今天回来点了烧烤外卖。数据上同样是“点击后次留”,但很难说是足浴内容带来了烧烤行为。
截屏2026-08-25 15.53.39
如果把所有次日打开都归功于昨日推荐,模型会把用户自身的活跃倾向错误地记到服务头上。可以先将留存拆成两类:

  • 相关留存:昨日浏览健身内容,今日购买健身课程。用户特征和服务特征都参与预测。
  • 非相关留存:昨日浏览足浴,今日购买烧烤。结果更多反映用户自身的回访概率,昨日服务不应得到同等贡献。

“相关”不能只依赖人工列一张品类表。可以结合业务类目、行为序列、内容语义和时间间隔,建立关联度:

s(i,j)\in[0,1]

​i 表示昨日推荐的服务,​j 表示次日发生的行为。关联度高,服务特征承担更多训练信号;关联度低,则主要由用户侧的自然留存模型解释。

还可以增加更严格的归因窗口:用户点击推荐后,是否完成了与该服务相关的核心行为;次日回来后,首次或主要行为是否仍与该服务有关;两个行为之间是否存在合理的业务链路。相比“第二天打开就算推荐成功”,这种标签更接近真实价值。

但它仍然不能完全证明推荐造成了留存。用户可能本来就计划购买健身课,昨日点击只是意图的表现。预测模型可以找到相关性,若要回答“如果不推荐,他还会不会回来”,则需要随机实验和增量模型。

一套可落地的建模步骤

第一步,固定样本口径。以一次服务曝光为样本,特征只能来自曝光之前;点击和D1留存使用明确的时间窗口,防止数据穿越。

第二步,分别构造点击、点击后留存和未点击留存标签,并确保三个任务的人群定义一致。

第三步,为次留增加行为关联度或相关留存标签,减少服务侧的错误归因。

第四步,离线评估除了AUC,还要检查概率校准。涉及概率相乘时,“预测30%”是否真的接近30%,比单纯排序更重要。

第五步,通过线上实验观察CTR、服务任务完成率、D1和D7留存,同时监控退出、屏蔽和投诉。短期点击上涨,不等于长期价值提升。

留存建模最容易犯的错误,是把“用户回来”直接等同于“这次推荐有效”。一个更可靠的模型会依次回答:用户会不会点击,点击后是否复访,未点击时是否也会回来,以及这次复访是否与昨日推荐相关。

做到这里,模型才从“推荐最容易被点击的功能”,走向“推荐更有可能延续用户价值的功能”。