当前位置: 首页 > news >正文

供应链算法整理(一)--- 销量预估

        在供应链管理领域有较多的预估场景,例如送达时长预估、销量预估、用电量预估。特别的在智能供应链领域,销量和库存的管理的智能化也依赖销量预估,因此在本文我们整理了 销量预估的算法详细的技术方案。

        时间序列预测在最近两年内发生了巨大的变化,尤其是在kaiming的MAE出现以后,现在时间序列的模型也可以用类似MAE的方法进行无监督的预训练。Makridakis M-Competitions系列(分别称为M4和M5)分别在2018年和2020年举办(M6也在今年举办了)。2018年M4的结果表明,纯粹的“ ML”方法在很大程度上胜过传统的统计方法,这在当时是出乎意料的。在两年后的M5[1]中,最的高分是仅具有“ ML”方法。并且所有前50名基本上都是基于ML的(大部分是树型模型)。这场比赛看到了LightGBM(用于时间序列预测)以及Amazon's Deepar [2]和N-Beats [3]的首次亮相。N-Beats模型于2020年发布,并且优于M4比赛的获胜者3%!

        

一、背景

1.1 销量预估相关比赛

  •  1 Corporación Favorita Grocery Sales Forecasting
  •  2 天池新人实战赛o2o优惠券使用预测
  •  3 [竞赛] CCF2018-Top2-供应链预测

  •  4 [竞赛] CCF BDCI 2019乘用车细分市场销量预测

  •  5 JDATA如期而至-用户购买时间预测

  •  6 m5 foreasting
  •  7 其他kaggle比赛

1.2 销量预估相关论文

        GitHub - hushuguo/awesome-time-series-papers: This repository offers a collection of recent time series research papers, including forecasting, anomaly detection and so on , with links to code and resources.

二、销量预估算法的挑战

2.1 技术挑战 & 应对方案

技术挑战详细        应对方案
零膨胀同时分类商品销量为0的概率,和回归商品的销量
偏分布长尾数据剔除,对销量取log。减少数据右偏,把数据转化为类似正态分布
新商品模型里保留新商品信息,loss里做mask
商品替代多种算法预分组,引入商品类目、商品相似性
其他业务影响节假日引入出行节假日数据,品类和单品联合学习
营销活动营销活动异构图,提取营销活动信息
恶劣天气小时级天气,恶劣天气单独训练
季节变化

2.1.1 零膨胀

详细零膨胀是人们在社会科学、自然中的计数资料的实际研究中,观察事件发生数中含有大量的零值。

应对方案 同时分类商品销量为0的概率,和回归商品的销量

2.2.1 右偏分布

详细: 偏态分布是与“正态分布”相对,分布曲线左右不对称的数据次数分布,是连续随机变量概率分布的一种。 

应对方案: 长尾数据剔除,对销量取log

2.2.3 新商品

详细:有大量新商品上架,或者部分商品因为不在架导致商品销量为0

应对方案: 图模型里保留商品新老品信息。

2.2.4 商品替代性

详细: 部分商品有同款不同规格,另外一些商品相近。    

应对方案: 

2.2.5 其他业务影响

节假日

详细:     

应对方案: 

营销活动

详细:     

应对方案: 

恶劣天气

详细:     

应对方案: 

季节变化

三、销量预估算法的技术方案

3.1 时序模型

        Arima模型:

示例代码:

import pandas as pd
import matplotlib.pyplot as plt
from statsmodels.tsa.arima.model import ARIMA
from statsmodels.graphics.tsaplots import plot_acf, plot_pacf
from statsmodels.tsa.stattools import adfuller
from sklearn.metrics import mean_absolute_error

# 1. 加载数据
data = pd.read_csv('sales_data.csv', parse_dates=['date'], index_col='date')

# 2. 检查平稳性
result = adfuller(data['sales'])
print(f'ADF p-value: {result[1]:.3f}')  # p<0.05则平稳

# 3. 差分(若未平稳)
data['sales_diff'] = data['sales'].diff().dropna()

# 4. 确定ARIMA参数
plot_acf(data['sales_diff'].dropna(), lags=20)  # 观察q值
plot_pacf(data['sales_diff'].dropna(), lags=20) # 观察p值
plt.show()

