Time-Series

跨多個商店的數千種產品的產品需求預測

  • May 6, 2018

我目前正在處理一項需求預測任務,其中包含數千家商店的數万種產品的數據。更具體地說,我有每家商店每件產品幾年的每日銷售數據,我的目標是預測每家商店每件商品的未來銷售量,提前一天;然後提前兩天,等等。

到目前為止,我已經考慮將每個產品-商店對分解為單個時間序列,並按照 Neal Wagner 的論文“預測現實係統中多個時間序列的智能技術”中所做的那樣對每個時間序列進行預測。換句話說,我將僅使用特定商店的產品銷售歷史信息來預測該產品在該商店中的未來銷售情況。

但是,我一直在瀏覽 Kaggle,像Corporación Favorita Grocery Sales Forecasting這樣的競賽提出了一種不同的方法,即使用來自所有商店和所有產品的信息來預測未來的銷售情況。據我了解,所有商店的所有產品的歷史銷售信息都被轉儲到訓練集中,模型將從中學習預測未來的銷售。它與傳統的時間序列方法有很大不同,但顯然,根據比賽的結果,它是有效的。

後一種方法似乎很有希望並且更強大。但是,存在必須處理數億個數據點的問題。

哪種方法更適合我的任務?對於那些解決過類似問題的人,您會推薦哪種方法?

我不推薦 Neal等人使用的方法。. 他們的數據是獨一無二的,原因有兩個:

  • 他們正在處理食品數據,這些數據通常比其他零售產品銷售數據更密集、更穩定。一個特定的地點每週將銷售數十個牛奶盒或雞蛋包,並且幾十年來一直在銷售這些相同的產品,而時裝或汽車零件每 3 或 4 週銷售一件商品的情況並不少見,並且只有一兩年的數據可用。
  • 他們預測的是倉庫而不是商店。一個倉庫覆蓋多個商店,因此他們的數據比平均水平還要密集。事實上,倉庫通常用作商店的自然聚合/分組級別,因此它們實際上已經在執行商店數據的分組。

由於數據的性質,他們可以直接對單個時間序列進行建模。但大多數零售商的數據在單個 sku/商店級別上過於稀疏,以至於他們無法實現這一目標。

正如 zbicyclist 所說,這個問題通常使用分層或多梯隊預測來解決。商業需求預測包都使用某種形式的分層預測

這個想法是將產品和商店分組到相似的產品和區域中,生成匯總預測並用於確定整體季節性和趨勢,然後使用自上而下的方法與為每個單獨的 sku 生成的基線預測進行協調。 /存儲組合。

除了提到的挑戰 zbicyclist 之外,更大的問題是找到產品和商店的最佳組合是一項艱鉅的任務,需要結合領域專業知識和經驗分析。產品和商店通常按詳細的層次結構分組在一起(按部門、供應商、品牌等…對於產品,按地區、氣候、倉庫等…對於位置),然後將其與歷史銷售額一起輸入預測算法數據本身。


解決 meraxes 評論

Corporación Favorita Grocery Sales Forecasting Kaggle Competition 中使用的方法怎麼樣,它們允許模型從幾個(可能不相關的)產品的銷售歷史中學習,而無需進行任何明確的分組?這仍然是一種有效的方法嗎?

他們通過使用 store、item、famlily、class、cluster 作為分類特徵來隱式地進行分組。

我剛剛通讀了一點 Rob Hyndman 關於分層預測的部分。在我看來,採用自上而下的方法可以提供對總體水平的可靠預測;然而,它的巨大缺點是由於聚合而丟失信息,這可能會影響底層節點的預測。它也可能“無法捕捉和利用單個系列特徵,例如時間動態、特殊事件”。

與此相關的三點:

  • 他指出的缺點取決於數據的分組。如果您匯總所有產品和商店,那麼是的,這將是一個問題。例如,聚合所有地區的所有商店會混淆任何地區特定的季節性。但是你應該只聚合到相關的分組,正如我所指出的,這需要一些分析和實驗才能找到。
  • 在零售需求的具體案例中,我們並不擔心“聚合丟失信息”,因為往往底層節點(即SKU/Store)的時間序列包含的信息很少,這也是我們將它們聚合到更高的原因。水平放在第一位。
  • 對於 SKU/商店特定事件,我們團隊處理它的方式是在生成預測之前刪除事件特定影響,然後在生成預測之後將它們添加回來。有關詳細信息,請參見此處

引用自:https://stats.stackexchange.com/questions/344705

comments powered by Disqus