新品冷启动:没有历史数据怎么预测?我用聚类+迁移学习解决了
当一款新产品上架没有任何销售历史时如何预测它的未来销量我用聚类分析和迁移学习让新品预测准确率达到老品的80%一、新品预测的困境做零售的朋友都遇到过这个头疼的问题老品有历史销量数据可以用时间序列或机器学习模型预测准确率能做到85%以上。新品刚刚上架历史数据为0。老板问“第一批该进多少货”你只能拍脑袋或者参考同类竞品。结果往往是要么积压要么断货。我之前开发的销量预测API依赖历史数据至少30天但客户问我“新商品怎么办”这个问题让我思考了很长时间。最终我找到了一个实用的解决方案聚类 迁移学习。二、核心思路借力相似老品新品虽然没有自己的历史但它一定属于某个品类并且和某些老品具有相似的特征价格带、目标人群、季节性等。我的方法分为三步对老品进行聚类根据商品的静态属性价格、品类、供应商、毛利率等将老品分成若干类。找到新品的“邻居”计算新品与每个聚类中心的距离归属到最相似的一类。迁移学习将同类老品的销量模式如周度季节性、促销响应系数迁移到新品上再结合行业基准三、技术实现简化版以下是用 Python 实现的核心代码完整版已集成到我的 API 中。老品聚类离线训练importpandasaspdfromsklearn.clusterimportKMeansfromsklearn.preprocessingimportStandardScalerimportjoblib# 假设已有老品静态特征表price, category_encoded, gross_margin, seasonality_score...features[price,category_encoded,gross_margin,seasonality_score]Xdf_old_products[features].values scalerStandardScaler()X_scaledscaler.fit_transform(X)kmeansKMeans(n_clusters8,random_state42)df_old_products[cluster]kmeans.fit_predict(X_scaled)# 保存聚类模型和 scalerjoblib.dump(kmeans,kmeans_model.pkl)joblib.dump(scaler,scaler.pkl)新品归属预测defpredict_new_product_cluster(new_product_features):scalerjoblib.load(scaler.pkl)kmeansjoblib.load(kmeans_model.pkl)X_newscaler.transform([new_product_features])clusterkmeans.predict(X_new)[0]returncluster迁移销量模式假设同类老品的平均周销量曲线为 [12, 15, 18, 22, 25, 23, 20]周一至周日。新品初始销量预测为同类老品首周均值的 60%保守估计然后按该曲线分配deftransfer_sales_pattern(cluster,base_sales100):# 从数据库获取该聚类的典型周模式weekly_patternget_weekly_pattern_by_cluster(cluster)# 例如 [0.08, 0.10, 0.12, 0.15, 0.18, 0.20, 0.17]daily_sales[base_sales*pforpinweekly_pattern]returndaily_sales 四、实战效果 我将这个方法应用到一个拥有1200个 SKU 的便利店数据集中 · 测试集30款真实新品已销售8周用于验证 · 基准店长凭经验预估平均绝对百分比误差 MAPE58% · 我们的方法MAPE24%准确率提升34个百分点 虽然比不上老品预测MAPE~15%但对于完全没有历史的新品来说已经非常有实用价值。 五、如何在你的业务中使用 我已经将这个功能集成到了我的 销量预测 API 中。现在调用时你只需要1.传入新品的静态属性价格、品类编码、毛利率等2.选择预测模式为cold_start3.API 自动返回未来7天的销量预测基于聚类迁移 调用示例 pythonimportrequestsimportjson urlhttp://39.97.61.94:5000/predict_coldstart# 新品预测专用接口data{product_type:饮料,price:5.5,category_id:103,gross_margin:0.25,seasonality:summer}headers{Content-Type:application/json}responserequests.post(url,jsondata)print(response.json())返回结果示例{predicted_first_week_sales:[12,15,18,22,25,23,20],total_week1:135,confidence_level:medium,method:clustering_transfer}六、免费试用目前我的 API 提供 500 次免费调用包含新品预测和老品预测。你可以· 访问官网http://retail-forecast.oss-cn-beijing.aliyuncs.com/· 获取 API 密钥运行上面的代码测试你自己的商品数据。七、下一步计划· 加入贝叶斯更新随着新品积累真实销售数据动态修正预测从第二周开始逐步切换到个性化模型。· 支持多门店迁移如果新品已在其他门店销售可直接跨店迁移模式。如果你对聚类迁移学习感兴趣或者想探讨更多零售预测问题欢迎在评论区留言或加入我们的技术交流群作者简介算法工程师专注零售 AI 落地。这个 API 源于帮朋友解决库存问题的实践希望能帮到更多中小商家。本文首发于 CSDN原创技术分享欢迎转载但请注明出处。