张老板在小区门口开了一家新面馆。没有老顾客,没有大众点评评价,没有口口相传的口碑。开业第一天,新客人小林走进来,看着菜单一愣:我不知道你家什么好吃,你家也不知道我口味如何。店员很聪明:先推荐招牌牛肉面稳定体验,又问了一句“吃不吃辣”,还免费送上一小碟新研发的卤味试吃。三天后,小林成了熟客。推荐系统的冷启动,就是这套“新店求生术”:在新用户、新物品、甚至全新系统还没有任何数据时,先用各种办法送出第一碗面,再把信息一点点收集回来,最终让每个人吃到自己爱的那一口。本文从企业实战视角,拆解冷启动的阶段、信号、算法和工程落地。

岗位关联

掌握推荐系统冷启动方案,等于掌握新用户留存的临门一脚:它决定了用户第一次体验好不好,也决定了新物品有没有机会被看见。对推荐算法工程师和技术负责人来说,这是一项能直接提升业务指标的硬核技能。

目录
  1. 可视化演示
  2. 认识冷启动
  3. 冷启动三阶段
  4. 收集冷启信号
  5. 冷启算法组合
  6. 探索与利用
  7. 企业工程落地
  8. 实战路线图
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

本节配有交互动效(进入视口后自动加载,约 3KB)。

冷启动阶段划分 ——从零信号到温启动 冷启动(0次): 热门/注册信息推荐 温启动(1-10次): 基于内容推荐 热启动(>10次): 协同过滤/深度模型 首次点击是关键转折点:0→1次交互切换策略

认识冷启动

新面馆能不能活下来,往往取决于开业前一个月。张老板没有老客户名单,没有菜品销量排名,也没有“和你口味相似的人”这个数据。系统的推荐列表一片空白。推荐系统里的冷启动,就是这种“没有历史台账”的状态:新用户没有行为记录,新物品没有曝光反馈,甚至整条推荐链路都是全新的。

从用户视角看,新用户冷启动像第一次进店的客人,系统不知道他喜欢清淡还是重口、爱吃面还是吃饭;从物品视角看,新物品冷启动像刚研发出来的卤味,没有点击、没有下单、没有评价,算法不知道它该被推给谁;从系统视角看,系统冷启动更像整家店刚开业,连“哪个菜放菜单第一位”都要从零试。

企业里的冷启动往往三种情况同时出现:新 App 上线、新用户注册、新商品入库。处理的关键不是等数据自己攒起来,而是主动设计“第一顿饭”,让用户先吃上、先反馈,再逐步形成画像。张老板的第一周订单不多,但每一单都记录下了“辣度、面型、是否加卤蛋”,这就是冷启动的第一桶金。

冷启动三阶段

张老板把新店经营分成三个阶段:第一周是引导期,第二到四周是试探期,一个月后进入稳定期。引导期的目标是让用户快速建立画像。面馆的做法是“客人坐下先问口味”,推荐系统则在注册页让用户选择兴趣标签,或用少量热门内容快速试探点击偏好。

试探期的核心是“给一点意外”。张老板会在每碗面里随机加半份小菜,观察客人吃不吃;推荐系统则要在推荐列表里混入一定比例的新品类、新作者、新品。这时候不要只推最大众的内容,否则数据会越来越偏,用户也会觉得“推荐来推荐去就那几样”。

稳定期则进入精细化运营。此时画像已经比较完整,推荐系统可以叠加个性化排序,把最可能点击的物品排到前面。判断冷启动是否结束,需要看考核指标:例如用户前 7 日是否完成 5 次有效交互,新物品曝光是否达到 1000 次且点击率稳定。指标不是拍脑袋,而是和业务目标绑定:电商看下单率,内容平台看阅读时长,面馆则看“复购率”。

收集冷启信号

张老板怎么知道小林爱吃什么呢?最直接的是问,这是显式反馈,像注册时的兴趣标签、点赞、评分、收藏。但很多客人懒得说,张老板于是观察碗底:面吃光了吗?卤味动了几筷子?这就是隐式反馈,像推荐系统里的点击、曝光时长、滚动深度、加购行为。

单一线索不可靠。小林这次点麻辣是因为朋友推荐,不代表他个人偏好;一条视频播放时间长也可能只是忘记关页面。企业会把多源数据合并起来:注册信息、设备型号、地理位置、历史订单,甚至天气与时段。比如雨天多推热汤面,晚上多推夜宵,这些边角信息能在冷启动期大大提升命中率。

