张老板在小区门口开了一家新面馆。没有老顾客,没有大众点评评价,没有口口相传的口碑。开业第一天,新客人小林走进来,看着菜单一愣:我不知道你家什么好吃,你家也不知道我口味如何。店员很聪明:先推荐招牌牛肉面稳定体验,又问了一句“吃不吃辣”,还免费送上一小碟新研发的卤味试吃。三天后,小林成了熟客。推荐系统的冷启动,就是这套“新店求生术”:在新用户、新物品、甚至全新系统还没有任何数据时,先用各种办法送出第一碗面,再把信息一点点收集回来,最终让每个人吃到自己爱的那一口。本文从企业实战视角,拆解冷启动的阶段、信号、算法和工程落地。
掌握推荐系统冷启动方案,等于掌握新用户留存的临门一脚:它决定了用户第一次体验好不好,也决定了新物品有没有机会被看见。对推荐算法工程师和技术负责人来说,这是一项能直接提升业务指标的硬核技能。
可视化演示
本节配有交互动效(进入视口后自动加载,约 3KB)。
冷启动阶段划分 ——从零信号到温启动 冷启动(0次): 热门/注册信息推荐 温启动(1-10次): 基于内容推荐 热启动(>10次): 协同过滤/深度模型 首次点击是关键转折点:0→1次交互切换策略
认识冷启动
新面馆能不能活下来,往往取决于开业前一个月。张老板没有老客户名单,没有菜品销量排名,也没有“和你口味相似的人”这个数据。系统的推荐列表一片空白。推荐系统里的冷启动,就是这种“没有历史台账”的状态:新用户没有行为记录,新物品没有曝光反馈,甚至整条推荐链路都是全新的。
从用户视角看,新用户冷启动像第一次进店的客人,系统不知道他喜欢清淡还是重口、爱吃面还是吃饭;从物品视角看,新物品冷启动像刚研发出来的卤味,没有点击、没有下单、没有评价,算法不知道它该被推给谁;从系统视角看,系统冷启动更像整家店刚开业,连“哪个菜放菜单第一位”都要从零试。
企业里的冷启动往往三种情况同时出现:新 App 上线、新用户注册、新商品入库。处理的关键不是等数据自己攒起来,而是主动设计“第一顿饭”,让用户先吃上、先反馈,再逐步形成画像。张老板的第一周订单不多,但每一单都记录下了“辣度、面型、是否加卤蛋”,这就是冷启动的第一桶金。
冷启动三阶段
张老板把新店经营分成三个阶段:第一周是引导期,第二到四周是试探期,一个月后进入稳定期。引导期的目标是让用户快速建立画像。面馆的做法是“客人坐下先问口味”,推荐系统则在注册页让用户选择兴趣标签,或用少量热门内容快速试探点击偏好。
试探期的核心是“给一点意外”。张老板会在每碗面里随机加半份小菜,观察客人吃不吃;推荐系统则要在推荐列表里混入一定比例的新品类、新作者、新品。这时候不要只推最大众的内容,否则数据会越来越偏,用户也会觉得“推荐来推荐去就那几样”。
稳定期则进入精细化运营。此时画像已经比较完整,推荐系统可以叠加个性化排序,把最可能点击的物品排到前面。判断冷启动是否结束,需要看考核指标:例如用户前 7 日是否完成 5 次有效交互,新物品曝光是否达到 1000 次且点击率稳定。指标不是拍脑袋,而是和业务目标绑定:电商看下单率,内容平台看阅读时长,面馆则看“复购率”。
收集冷启信号
张老板怎么知道小林爱吃什么呢?最直接的是问,这是显式反馈,像注册时的兴趣标签、点赞、评分、收藏。但很多客人懒得说,张老板于是观察碗底:面吃光了吗?卤味动了几筷子?这就是隐式反馈,像推荐系统里的点击、曝光时长、滚动深度、加购行为。
单一线索不可靠。小林这次点麻辣是因为朋友推荐,不代表他个人偏好;一条视频播放时间长也可能只是忘记关页面。企业会把多源数据合并起来:注册信息、设备型号、地理位置、历史订单,甚至天气与时段。比如雨天多推热汤面,晚上多推夜宵,这些边角信息能在冷启动期大大提升命中率。
但信号不能全信,尤其是样本少的时候。为了判断一条信号能不能更新用户画像,工程上会用一个置信度公式:
张老板不会因为一位客人说“辣”就彻底改变菜单,但如果有十个客人都说太辣,他一定会调整。置信度公式就是在做同样的事:等证据足够多时,才让信号真正影响推荐。
- 分子 n已观测到的行为次数,比如小林一周内点了三次面,n=3。
- 分母 n+λ真实次数加上平滑参数。λ 越大,系统对少量数据越“不放心”。
- 整体 conf样本少时 conf 接近 0,样本多时 conf 接近 1。它决定这条信号要不要进入画像更新。
冷启算法组合
冷启动期没有用户行为数据,传统协同过滤算法用不上,因为“和你相似的人”还不存在。张老板也有同样的问题:没有熟客,怎么推荐菜?他的答案是三招组合:招牌菜、看人下菜、熟人带路。
招牌菜对应流行度召回。刚开业没有个性化数据时,先把全站最热、好评最多的内容推给所有人,保证体验下限。计算流行度不能只看点击次数,还要考虑曝光量:
看人下菜对应基于规则和内容画像的推荐。张老板发现南方客人更爱吃清汤面,健身客人更爱选鸡胸肉沙拉;推荐系统则利用用户注册信息、物品标签做特征匹配。比如物品有“甜”“辣”“轻食”标签,用户有口味偏好向量,两者通过相似度计算找出最匹配的物品。
等用户数据攒到一定程度,协同过滤才能登场。张老板开店三个月后,发现“喜欢牛肉面的客人大多也喜欢口水鸡”,于是可以给小林推荐老王爱吃的卤味。推荐系统也一样,有了用户行为矩阵后,才能用协同过滤找到相似用户或相似物品。冷启动期的正确姿势是“流行度保底、规则和画像补位、协同过滤慢慢接棒”。
- click_i / show_i物品 i 的点击率,越高说明内容质量越好。
- log(1 + show_i)曝光量的对数,让有一定曝光基础的物品获得额外加分。这样的“热门”更稳健。
- 整体 pop(i)点击率与曝光加成的乘积,用来给新物品做最粗粒度的排序。
探索与利用
有了招牌菜和画像,张老板还是面临一个问题:要不要把新研发的卤味推给客人?如果只推热门菜,客人体验安全但系统永远是老样子;如果疯狂推新品,客人可能踩雷再也不来。这就是探索与利用的困境:利用是让现有数据变现,探索是为了未来数据积累。
最简单的策略是 epsilon 贪心。每个客人进店,张老板都有一个小概率推荐随机菜品,其余时间按当前估计的最优菜来推荐:
除了 epsilon 贪心,还有更聪明的策略。UCB 会给每个物品估计一个“潜力上界”:点击率越不确定,越有机会被推荐,相当于给新菜一个“试试看”的加分项。汤普森采样则更贴近贝叶斯思维:为每个物品维护一个 Beta 分布,每次按分布采样,采样值高的物品胜出。这些方法的共同点是:给新物品机会,但不拿用户体验冒险。
- argmax_a μ̂_a选出当前估计点击率最高的物品,这是利用。
- 随机选一个 a从候选物品里随机选一个,这是探索。
- ε 概率探索发生的比例。ε 大,探索多;ε 小,利用多。开业初期 ε 可以调大,后期逐渐调小。
企业工程落地
张老板的方法论再聪明,如果只靠脑子和纸笔记账,开三家店就会崩溃。企业做冷启动也一样,必须有工程化流水线。
第一步是数据埋点。面馆要有“点单系统”记录每份面卖给了谁;推荐系统要在 App 里埋下曝光、点击、停留、下单等事件。没有埋点,后面所有算法都是空中楼阁。第二步是特征工程。把原始行为变成可用特征,例如用户最近 3 天点击次数、物品上线 24 小时点击率、用户与物品标签的匹配度。特征不是越多越好,而是要围绕冷启动目标:尽快建立可信画像。
第三步是模型上线。冷启动阶段最好用分层回退策略:个性化模型失效时,回退到内容画像;画像也不足时,回退到流行度。就像面馆临时没有牛肉,也能迅速做一碗番茄鸡蛋面。第四步是效果评估,要用线上 A/B 实验验证新策略是否真的有效:
- CTR_new - CTR_old新策略点击率减去旧策略点击率,得到绝对提升。
- 除以 CTR_old把绝对提升转换为相对提升,方便在不同业务间比较。
- 整体 LiftLift 为正,表示新策略带来正向收益;为负,则应该回滚。
实战路线图
从零到有落地冷启动,不能想到哪做到哪。张老板的路线是先定流程,再选算法,最后迭代。推荐系统团队也建议这样推进。
整体流程分五步:第一步,盘点现有数据,确定哪些用户和物品属于冷启动对象;第二步,设计信号采集方案,把显式和隐式反馈埋点补全;第三步,搭建“流行度 + 规则 + 画像”的兜底推荐;第四步,加入探索策略,给新物品曝光机会;第五步,用 A/B 实验持续评估和迭代。
复盘一个真实案例:某内容平台上线新作者冷启动,一开始所有新作者都只推给大流量用户,结果点击率极低。后来改成“先小流量测试内容画像,找出潜在兴趣人群,再逐步扩量”,同时把新作者打上风格标签,配合 UCB 策略决定探索流量。三个月后,新作者内容曝光量提升 40%,人均阅读时长提升 12%。
常见坑点也值得注意:一是冷启动流量分配不合理,要么探索过猛伤害体验,要么探索太少新内容永远冒不出来;二是不做数据回流,行为日志没有及时进入训练;三是一刀切用热门兜底,导致画像同质化。演进方向则是从规则到模型:先用简单策略跑通,再逐步引入深度模型、在线学习,让冷启动变成“热启动”的一部分。
AI 应用场景
新用户首登推荐
阶段:召回与兜底排序
解决的问题:新用户注册后没有任何行为数据,传统协同过滤无法建模。传统做法是随机推热门内容,导致新用户感觉“推荐千篇一律”;AI 冷启动方案用兴趣标签、设备信息、位置信息等代替行为数据,先做内容画像匹配,再用小流量探索快速试出用户口味。
具体案例:某电商 App 新用户注册后,系统根据“性别、城市、点击过的图文”生成冷启动画像,第一屏混合展示热门商品、地域特色商品和两个探索位。24 小时内用户产生 5 次点击后,画像进入个性化排序,下单转化率比旧版提升 18%。
新品上架冷启动
阶段:物品召回与流量分配
解决的问题:新品没有点击和转化数据,很难进入推荐池。AI 方案先基于文本、图片、类目等生成物品内容特征,再由流行度加权给出初始分,配合 UCB 探索策略给新品分配少量曝光。
具体案例:某生鲜电商上架一款新水果,系统提取“甜度、产地、价格带”等标签,找到过去购买过相似水果的用户进行试探投放。首周曝光 3000 次,点击率稳定后逐渐放量,最终成为该品类 Top 3 商品。
内容平台新作者冷启动
阶段:内容理解与兴趣匹配
解决的问题:新作者的短视频没有完播数据,算法不知道推给谁。AI 方案将视频抽帧、识别字幕、提取话题标签,建立内容向量;再结合用户历史兴趣,用小流量试探匹配,让好内容不被埋没。
具体案例:某短视频平台新作者发布第一条美食视频,系统识别出“川菜、探店、快节奏剪辑”标签,推送给曾观看同类视频的用户。探索期完播率高于大盘后,系统逐步扩大推荐流量,三周内该作者粉丝破万。
Python 演示
import mathimport random ITEMS = [ {"id": 1, "tags": [0, 1, 0], "popularity": 0.8}, {"id": 2, "tags": [1, 0, 1], "popularity": 0.3}, {"id": 3, "tags": [1, 1, 0], "popularity": 0.1},] USER = {"pref": [1, 1, 0]} def sigmoid(x): return 1.0 / (1.0 + math.exp(-x)) class ColdStartEngine: def __init__(self, items, epsilon=0.25): self.items = items self.epsilon = epsilon self.clicks = {item["id"]: 0 for item in items} self.shows = {item["id"]: 0 for item in items} def content_score(self, item, user): same = sum(a & b for a, b in zip(user["pref"], item["tags"])) return 0.3 + 0.4 * sigmoid(same) + 0.3 * item["popularity"] def recommend(self, user): if random.random() < self.epsilon: return random.choice(self.items) return max(self.items, key=lambda it: self.content_score(it, user)) def record_show(self, item): self.shows[item["id"]] += 1 def record_click(self, item): self.clicks[item["id"]] += 1 def run(self, user, rounds=200): for _ in range(rounds): item = self.recommend(user) self.record_show(item) p = self.content_score(item, user) if random.random() < p: self.record_click(item) for item in self.items: show = self.shows[item["id"]] click = self.clicks[item["id"]] ctr = click / show if show > 0 else 0.0 print(f"item {item['id']}: show={show}, click={click}, ctr={ctr:.3f}") if __name__ == "__main__": engine = ColdStartEngine(ITEMS, epsilon=0.2) engine.run(USER, rounds=500)
def content_score(self, item, user):计算物品与用户画像的匹配分,相当于服务员“看人下菜”。same = sum(a & b for a, b in zip(user["pref"], item["tags"]))统计用户偏好与物品标签的重叠数量。if random.random() < self.epsilon:以 epsilon 概率进入探索分支,随机推荐一个物品。return max(self.items, key=lambda it: self.content_score(it, user))否则选择当前匹配分最高的物品进行利用。ctr = click / show if show > 0 else 0.0计算每个物品的点击率,作为后续评估冷启动效果的依据。
常见误区
误区冷启动阶段没有数据,直接把全站点击量最高的物品推给新用户就行了,简单又稳妥。
正解热门物品只能保证基础体验,但它会让所有新用户看到同样的内容,画像趋同,探索不足。真正的冷启动要把“热门保底”和“画像试探”结合起来:用热门稳住下限,用少量探索位发现用户个性。
为何常见:因为热门物品的统计口径最直观,容易让人误以为“点击高就是用户喜欢”,忽略了冷启动的核心目标是快速收集个性化信号。
误区等协同过滤模型上线,新用户和新物品自然会通过相似用户被推荐,不需要额外方案。
正解协同过滤依赖行为矩阵,新用户没有行为、新物品没有曝光,它们在矩阵里是空行和空列,根本无法参与计算。冷启动方案是协同过滤的前置条件,先用流行度、规则和内容画像积累第一波数据,协同过滤才能生效。
为何常见:因为协同过滤是推荐系统最经典的算法,很多人以为它是万能钥匙,忽略了它“数据饥渴”的本质。
误区新物品需要曝光,那就把 80% 的流量都给探索策略,让所有新内容都跑一遍。
正解过度探索会让用户频繁看到不感兴趣的内容,导致点击率下降、用户流失。正确的做法是控制探索比例,并根据反馈动态调整。epsilon 贪心里,epsilon 应该从大逐渐变小;UCB 则会自动让表现差的物品减少曝光。
为何常见:因为“新物品要曝光”这个直觉太强,容易让人忽略用户感受和业务指标的长期损失。
误区新用户完成注册、点了几个商品之后,冷启动就结束了,后面交给正常推荐流程。
正解冷启动是一个持续渐进的过程。用户可能隔几天换口味,新物品也会持续上架;模型对某些用户、某些物品的信噪比仍然很低。企业通常用“置信度公式”判断信号是否足够,而不是简单按天数或行为数量一刀切。
为何常见:因为“冷”和“热”听起来像开关,但推荐系统中的数据完备度其实是连续变化的光谱。
误区冷启动模型在离线测试 AUC 提升,就立刻全量上线,不需要再做验证。
正解离线指标高可能来自样本偏置或特征泄露,线上真实流量分布与离线数据不一致。正确做法是先小流量 A/B 实验,观察点击率、留存、转化等业务指标,确认 Lift 为正再逐步放量。
为何常见:因为离线评估成本低、速度快,容易让人低估线上环境的复杂性和不确定性。
面试题
Q1. 推荐系统中最常见的冷启动问题是?
- A.新用户缺历史数据时如何推荐← 正确答案
- B.推荐系统响应太慢如何优化
- C.全量用户推荐列表如何排序
- D.推荐物品如何做库存管理
答案:A。冷启动的核心是缺乏历史交互数据,A 说中了新用户冷启动的定义。响应速度是工程问题,排序是精排问题,库存管理是供应链问题,都不是冷启动的本质。
Q2. 哪个阶段最适合让用户主动选择兴趣标签?
- A.引导期收集画像数据← 正确答案
- B.试探期多推不同品类
- C.稳定期做个性化重排
- D.衰退期做流失召回
答案:A。引导期目标就是快速建立用户画像,让用户主动选标签是效率很高的显式反馈。试探期强调多样性,稳定期强调个性化,衰退期则关注召回,与建立画像无关。
Q3. 新物品刚上架且曝光很少时,首选策略是?
- A.推给全量用户试试
- B.用内容特征做画像召回← 正确答案
- C.把它加入黑名单下架
- D.等有热度再做协同过滤
答案:B。新物品没有行为数据,但一定有标题、类目、标签等内容特征,可以用内容画像先找到潜在兴趣人群。全量推给所有人风险太高,直接下架等于放弃探索,等热度则会让新品永无出头之日。
Q4. 在 epsilon 贪心策略中,增大 epsilon 意味着?
- A.更多随机探索新物品← 正确答案
- B.更依赖历史点击数据
- C.更多利用热门推荐
- D.降低模型计算复杂度
答案:A。epsilon 是随机探索的概率,epsilon 越大,系统越频繁地随机尝试候选物品。B 和 C 描述的是“利用”行为,D 与计算复杂度无关。
Q5. UCB 策略中的“不确定性奖励”表示?
- A.对点击率的一个惩罚
- B.对不确定性的一个奖励← 正确答案
- C.对曝光成本的一个补偿
- D.对时间衰减的一个系数
答案:B。UCB 会给曝光次数少的物品额外加分,让探索更有方向性,本质是对不确定性给奖励。它不惩罚点击率,不补偿成本,也不是时间衰减系数。
Q6. 信号置信度公式 conf = n / (n + λ) 中,λ 越大意味着?
- A.少量样本信任度上升快
- B.曝光量会变得更加稀疏
- C.需要更多样本才信任信号← 正确答案
- D.点击率会变得明显更高
答案:C。λ 是平滑系数,λ 越大,分母增大越快,需要更多行为样本才能让 conf 接近 1。所以 λ 越大,系统对信号越保守。
Q7. 冷启动策略上线后,最合理的评估方式是?
- A.看服务器资源占用率
- B.只比较离线 AUC 指标
- C.新版和旧版做 AB 实验对比← 正确答案
- D.统计模型参数量大小
答案:C。线上真实效果必须通过 A/B 实验对比新旧策略的点击率、留存、转化等指标来验证。离线指标可以作为参考,但不能替代线上实验;资源占用和参数量与推荐效果无关。
Q8. 哪些属于收集冷启动信号的方式?
- A.注册时选择兴趣标签← 正确答案
- B.实时采集点击和浏览← 正确答案
- C.结合设备和地区特征← 正确答案
- D.直接复制竞品推荐列表
答案:ABC。兴趣标签是显式反馈,点击浏览是隐式反馈,设备地区属于多源特征,三者都能丰富冷启动画像。复制竞品列表既不合规,也没有用户个性化价值。
Q9. 新物品冷启动可用的推荐策略有哪些?
- A.基于内容特征的召回← 正确答案
- B.小流量随机试吃探索← 正确答案
- C.物品流行度加权兜底← 正确答案
- D.只等待用户搜索记录
答案:ABC。内容特征召回解决“推给谁”,小流量探索积累反馈,流行度加权保证一定曝光。只等待搜索记录是被动行为,不适合冷启动期主动验证新物品。
Q10. 哪些做法符合企业冷启动落地原则?
- A.先埋点再逐步优化模型← 正确答案
- B.用分层回退策略兜底← 正确答案
- C.全部流量都给探索策略
- D.离线与线上 AB 实验结合← 正确答案
答案:ABD。埋点是数据前提,分层回退保证推荐效果不崩,离线与线上结合用于评估迭代。全部流量都给探索策略会伤害用户体验,不符合企业权衡原则。