供應鏈算法整理(一)--- 銷量預估

? ? ? ? 在供應鏈管理領域有較多的預估場景,例如送達時長預估、銷量預估、用電量預估。特別的在智能供應鏈領域,銷量和庫存的管理的智能化也依賴銷量預估,因此在本文我們整理了 銷量預估的算法詳細的技術方案。

????????時間序列預測在最近兩年內發生了巨大的變化,尤其是在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.pswp.cn/bicheng/79367.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/79367.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/79367.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

第4篇:服務層抽象與復用邏輯

在業務系統復雜度指數級增長的今天&#xff0c;服務層&#xff08;Service Layer&#xff09;的合理設計直接影響著系統的可維護性和擴展性。本文將深入剖析 Egg.js 框架中的服務層架構設計&#xff0c;從基礎實現到高級封裝&#xff0c;全方位講解企業級應用的開發實踐。 一、…

Java學習手冊:Spring 數據訪問

一、Spring JDBC JdbcTemplate &#xff1a;Spring JDBC 提供了 JdbcTemplate 類&#xff0c;它簡化了數據庫操作&#xff0c;提供了豐富的 API 來執行數據庫訪問任務。JdbcTemplate 可以自動處理數據庫連接的獲取、釋放&#xff0c;SQL 語句的執行&#xff0c;結果集的處理等…

遞歸、搜索和回溯算法《遞歸》

在之前的優選算法當中我們已經學習了一些基本的算法&#xff0c;那么接下來我們就要來學習算法當中的一大重要章節——遞歸、搜索和回溯算法&#xff0c;其實也就是大家常常聽到的dfs、bfs&#xff1b;其實本質就是遞歸&#xff0c;在學習搜索、回溯等算法的過程當中我們會先來…

Java進階--設計模式

設計模式是一套被反復使用的、多數人知曉的、經過分類編目的、代碼設計經驗的總結。使用設計模式是為了重用代碼、讓代碼更容易被他人理解、保證代碼可靠性。設計模式使代碼編制真正工程化&#xff0c;設計模式是軟件工程的基石&#xff0c;如同大廈的一塊塊磚石一樣&#xff0…

如何禁止AutoCAD這類軟件聯網

推薦二、三方法&#xff0c;對其他軟件影響最小 一、修改Hosts文件 Hosts文件是一個存儲域名與IP地址映射關系的文本文件&#xff0c;通過修改Hosts文件可以將AutoCAD的域名指向本地回環地址&#xff08;127.0.0.1&#xff09;&#xff0c;從而實現禁止聯網的目的。具體步驟如…

深度學習框架搭建(Vscode/Anaconda/CUDA/Pytroch)

目錄 ??????一 Vscode安裝 二、Anaconda安裝 三、更新顯卡驅動 四、安裝CUDA 五、安裝Pytorch 六、Vscode配置 七、出現的問題匯總 ??????一 Vscode安裝 在 Windows 上安裝 訪問 VS Code 官網 https://code.visualstudio.com/&#xff0c;點擊 "Downl…

結構模式識別理論與方法

我們在前文《模式識別的基本概念與理論體系》中就已經提及“模式分類”。 具體內容看我的CSDN文章&#xff1a;模式識別的基本概念與理論體系-CSDN博客 模式的識別方法主要有統計模式識別方法和結構模式識別方法兩大類。統計模式識別方法提出得較早&#xff0c;理論也較成熟…

12.多邊形的三角剖分 (Triangulation) : Fisk‘s proof

目錄 1.Fisks proof Trangulation Coloring Domination Pigeon-Hold Principle Generation 2.Orthogonal Polygons (正交多邊形) Necessity of floor(n4) Sufficiency by convex Quadrilateralization Generalization 1.Fisks proof Trangulation 引入內對角線&…

面經-計算機網絡——OSI七層模型與TCP/IP四層模型的對比詳解

OSI七層模型與TCP/IP四層模型的對比詳解 一、圖示解析&#xff1a;分層封裝結構 你提供的圖清晰展示了網絡通信中從應用層到物理層的封裝過程&#xff0c;每一層都會對上層的數據加上自己的頭部信息&#xff08;Header&#xff09;&#xff1a; 應用層&#xff1a; 應用…

React Native本地存儲方案總結