但信号不能全信,尤其是样本少的时候。为了判断一条信号能不能更新用户画像,工程上会用一个置信度公式:

张老板不会因为一位客人说“辣”就彻底改变菜单,但如果有十个客人都说太辣,他一定会调整。置信度公式就是在做同样的事:等证据足够多时,才让信号真正影响推荐。

conf=nn+λ\text{conf} = \frac{n}{n + \lambda}
这个公式的意思是:行为样本越多,信号越可信;样本少时,系统应该保持保守。
  1. 分子 n已观测到的行为次数,比如小林一周内点了三次面,n=3。
    nn
  2. 分母 n+λ真实次数加上平滑参数。λ 越大,系统对少量数据越“不放心”。
    n+λn + \lambda
  3. 整体 conf样本少时 conf 接近 0,样本多时 conf 接近 1。它决定这条信号要不要进入画像更新。
    nn+λ\frac{n}{n+\lambda}

冷启算法组合

冷启动期没有用户行为数据,传统协同过滤算法用不上,因为“和你相似的人”还不存在。张老板也有同样的问题:没有熟客,怎么推荐菜?他的答案是三招组合:招牌菜、看人下菜、熟人带路。

招牌菜对应流行度召回。刚开业没有个性化数据时,先把全站最热、好评最多的内容推给所有人,保证体验下限。计算流行度不能只看点击次数,还要考虑曝光量:

看人下菜对应基于规则和内容画像的推荐。张老板发现南方客人更爱吃清汤面,健身客人更爱选鸡胸肉沙拉;推荐系统则利用用户注册信息、物品标签做特征匹配。比如物品有“甜”“辣”“轻食”标签,用户有口味偏好向量,两者通过相似度计算找出最匹配的物品。

等用户数据攒到一定程度,协同过滤才能登场。张老板开店三个月后,发现“喜欢牛肉面的客人大多也喜欢口水鸡”,于是可以给小林推荐老王爱吃的卤味。推荐系统也一样,有了用户行为矩阵后,才能用协同过滤找到相似用户或相似物品。冷启动期的正确姿势是“流行度保底、规则和画像补位、协同过滤慢慢接棒”。

pop(i)=clickishowi×log⁡(1+showi)\text{pop}(i) = \frac{\text{click}_i}{\text{show}_i} \times \log(1 + \text{show}_i)
这个公式用点击率衡量受欢迎质量,同时给曝光量一个对数加成,避免只推极少人点过的新奇内容。
  1. click_i / show_i物品 i 的点击率,越高说明内容质量越好。
    clickishowi\frac{\text{click}_i}{\text{show}_i}
  2. log(1 + show_i)曝光量的对数,让有一定曝光基础的物品获得额外加分。这样的“热门”更稳健。
    log⁡(1+showi)\log(1 + \text{show}_i)
  3. 整体 pop(i)点击率与曝光加成的乘积,用来给新物品做最粗粒度的排序。
    clickishowi×log⁡(1+showi)\frac{\text{click}_i}{\text{show}_i} \times \log(1 + \text{show}_i)

探索与利用

有了招牌菜和画像,张老板还是面临一个问题:要不要把新研发的卤味推给客人?如果只推热门菜,客人体验安全但系统永远是老样子;如果疯狂推新品,客人可能踩雷再也不来。这就是探索与利用的困境:利用是让现有数据变现,探索是为了未来数据积累。

最简单的策略是 epsilon 贪心。每个客人进店,张老板都有一个小概率推荐随机菜品,其余时间按当前估计的最优菜来推荐:

除了 epsilon 贪心,还有更聪明的策略。UCB 会给每个物品估计一个“潜力上界”:点击率越不确定,越有机会被推荐,相当于给新菜一个“试试看”的加分项。汤普森采样则更贴近贝叶斯思维:为每个物品维护一个 Beta 分布,每次按分布采样,采样值高的物品胜出。这些方法的共同点是:给新物品机会,但不拿用户体验冒险。