# 5. 训练模型
model = ARIMA(data['sales'], order=(2, 1, 2))  # 根据ACF/PACF调整参数
results = model.fit()
print(results.summary())

# 6. 预测未来7天
forecast = results.get_forecast(steps=7)
forecast_mean = forecast.predicted_mean
forecast_ci = forecast.conf_int()

# 7. 可视化
data['sales'].plot(figsize=(12, 5), label='Observed')
forecast_mean.plot(label='Forecast', color='red')
plt.fill_between(forecast_ci.index, forecast_ci.iloc[:, 0], forecast_ci.iloc[:, 1], color='pink', alpha=0.3)
plt.title('ARIMA Sales Forecast')
plt.legend()
plt.show()

3.2 机器学习模型

3.2.1 特征

3.2.2 模型

树模型:

        Light GBM、XGB
 

深度序列模型:

        TFT(google https://arxiv.org/pdf/1912.09363v1)

        DeepAR (Amazon)

3.3 新品长尾模型

3.4 路由模型

时间序列模型-Temporal Fusion Transformer - tinstone - 博客园

揭秘盒马销量预测核心算法的技术演进_数据_业务_销售

​盒马供应链算法实战

阿里智慧供应链实践:从“数字孪生”到“智能决策”

预测:方法与实践(第三版)

Forecasting: Principles and Practice

智慧供应链的学习笔记(库存管理、配补货、仓间调拨、控制塔等)-CSDN博客

时间序列算法应用案例、工具库学习笔记-CSDN博客

时序论文36|如何在充分利用时间戳信息?

A comprehensive survey of deep learning for time series forecasting: architectural diversity and open challenges | Artificial Intelligence Review

5个时间序列预测的深度学习模型对比总结:从模拟统计模型到可以预训练的无监督模型(附代码)

活动、节假日、促销等营销方式的因果效应评估——特征工程篇(一)_corporación favorita grocery sales forecasting论文-CSDN博客

5个时间序列预测的深度学习模型对比总结:从模拟统计模型到可以预训练的无监督模型

时间序列预测 —— DeepAR 模型-CSDN博客

使用 Temporal Fusion Transformer 进行时间序列预测

时间序列算法应用案例、工具库学习笔记-CSDN博客

http://www.xdnf.cn/news/251155.html

相关文章:

  • 云计算-容器云-服务网格Bookinfo
  • 大模型的第一天学习-LM studio的安装和本地大模型搭建
  • 从0开始建立Github个人博客(hugoPaperMod)
  • 见多识广4:Buffer与Cache,神经网络加速器的Buffer
  • A2A Python 教程 - 综合指南
  • 体系结构论文(八十二):A Comprehensive Analysis of Transient Errors on Systolic Arrays
  • 目标检测中的损失函数(三) | SIoU WIoUv1 WIoUv2 WIoUv3
  • 【计算机视觉】三维视觉:Open3D:现代三维数据处理的全栈解决方案
  • [Verilog]跨时钟域数据传输解决方案
  • 【Linux】Petalinux U-Boot
  • 普通IT的股票交易成长史--20250502 突破(1)
  • 虚拟局域网(VLAN)实验(Cisco Packet Tracer)-路由器、交换机的基本配置
  • 2000-2022年上市公司数字经济专利申请数据
  • 使用Vite创建vue3项目
  • linux下抓包工具--tcpdump介绍
  • 2025年- H20-Lc128-240. 搜索二维矩阵 II(矩阵)---java版
  • C++ 动态内存管理
  • 【现代深度学习技术】现代循环神经网络03:深度循环神经网络
  • 通信协议记录仪-产品规格书
  • PostgreSQL常用函数
  • jdk8之后都有什么优化单例的方式
  • C++之IO流
  • 如何让模型聪明地选择特征:一种“蒸馏及选择”的方法
  • Seata客户端代理增强核心源码解析
  • Laravel 12 实现 OAuth2 登录
  • 鼎讯信通 智能通信干扰设备:多频段多模态信号压制解决方案
  • 【C++11】智能指针
  • 【学习笔记】机器学习(Machine Learning) | 第五章(2)| 分类与逻辑回归
  • 第 12 届蓝桥杯 C++ 青少组中 / 高级组省赛 2021 年真题
  • Python3 基本数据类型