1. AsyncStorage&#xff08;鍵值對存儲&#xff09; 適用場景&#xff1a;簡單鍵值對存儲&#xff08;如用戶配置、Token、緩存數據&#xff09;。特點&#xff1a;異步、輕量、API 簡單&#xff0c;但性能一般&#xff0c;不推薦存儲大量數據。安裝&#xff1a;npm install …

Arduino程序函數詳解與實際案例

一、Arduino程序的核心架構與函數解析 Arduino程序的核心由兩個函數構成:setup() 和 loop()。這兩個函數是所有Arduino代碼的骨架,它們的合理使用決定了程序的結構和功能。 1.1 setup() 函數:初始化階段 setup() 函數在程序啟動時僅執行一次,用于完成初始化配置,例如設置…

【Unity】使用Socket建立客戶端和服務端并進行通信的例子

Socket服務端: using System; using System.Collections.Generic; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading; public class SocketServer { public static Socket listenSocket;//監聽Socket public static List<Socket>…

Qt connect第五個參數

在 Qt 中&#xff0c;QObject::connect 函數的第五個參數用于指定 連接類型&#xff08;Qt::ConnectionType&#xff09;&#xff0c;它決定了信號與槽之間的通信方式。以下是各枚舉值的詳解及使用場景&#xff1a; 1. Qt::AutoConnection&#xff08;默認值&#xff09; 行為…

【2025域適應科研日報】

本筆記主要為了記錄自己的科研日報&#xff0c;前段時間剛開始想寫的初衷也是為了自己的思考不跑偏&#xff0c;但是有幾天又沒有堅持下來&#xff0c;看到一位學長的文章&#xff0c;發現這種形式還是很有必要的&#xff0c;所以自己也打算堅持記錄下來&#xff0c;由于還正在…

XrayR啟動失敗

公司要用服務器之間進行數據加密&#xff0c;這里用的XrayR 我使用的Centos 7。 我這里使用一鍵腳本安裝后&#xff0c;/etc/XrayR目錄下沒有配置文件。 解決方案 XrayR安裝時&#xff0c;系統沒有unzip工具&#xff0c;也是會安裝失敗的&#xff0c;因為Centos7已經停止維…

鴻蒙文件上傳-從前端到后端詳解,對比jq請求和鴻蒙arkts請求區別,對比new FormData()和鴻蒙arktsrequest.uploadFile

需要權限&#xff1a;ohos.permission.INTERNET 1.nodejs自定義書寫上傳后端接口 傳輸過來的數據放在files?.image下 router.post(/upload,(req, res) > {var form new multiparty.Form();form.uploadDirpublic/images/uploads; //上傳圖片保存的地址(目錄必須存在)fo…

編寫教育網站后端頁面筆記

callbacktitle.html 對應表: 對應的功能: 控制器層數據: 頁面沒有寫內容 chapter.html 對應表: questionbank ,intofloortime,questionBank,title,didtitles,option,answer,analyse 對應的功能:問題反饋頁面 控制器層數據(控制器類): ChapterQuestionbankTitle c…

日常開發小Tips:后端返回帶顏色的字段給前端

一般來說&#xff0c;展示給用戶的字體格式&#xff0c;都是由前端控制&#xff0c;展現給用戶&#xff1b; 但是當要表示某些字段的數據為異常數據&#xff0c;或者將一些關鍵信息以不同顏色的形式呈現給用戶時&#xff0c;而前端又不好判斷&#xff0c;那么就可以由后端來控…

用spring-boot-maven-plugin打包成單個jar有哪些缺點優化方案

Spring Boot 的 Fat JAR&#xff08;通過 spring-boot-maven-plugin 打包&#xff09;雖然簡化了部署&#xff0c;但也存在一些潛在缺點&#xff0c;需根據場景權衡&#xff1a; 1. 啟動速度較慢 原因&#xff1a; Fat JAR 需要在啟動時解壓并加載所有依賴的 JAR 文件到類路徑…

Flowable7.x學習筆記(十五)動態指定用戶分配參數啟動工作流程

前言 得益于之前我們的基礎工程準備&#xff0c;我們終于可以正式啟動工作流程了&#xff0c;在啟動之前我們需要分配一下每個用戶任務的用戶信息&#xff0c;其中有三個選擇&#xff1a;【辦理人】/【候選組】/【候選用戶】&#xff0c;我們需要將系統中的用戶ID填入作為固定參…