π(a)={arg⁡max⁡aμ^a,1−ϵ 概率随机选一个 a,ϵ 概率\pi(a) =\begin{cases}\arg\max_{a} \hat{\mu}_a, & 1-\epsilon \text{ 概率} \\\text{随机选一个 } a, & \epsilon \text{ 概率}\end{cases}
这个公式描述了一件事:大部分时候选当前最好的菜,小部分时候故意尝试新菜。
  1. argmax_a μ̂_a选出当前估计点击率最高的物品,这是利用。
    arg⁡max⁡aμ^a\arg\max_{a} \hat{\mu}_a
  2. 随机选一个 a从候选物品里随机选一个,这是探索。
    随机选一个 a\text{随机选一个 } a
  3. ε 概率探索发生的比例。ε 大,探索多;ε 小,利用多。开业初期 ε 可以调大,后期逐渐调小。
    ϵ\epsilon

企业工程落地

张老板的方法论再聪明,如果只靠脑子和纸笔记账,开三家店就会崩溃。企业做冷启动也一样,必须有工程化流水线。

第一步是数据埋点。面馆要有“点单系统”记录每份面卖给了谁;推荐系统要在 App 里埋下曝光、点击、停留、下单等事件。没有埋点,后面所有算法都是空中楼阁。第二步是特征工程。把原始行为变成可用特征,例如用户最近 3 天点击次数、物品上线 24 小时点击率、用户与物品标签的匹配度。特征不是越多越好,而是要围绕冷启动目标:尽快建立可信画像。

第三步是模型上线。冷启动阶段最好用分层回退策略:个性化模型失效时,回退到内容画像;画像也不足时,回退到流行度。就像面馆临时没有牛肉,也能迅速做一碗番茄鸡蛋面。第四步是效果评估,要用线上 A/B 实验验证新策略是否真的有效:

Lift=CTRnew−CTRoldCTRold\text{Lift} = \frac{\text{CTR}_{\text{new}} - \text{CTR}_{\text{old}}}{\text{CTR}_{\text{old}}}
这个公式计算新推荐策略相对旧策略的点击率提升幅度,用来判断冷启动优化到底有没有用。
  1. CTR_new - CTR_old新策略点击率减去旧策略点击率,得到绝对提升。
    CTRnew−CTRold\text{CTR}_{\text{new}} - \text{CTR}_{\text{old}}
  2. 除以 CTR_old把绝对提升转换为相对提升,方便在不同业务间比较。
    CTRold\text{CTR}_{\text{old}}
  3. 整体 LiftLift 为正,表示新策略带来正向收益;为负,则应该回滚。
    CTRnew−CTRoldCTRold\frac{\text{CTR}_{\text{new}} - \text{CTR}_{\text{old}}}{\text{CTR}_{\text{old}}}

实战路线图

从零到有落地冷启动,不能想到哪做到哪。张老板的路线是先定流程,再选算法,最后迭代。推荐系统团队也建议这样推进。

整体流程分五步:第一步,盘点现有数据,确定哪些用户和物品属于冷启动对象;第二步,设计信号采集方案,把显式和隐式反馈埋点补全;第三步,搭建“流行度 + 规则 + 画像”的兜底推荐;第四步,加入探索策略,给新物品曝光机会;第五步,用 A/B 实验持续评估和迭代。

复盘一个真实案例:某内容平台上线新作者冷启动,一开始所有新作者都只推给大流量用户,结果点击率极低。后来改成“先小流量测试内容画像,找出潜在兴趣人群,再逐步扩量”,同时把新作者打上风格标签,配合 UCB 策略决定探索流量。三个月后,新作者内容曝光量提升 40%,人均阅读时长提升 12%。

常见坑点也值得注意:一是冷启动流量分配不合理,要么探索过猛伤害体验,要么探索太少新内容永远冒不出来;二是不做数据回流,行为日志没有及时进入训练;三是一刀切用热门兜底,导致画像同质化。演进方向则是从规则到模型:先用简单策略跑通,再逐步引入深度模型、在线学习,让冷启动变成“热启动”的一部分。

AI 应用场景

新用户首登推荐

阶段:召回与兜底排序

解决的问题:新用户注册后没有任何行为数据,传统协同过滤无法建模。传统做法是随机推热门内容,导致新用户感觉“推荐千篇一律”;AI 冷启动方案用兴趣标签、设备信息、位置信息等代替行为数据,先做内容画像匹配,再用小流量探索快速试出用户口味。

具体案例:某电商 App 新用户注册后,系统根据“性别、城市、点击过的图文”生成冷启动画像,第一屏混合展示热门商品、地域特色商品和两个探索位。24 小时内用户产生 5 次点击后,画像进入个性化排序,下单转化率比旧版提升 18%。

新品上架冷启动

阶段:物品召回与流量分配

解决的问题:新品没有点击和转化数据,很难进入推荐池。AI 方案先基于文本、图片、类目等生成物品内容特征,再由流行度加权给出初始分,配合 UCB 探索策略给新品分配少量曝光。

具体案例:某生鲜电商上架一款新水果,系统提取“甜度、产地、价格带”等标签,找到过去购买过相似水果的用户进行试探投放。首周曝光 3000 次,点击率稳定后逐渐放量,最终成为该品类 Top 3 商品。

内容平台新作者冷启动

阶段:内容理解与兴趣匹配

解决的问题:新作者的短视频没有完播数据,算法不知道推给谁。AI 方案将视频抽帧、识别字幕、提取话题标签,建立内容向量;再结合用户历史兴趣,用小流量试探匹配,让好内容不被埋没。

具体案例:某短视频平台新作者发布第一条美食视频,系统识别出“川菜、探店、快节奏剪辑”标签,推送给曾观看同类视频的用户。探索期完播率高于大盘后,系统逐步扩大推荐流量,三周内该作者粉丝破万。

Python 演示

python55 行
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)
目的:模拟一个小型冷启动引擎,混合使用内容画像匹配和 epsilon 贪心探索,为新用户推荐物品并输出每个物品的曝光、点击和点击率。
  1. def content_score(self, item, user):计算物品与用户画像的匹配分,相当于服务员“看人下菜”。
  2. same = sum(a & b for a, b in zip(user["pref"], item["tags"]))统计用户偏好与物品标签的重叠数量。
  3. if random.random() < self.epsilon:以 epsilon 概率进入探索分支,随机推荐一个物品。
  4. return max(self.items, key=lambda it: self.content_score(it, user))否则选择当前匹配分最高的物品进行利用。
  5. ctr = click / show if show > 0 else 0.0计算每个物品的点击率,作为后续评估冷启动效果的依据。

