想象你是“云顶小馆”的主厨,后厨账本厚得像本诗集,记录着宫保鸡丁、水煮鱼、酸菜鱼每天的销量曲线。但明天要推出的新菜“椒麻鱼片”,账本上只有一行字:未上架,无记录。没有记录,你该进两斤还是二十斤鱼?进少了,客人点不到,扫兴而归;进多了,活鱼变死鱼,全是损耗。这就是新品需求预测要解决的核心难题——冷启动。好在主厨有招:翻开老菜品的账本找参照、端详新菜的配料单看基因、再用十年经验打个底,最后等头几天真实点单数据回来再修正。这套“借经验、看特征、定先验、更新后验、给区间”的后厨智慧,恰恰对应了AI落地新品需求预测的完整技术路线。
学完本讲,你将能设计一套“没有历史销量也能预测”的新品备货引擎,这是零售企业数字化转型中稀缺的AI工程能力。
目录
可视化演示
本节配有交互动效(进入视口后自动加载,约 3KB)。
新品冷启动预测——相似商品迁移学习 新品:无历史数据,需迁移预测 相似品:检索Top-K历史商品 迁移:加权平均销售曲线 调整:属性差异修正系数 Forecast(new) = Σ w_i * Sales(similar_i) * adjustment_factor
冷启动挑战:没有账本的新菜
“云顶小馆”的账本厚得像本诗集,记录着宫保鸡丁、水煮鱼、酸菜鱼每天的销量曲线。但明天要上市的椒麻鱼片,账本上只有一行字:未上架,无记录。进少了,客人点不到,扫兴而归;进多了,活鱼变死鱼,全是损耗。这就是新品需求预测的冷启动困境——数据空白期的备货决策,往往决定了新品是成为爆款还是烂在库存里。
在机器学习里,绝大多数需求预测模型是“以史为鉴”:把过去一年的销量喂给模型,学出规律。可新品根本没有“过去一年”,强行套用老模型只会得到空输入、瞎输出。冷启动因此成为零售AI的第一道坎:模型要在几乎没有样本的条件下,给出一个“不那么离谱”的初始估计。
从统计视角看,冷启动的本质是样本量n太小,导致估计量的标准误被拉大。标准误与样本量的平方根成反比:
回到主厨的处境:账本空白不要紧,他可以翻开老菜品的账本、端详新菜的配料单,再用十年经验打个底。这三件事,恰好对应相似商品迁移、属性特征学习与贝叶斯先验。冷启动不是“无米之炊”,而是“换一口锅做饭”。
- σ_est(估计标准误)预测均值与真实需求均值的平均偏差,可以理解为“估得心里有多没底”。
- ∝(正比于号)左右两边同方向变化。样本量越大,右边分母越大,左边误差越小。
- 1/√n(样本量平方根倒数)n是有历史记录的天数。样本量翻4倍,误差才缩小一半,冷启动期的误差因此被放大。
相似商品迁移:向水煮鱼借账本
主厨翻开老账本时,不会随便找一道菜看。椒麻鱼片跟水煮鱼都是“麻辣口味的鱼片”,跟宫保鸡丁也有点像,但跟红烧肉就八竿子打不着。聪明的做法是:给每道老菜和新菜打一个“口味相似度”分数,相似度高的老菜销量多借一点,相似度低的老菜少借一点。
这就是相似商品迁移的核心思想——新品没有历史,但它不是孤岛。在任何零售体系中,新品总有一群“远房亲戚”:同品类、同价格带、同目标人群的老商品。把它们的需求模式作为参照,是冷启动最直接有效的手段。
具体做法分两步:先定义距离,再做加权集成。假设共有k个相似商品,第i个老商品与新品的“不相似距离”记为d_i,它的历史日均销量为y_i,则新品预测初值为:
实际操作中还要做生命周期匹配:新品与参照老品应处于各自销售生命周期的同一阶段,否则拿老品的衰退期数据预测新品的导入期,迁移就会失真。这就像主厨不仅看老菜平均每天卖多少,还要看它在刚推出那几天卖多少——拿“菜品刚出道”的销量来类比新菜,才是真正的对口借账。
- y_i(相似商品销量)第i个相似老商品的历史日均销量,是迁移的“原材料”。
- d_i(不相似距离)新品与老商品的距离,越小代表越像。
- w_i(权重)由距离推导,距离为0时权重为1,距离越大权重越接近0。
- 分子与分母(加权平均)分子把相似销量按权重加起来,分母归一化,使最终结果是加权平均而非简单累加。
属性特征学习:新菜的基因图谱
如果相似老品太少怎么办?比如椒麻鱼片是全新菜系,没有近亲。别急,主厨还可以看菜本身的“基因”:用鲈鱼还是草鱼,麻度几分,定价是28还是68,摆在菜单哪一页。这些属性本身就携带需求信息——爱吃辣的人看到“麻辣”就会点,商务宴请不会点太便宜的菜。
在机器学习中,这种“基因”就是商品属性特征。属性特征学习的思路是:不依赖“这个新品像哪个老品”,而是直接学习“具备这些属性的商品,通常有多少需求”。把大量老商品的属性与销量喂给模型,模型就能推断出一组隐含的“属性-需求”映射。
属性编码是第一步。类别型属性(品类、品牌、口味)通常做one-hot编码或嵌入;连续型属性(价格、净含量、上架月份)先归一化再进模型。编码之后,计算两个商品的距离可以用加权欧氏距离:
主厨靠经验给特征排序,模型靠数据自动排序。属性特征学习的本质,是把“老师傅的直觉”变成可在每件新品上线时重复调用的计算流程。
- x(属性值)某商品在一个维度的属性取值,如价格69元、净含量150g。
- λ_j(特征权重)模型学出的第j个属性的重要程度,价格权重高、包装颜色权重低。
- 平方差求和逐维度比较两个商品的差异,乘权重后累加,差异越大距离越大。
- 开根号把平方和还原为与原始数值同量纲的距离,便于解释和计算。
贝叶斯先验:经验的动态天平
主厨在开业前已经通过老菜、新菜属性,心里形成了一个初始估计:“椒麻鱼片头一周大概每天30份。” 这个数不是拍脑袋——它来自相似菜的销量和菜品特征的逻辑推理。但主厨心里也知道,这只是一个“先入为主”的念头。头三天,顾客实际点了26、29、24份,主厨会悄悄把估计改成“大概27份”。
从“初始估计”到“数据修正”,正是贝叶斯推断的精髓。我们把“平均日需求”看作一个未知参数θ。先验分布 P(θ) 编码了我们在看到任何销售数据之前对θ的信念;当少量真实销量D出现后,利用贝叶斯定理把先验与似然结合,得到后验分布P(θ|D)。
当先验与似然都是正态分布时,后验仍为正态,且均值是先验均值与样本均值按“精度”的加权平均;先验强度可以理解为“这个初始估计等价于看了多少天销售数据”。贝叶斯先验的动态天平让主厨既尊重经验又拥抱现实:数据越少时经验主导,数据越多时现实主导。
- P(θ)(先验分布)观测数据之前对平均需求的信念,由相似商品迁移与属性特征构建。
- P(D|θ)(似然)假设真实平均需求为θ时,观察到实际销量D的可能性。
- ×(相乘)把“经验信念”和“数据说服力”相乘,两者共同决定更新方向。
- P(θ|D)(后验分布)看到数据之后修正过的信念,既包含先验又包含新信息。
- ∝(正比于)后验与两者乘积成正比,分母P(D)只是让概率之和为1的归一化常数,不影响分布形状。
新品特征工程:菜单上的时令与定价
光有“这个属性像那个属性”还不够。主厨知道,同样的椒麻鱼片,夏天卖得比冬天好;搞“开业促销”时点单量会暴涨;放在外卖平台和堂食菜单上的需求量也完全不同。于是主厨在备货时会叠加一张“时令-促销-渠道”的加权清单。
这就是特征工程在起作用。基础属性编码解决的是“商品是什么”,而特征工程解决的是“商品在什么环境里卖”。对新品而言,由于没有历史销量可供模型自学习,这类环境特征的构造质量几乎决定了预测的上限。
常用的新品特征包括三类。第一类是季节性特征,把日期投影到周期函数上,让模型知道“现在是第几周、是否临近节假日”;第二类是价格促销特征,若新品有首销折扣,引入价格弹性项——价格变动1%时需求变动的百分比:
第三类是渠道交叉特征:同款商品在线上、线下、社区团购三条渠道的分配比例,以及是否位于首页曝光位。特征工程如同给新菜写“身世小传”:主厨把季节、价格、渠道写进小传里,模型就能读懂这道菜在特定时空下会遇到的真实需求热度。
- Δln(p)(价格对数变化量)价格从p_1变到p_2时,ln p的变化。取对数后,乘法关系变成方便的减法。
- Δln(q)(需求对数变化量)对应的需求对数变化,用于衡量需求对价格的响应幅度。
- e(价格弹性)价格变动1%,需求变动e%。e为负表示涨价抑制需求,绝对值越大越敏感。
置信区间:从“大概30份”到“25到35份”
当主厨告诉采购“明天大约准备30份鱼片”时,采购会追问一句:“那到底该买30还是35?” 如果只给一个数字,采购只能按直觉上下浮动。但若主厨说:“按我的估计,25到35份之间能覆盖95%的情况,你按35份备货吧。” 采购立刻有了行动的底气。
单点预测在冷启动场景中尤其危险:数据极少时,后验均值可能离真实值很远,100%相信它会让备货决策变得脆弱。因此新品需求预测不仅要输出期望值,还要输出置信区间——一个以一定概率覆盖真实需求的数值范围。
当后验分布近似为正态时,95%置信区间可由均值 μ 与标准误 σ/√n 构造:
在工程上,更稳妥的做法是直接预测分位数(如0.025与0.975分位数),因为真实需求分布常带偏态,分位数回归不需要假设对称。给采购一个区间,相当于给主厨的直觉加了一把“风险度量尺”——备货不足的风险由下界暴露,积压的风险由上界封印,决策成了一道有边界的算术题。
- μ(预测均值)后验分布的期望,用作点预测。
- σ/√n(标准误)需求波动的标准误差,随数据增加而减小。
- z_α/2(正态分位数)标准正态分布的双侧分位数,95%置信水平取约1.96。
- 区间上下界之间的范围就是置信区间,业务上直接对应备货的“下限看脱销、上限看积压”。
工程实践:后厨的流水线
新菜上市不是一天的事。主厨会规定:头三天手工记录每桌点单,第七天对比预估和实际,第二周根据复购率调整备货。这套“记录-对比-修正”的后厨规矩,就是工程实践里最朴素的模型迭代闭环。
AI新品预测上线后,同样需要一套可持续运转的流水线,而不只是一个离线模型文件。工程实践通常围绕三条主线:数据管道、模型监控、反馈闭环。数据管道要解决“相似商品从哪来、属性谁维护、销量多久同步一次”;模型监控要持续观察预测误差是否漂移,经典指标是MAPE:
当新品度过冷启动期、积累了足够销量后,系统应平滑切换到常规预测模型;同时把缺货、滞销、退货这些业务信号回传给特征工程,形成正反馈。后厨的规矩和老主顾的口碑,最终变成一桌好菜:数据是食材,模型是灶台,监控是试菜人。新品预测系统不是上线就完,而是像一道不断调味的招牌菜,越用越准。
- ŷ_i(预测销量)模型在第i天对新品销量的预测值。
- y_i(实际销量)当天真实卖出数量。
- |·|(绝对值)去掉正负号,只关心偏差幅度,无论高估还是低估都算误差。
- 求和再平均把所有天的相对误差加起来除以n,得到整体的平均绝对百分比误差。
AI 应用场景
场景一:连锁便利店首单备货
阶段:需求预测与库存优化
解决的问题:传统首单靠采购经验拍脑袋,新品要么缺货损失销售,要么积压占压资金。利用相似SKU迁移构建先验均值,再结合头几天真实销量做贝叶斯更新,输出置信区间作为首单备货的上下界。
具体案例:某便利店引进新品“冷萃咖啡”,系统匹配到同价格带的即饮咖啡销量数据,构建先验后预测首周需求区间为[180, 240]杯,实际销售205杯,落在区间内且全程未缺货。采购按区间上界下单,比以往凭经验下单的缺货率下降约15%。
场景二:电商平台新品流量预热
阶段:商品运营与流量分配
解决的问题:电商新品没有搜索、点击、销量历史,平台无法判断是否值得给曝光。用属性特征学习(品类、价格带、标题关键词)构建“新品潜力分”,再结合贝叶斯先验预测首周转化率区间,运营按区间上界分配推广预算。
具体案例:某电商平台对上千款新品计算潜力分,对高潜力新品在首周给予搜索加权曝光,整体新品点击率提升22%,同时避免了对低潜力商品的无效投放。
场景三:快时尚季初买手决策
阶段:生产计划与商品企划
解决的问题:服装款式生命周期短,等销量数据积累再补单就晚了。利用生命周期匹配,参照同类型款式在导入期的销量曲线,再叠加价格与季节特征,预测首月销量区间,帮助买手在季初确定下单深度。
具体案例:某快时尚品牌对当季120个新款做区间预测,买手按区间上界下单的首批订单,售罄率比往年提升9个百分点,季末库存深度下降12%。
Python 演示
import math def gaussian_quantile(p): """标准正态分布分位数近似(用于95%区间)""" t = math.sqrt(-2.0 * math.log(1.0 - p)) c0 = 2.515517 c1 = 0.802853 c2 = 0.010328 d1 = 1.432788 d2 = 0.189269 d3 = 0.001308 return t - (c0 + c1 * t + c2 * t * t) / (1.0 + d1 * t + d2 * t * t + d3 * t * t * t) class BayesianNewProductForecaster(object): """先用相似商品迁移设定先验, 再用实际销量更新后验""" def __init__(self, prior_mean, prior_strength, obs_variance): self.prior_mean = prior_mean # 先验均值: 由相似商品迁移得到 self.prior_strength = prior_strength # 先验强度(等价样本数) self.obs_variance = obs_variance # 单日销量的观测方差 self.post_mean = prior_mean self.post_strength = prior_strength def update(self, sales_list): """用真实销售数据更新后验分布""" n = len(sales_list) if n == 0: return sample_mean = sum(sales_list) / n # 后验均值 = 先验均值与样本均值的加权算术平均 self.post_mean = ( self.prior_mean * self.prior_strength + sample_mean * n ) / (self.prior_strength + n) # 后验强度 = 先验强度 + 样本数 self.post_strength = self.prior_strength + n def predict(self, horizon=7, alpha=0.05): """预测未来horizon天的日均需求及置信区间""" mu = self.post_mean sigma = math.sqrt(self.obs_variance / self.post_strength) z = gaussian_quantile(1.0 - alpha / 2.0) lower = mu - z * sigma upper = mu + z * sigma return mu * horizon, lower * horizon, upper * horizon def main(): # 相似商品迁移: 参考同品类3个商品的日均销量 similar_sales = [28.0, 31.0, 26.0] prior_mean = sum(similar_sales) / len(similar_sales) prior_strength = 2.0 # 迁移得到的先验强度(样本量等价) # 新品上市头3天的真实销量 observed = [24.0, 27.0, 29.0] forecaster = BayesianNewProductForecaster(prior_mean, prior_strength, 9.0) forecaster.update(observed) mu_hat, lower, upper = forecaster.predict(horizon=7) print("新品预期周销量: %.1f 件" % mu_hat) print("95%% 置信区间: [%.1f, %.1f] 件" % (lower, upper)) print("建议备货量(按区间上界): %.1f 件" % upper) if __name__ == "__main__": main()
prior_mean = sum(similar_sales) / len(similar_sales)相似商品销量求平均,作为贝叶斯先验的均值初始值。prior_strength = 2.0先验强度相当于“看了2天数据”,迁移越可靠这个值越大。self.post_mean = (贝叶斯后验更新的核心公式:先验均值与样本均值按各自强度加权平均。self.post_strength = self.prior_strength + n后验强度等于先验强度加样本数,数据越多,后验越自信。sigma = math.sqrt(self.obs_variance / self.post_strength)计算后验标准差,是置信区间的宽度来源。z = gaussian_quantile(1.0 - alpha / 2.0)查标准正态分布分位数,95%置信度对应约1.96。return mu * horizon, lower * horizon, upper * horizon把日均需求外推到整周,并同步外推区间边界。forecaster.update(observed)用新品头3天真实销量更新后验,完成从“经验”到“数据修正”的一跳。
常见误区
误区我手里有大量老商品的历史销量,直接训练一个XGBoost,再把新品特征丢进去不就行了?反正模型能自己学出来。
正解监督学习需要标签y,而新品的销量标签是空的。即使把特征丢进去,模型也无法输出合理的冷启动估计。正确做法是先通过相似商品迁移或贝叶斯先验构造初始估计,再等待少量真实销量后修正。
为何常见:很多人习惯把预测任务想成“特征→销量”的映射,忽略了冷启动阶段根本没有训练标签这个前提。
误区椒麻鱼片和水煮鱼最像,那把水煮鱼去年的销量直接拿来当新品预测不就行了?
正解直接复制忽略了价格、口味、促销、季节的差异。应该以相似度为权重做加权集成,并做生命周期匹配——只取老品在同类生命周期阶段的销量,而不是整段平均。
为何常见:人脑天然偏好“找最像的”这一捷径,容易忽略多源信息整合与阶段对齐。
误区贝叶斯先验既然是“先验”,那不就跟拍脑袋设个数差不多?还能算科学吗?
正解先验不是凭空捏造,而是从相似商品迁移、属性特征学习和行业规律中构造出的客观分布。它的强度可被解释为“等价样本量”,可检验、可更新。它只是把“数据不足时的额外信息”显式地编码进模型。
为何常见:很多人只接触过频率派统计,把“先验”误以为是任意的主观猜测。
误区模型输出每天30份,我按30份备货就行,要区间干嘛?
正解冷启动阶段点预测的误差非常大,30只是一个期望值。备货决策真正需要的是风险边界:区间下界对应脱销风险,区间上界对应积压风险。按区间上界备首批货,是控制缺货率的实用策略。
为何常见:点预测只有一个数字,显得很“确定”,容易让人忽视背后的不确定性,尤其在系统界面上往往只展示一个数。
误区我把颜色、包装材质、供应商城市、签约明星等几十个特征全塞进模型,总能学到点什么吧?
正解新品上架初期样本极少,高维特征会加剧稀疏与过拟合。应优先选择有业务因果关系的特征:价格带、品类、季节、渠道、促销。特征要服务于迁移与先验的构建,而不是堆砌。
为何常见:大数据时代的惯性思维是“特征越多越AI”,忘了冷启动场景下样本量支撑不起高维空间。
面试题
Q1. 新品需求预测面临的核心挑战是什么?
- A.数据过多难以清洗
- B.历史数据缺失冷启动← 正确答案
- C.模型过拟合风险
- D.算力资源不足
答案:B。新品上架前没有任何销量记录,这就是冷启动。就像新菜没有老账本可查,B直接点出本质;A、C、D更多是常规预测任务的问题,不是新品特有的困难。
Q2. 相似商品迁移中,单品权重与其距离d_i的关系是?
- A.距离越大权重越大
- B.距离越小权重越大← 正确答案
- C.两者没有关系
- D.权重恒等于一
答案:B。权重公式为 w=1/(1+d),距离为0时权重为1,距离越大权重越接近0。就像椒麻鱼片与水煮鱼越像,老菜的销量参考价值越高。
Q3. 贝叶斯定理中的P(θ)称为什么?
- A.观测数据的概率
- B.参数的后验概率
- C.参数的先验信念← 正确答案
- D.似然函数的值
答案:C。P(θ)是在看到销售数据之前对平均需求参数的信念,由相似商品迁移和属性特征构造。看到数据后才更新为P(θ|D),即后验概率。
Q4. 下列关于置信区间在备货决策中的说法,正确的是?
- A.让预测值更加精确
- B.提供风险的决策边界← 正确答案
- C.减少计算量开销
- D.完全替代点预测
答案:B。置信区间给出真实需求可能落入的范围,对应“下限看脱销、上限看积压”的风险边界。它不改变点预测的数值,也不减少计算量,更不是要替代点预测。
Q5. 新品特征工程中引入季节性特征的主要目的是?
- A.增加模型复杂度
- B.捕捉销量周期规律← 正确答案
- C.减少特征维度
- D.消除异常值影响
答案:B。季节性特征把日期映射为周期信息,让模型知道当前是夏季还是节前,从而捕捉销量的周期性波动,就像主厨知道“夏天鱼片卖得更好”。
Q6. 下列哪些属于新品需求预测冷启动的常用方法?
- A.相似商品迁移← 正确答案
- B.属性特征学习← 正确答案
- C.随机猜测销量
- D.贝叶斯先验方法← 正确答案
答案:ABD。相似迁移借老品销量,属性学习用商品基因,贝叶斯先验整合多源经验,三者是主流冷启动手段。随机猜测没有信息量,不应作为工程方法。
Q7. 先验强度(等价样本数)越大,后验分布会怎样?
- A.越来越受观测数据影响
- B.越来越受先验信念影响← 正确答案
- C.预测方差会变大
- D.不确定性会升高
答案:B。先验强度大相当于“之前已经看过很多天数据”,后验会更坚持先验;同时后验方差变小,稳定性反而更高,因此C和D都错误。
Q8. 关于贝叶斯后验更新,下列说法正确的有哪些?
- A.后验融合先验与数据← 正确答案
- B.数据多时后验逼近数据← 正确答案
- C.数据多时后验逼近先验
- D.后验方差随数据增加而减少← 正确答案
答案:ABD。后验是“经验×数据”的产物;数据积累越多,先验的影响被冲淡,后验向样本均值收敛,同时方差变小。C把方向说反了。
Q9. 相似商品迁移中做“生命周期匹配”的目的是?
- A.匹配生命周期阶段← 正确答案
- B.扩充训练样本规模
- C.降低模型复杂度
- D.加快模型训练速度
答案:A。新品处于导入期,销量曲线与成熟期老品差异很大,应该参照老品在导入期同阶段的销量,避免用衰退期数据误导新品预测。
Q10. 新品预测系统上线后,合理的工程实践包括哪些?
- A.上线后持续对比真实销量← 正确答案
- B.用新数据定期再校准← 正确答案
- C.忽略反馈只盯离线指标
- D.将缺货信号回传特征工程← 正确答案
答案:ABD。工程实践强调“数据-监控-反馈”闭环:持续对比、再校准、回传业务信号。只看离线指标而忽略真实业务反馈,是本末倒置的做法。