常见误区

误区冷启动阶段没有数据,直接把全站点击量最高的物品推给新用户就行了,简单又稳妥。

正解热门物品只能保证基础体验,但它会让所有新用户看到同样的内容,画像趋同,探索不足。真正的冷启动要把“热门保底”和“画像试探”结合起来:用热门稳住下限,用少量探索位发现用户个性。

为何常见:因为热门物品的统计口径最直观,容易让人误以为“点击高就是用户喜欢”,忽略了冷启动的核心目标是快速收集个性化信号。

误区等协同过滤模型上线,新用户和新物品自然会通过相似用户被推荐,不需要额外方案。

正解协同过滤依赖行为矩阵,新用户没有行为、新物品没有曝光,它们在矩阵里是空行和空列,根本无法参与计算。冷启动方案是协同过滤的前置条件,先用流行度、规则和内容画像积累第一波数据,协同过滤才能生效。

为何常见:因为协同过滤是推荐系统最经典的算法,很多人以为它是万能钥匙,忽略了它“数据饥渴”的本质。

误区新物品需要曝光,那就把 80% 的流量都给探索策略,让所有新内容都跑一遍。

正解过度探索会让用户频繁看到不感兴趣的内容,导致点击率下降、用户流失。正确的做法是控制探索比例,并根据反馈动态调整。epsilon 贪心里,epsilon 应该从大逐渐变小;UCB 则会自动让表现差的物品减少曝光。

为何常见:因为“新物品要曝光”这个直觉太强,容易让人忽略用户感受和业务指标的长期损失。

误区新用户完成注册、点了几个商品之后,冷启动就结束了,后面交给正常推荐流程。

正解冷启动是一个持续渐进的过程。用户可能隔几天换口味,新物品也会持续上架;模型对某些用户、某些物品的信噪比仍然很低。企业通常用“置信度公式”判断信号是否足够,而不是简单按天数或行为数量一刀切。

为何常见:因为“冷”和“热”听起来像开关,但推荐系统中的数据完备度其实是连续变化的光谱。

误区冷启动模型在离线测试 AUC 提升,就立刻全量上线,不需要再做验证。

正解离线指标高可能来自样本偏置或特征泄露,线上真实流量分布与离线数据不一致。正确做法是先小流量 A/B 实验,观察点击率、留存、转化等业务指标,确认 Lift 为正再逐步放量。

为何常见:因为离线评估成本低、速度快,容易让人低估线上环境的复杂性和不确定性。

面试题

Q1. 推荐系统中最常见的冷启动问题是?

单选题 · easy

  • A.新用户缺历史数据时如何推荐← 正确答案
  • B.推荐系统响应太慢如何优化
  • C.全量用户推荐列表如何排序
  • D.推荐物品如何做库存管理

答案:A。冷启动的核心是缺乏历史交互数据,A 说中了新用户冷启动的定义。响应速度是工程问题,排序是精排问题,库存管理是供应链问题,都不是冷启动的本质。

Q2. 哪个阶段最适合让用户主动选择兴趣标签?

单选题 · mid

  • A.引导期收集画像数据← 正确答案
  • B.试探期多推不同品类
  • C.稳定期做个性化重排
  • D.衰退期做流失召回

答案:A。引导期目标就是快速建立用户画像,让用户主动选标签是效率很高的显式反馈。试探期强调多样性,稳定期强调个性化,衰退期则关注召回,与建立画像无关。

Q3. 新物品刚上架且曝光很少时,首选策略是?

单选题 · mid

  • A.推给全量用户试试
  • B.用内容特征做画像召回← 正确答案
  • C.把它加入黑名单下架
  • D.等有热度再做协同过滤

答案:B。新物品没有行为数据,但一定有标题、类目、标签等内容特征,可以用内容画像先找到潜在兴趣人群。全量推给所有人风险太高,直接下架等于放弃探索,等热度则会让新品永无出头之日。

Q4. 在 epsilon 贪心策略中,增大 epsilon 意味着?

单选题 · mid

  • A.更多随机探索新物品← 正确答案
  • B.更依赖历史点击数据
  • C.更多利用热门推荐
  • D.降低模型计算复杂度

答案:A。epsilon 是随机探索的概率,epsilon 越大,系统越频繁地随机尝试候选物品。B 和 C 描述的是“利用”行为,D 与计算复杂度无关。

Q5. UCB 策略中的“不确定性奖励”表示?

单选题 · hard

  • A.对点击率的一个惩罚
  • B.对不确定性的一个奖励← 正确答案
  • C.对曝光成本的一个补偿
  • D.对时间衰减的一个系数

答案:B。UCB 会给曝光次数少的物品额外加分,让探索更有方向性,本质是对不确定性给奖励。它不惩罚点击率,不补偿成本,也不是时间衰减系数。

Q6. 信号置信度公式 conf = n / (n + λ) 中,λ 越大意味着?

单选题 · hard

  • A.少量样本信任度上升快
  • B.曝光量会变得更加稀疏
  • C.需要更多样本才信任信号← 正确答案
  • D.点击率会变得明显更高

答案:C。λ 是平滑系数,λ 越大,分母增大越快,需要更多行为样本才能让 conf 接近 1。所以 λ 越大,系统对信号越保守。

Q7. 冷启动策略上线后,最合理的评估方式是?

单选题 · mid

  • A.看服务器资源占用率
  • B.只比较离线 AUC 指标
  • C.新版和旧版做 AB 实验对比← 正确答案
  • D.统计模型参数量大小

答案:C。线上真实效果必须通过 A/B 实验对比新旧策略的点击率、留存、转化等指标来验证。离线指标可以作为参考,但不能替代线上实验;资源占用和参数量与推荐效果无关。

Q8. 哪些属于收集冷启动信号的方式?

多选题 · mid

  • A.注册时选择兴趣标签← 正确答案
  • B.实时采集点击和浏览← 正确答案
  • C.结合设备和地区特征← 正确答案
  • D.直接复制竞品推荐列表

答案:ABC。兴趣标签是显式反馈,点击浏览是隐式反馈,设备地区属于多源特征,三者都能丰富冷启动画像。复制竞品列表既不合规,也没有用户个性化价值。

Q9. 新物品冷启动可用的推荐策略有哪些?

多选题 · hard

  • A.基于内容特征的召回← 正确答案
  • B.小流量随机试吃探索← 正确答案
  • C.物品流行度加权兜底← 正确答案
  • D.只等待用户搜索记录

答案:ABC。内容特征召回解决“推给谁”,小流量探索积累反馈,流行度加权保证一定曝光。只等待搜索记录是被动行为,不适合冷启动期主动验证新物品。

Q10. 哪些做法符合企业冷启动落地原则?

多选题 · hard

  • A.先埋点再逐步优化模型← 正确答案
  • B.用分层回退策略兜底← 正确答案
  • C.全部流量都给探索策略
  • D.离线与线上 AB 实验结合← 正确答案

答案:ABD。埋点是数据前提,分层回退保证推荐效果不崩,离线与线上结合用于评估迭代。全部流量都给探索策略会伤害用户体验,不符合企业权衡原则。