sales_train_validation.csv
參考:
- Python版本EDA+傳統時間序列方法:https://www.kaggle.com/tarunpaparaju/m5-competition-eda-models
- model:naive approach, moving average, Holt linear, exponential smoothing, ARIMA, and Prophet
- R版本EDA:https://www.kaggle.com/headsortails/back-to-predict-the-future-interactive-m5-eda
時間序列預測方法:
- 傳統統計學習方法:只用sales_train_validation.csv數據,對每個id的d_系列的銷量數據即可。
- 非傳統算法:可以結合所有其他csv數據以及構造特徵來預測。
數據預覽:
id | item_id | dept_id | cat_id | store_id | state_id | d_1 | d_… |
---|---|---|---|---|---|---|---|
HOBBIES_1_001_CA_1_validation | HOBBIES_1_001 | HOBBIES_1 | HOBBIES | CA_1 | CA | 0 |
字段關係預覽:
商品探索:
1. 整體聚合序列
- 整體聚合銷量時間序列。
- 銷售額普遍上升,這對沃爾瑪來說是個好消息。我們可以找出一些每年的季節性,在聖誕節下降,這是一年中唯一的商店關閉的日子。
- Zooming in, we can see strong weekly seasonality plus possibly some additional overlaying patterns with shorter periods than yearly.
- 最新的 2016 年銷售額似乎比往年增長得更快。
2.商品聚合序列
-
日銷量爲0的太多。
-
商品稀疏性,有些州的商品並不是從開始時間就存在,有些則是斷斷續續,這是本賽的最大難點之一,怎樣去燥等。(如下)
- 針對不同商品開始出現時間不一,是否可增加新老商品概念。
- 針對商品週期性銷量,是否可增加必需品與非必需品概念。
- 針對斷斷續續的商品,???實施去噪。
- 小波去噪:(通常用於電信號)是一種從時間序列中去除不必要噪聲的方法。 這種方法計算稱爲"小波係數"的係數。 這些係數決定保留哪些信息(信號)和丟棄哪些信息(噪聲)。我們利用MAD(平均絕對偏差)值來了解銷售中的隨機性,並據此確定時間序列中小波係數的最小閾值。 我們從小波中篩選出低係數,並從剩餘係數中重建銷售數據,僅此而已;我們已經成功地從銷售數據中去除了噪聲。(參考https://www.kaggle.com/tarunpaparaju/m5-competition-eda-models)(對比見下)
- 平均平滑: 是去噪時間序列數據的一種相對簡單的方法。 在這種方法中,我們採取一個固定大小的"窗口"(如10)。 我們首先將窗口放在時間序列(前十個元素)的開頭,並計算該部分的平均值。 我們現在通過特定的"步幅"在時間序列中向前移動窗口,計算新窗口的平均值並重復該過程,直到我們到達時間序列的結束。 然後,我們計算的所有平均值都連接到一個新的時間序列中,形成去噪銷售數據。
下圖小波去噪示例圖,深色線條代表去噪銷售,淺線代表原始銷售。 我們可以看到,小波去噪能夠成功地找到銷售數據中的"總趨勢",而不會被噪音分心。 在銷售中查找這些高趨勢或模式可能有助於生成要素來訓練模型。
下圖平均平滑示例圖,深色線條代表平均平滑法去噪銷售,淺線代表原始銷售。 我們可以看到,平均平滑在發現數據中的宏觀趨勢和模式方面不如小波去噪有效。 即使在去噪之後,原始銷售中的很多噪音仍然存在。 因此,小波去噪顯然更有效地發現銷售數據的趨勢。 儘管如此,平均平滑或"滾動平均值"也可用於計算建模的有用特徵。
3.州聚合序列
- 加州(CA)銷售更多,而威斯康星州(WI)正在慢慢趕上得克薩斯州(TX),並在訓練集的最後幾個月超過了TX。
- CA 在 2013 年和 2015 年也出現了明顯的下降,這些下降似乎也出現在其他州,只是不太嚴重。這些下降和峯值似乎並不總是發生(見2012年),但它們可能主要反映了我們已經注意到的年度季節性。
- 2012年之後,每年的年中附近銷量最高,在此之前銷量緩增加,隨後銷量下降,可能年中有大促之類。
- 2012年之前無週期性,考慮從2012年之後含有明顯週期性開始算?
- 每個州的銷量呈現不同的增長趨勢,考慮分開單獨訓練?
4.州-店鋪序列(store_id)
在上圖中,我繪製了數據集中所有商店的滾動銷售。 幾乎每條銷售曲線都有宏觀層面的"線性振盪"趨勢。 基本上,銷售振盪像一個正弦波約一定的平均值,但這個平均值有一個線性上升趨勢。 這意味着銷售每隔幾個月就會在越來越高的水平上振盪。
這一趨勢讓人聯想到商業週期,即經濟體有短期振盪波動,但長期呈線性增長。 也許,商店層面的這種小規模趨勢加起來決定我們在宏觀經濟層面看到的趨勢。 以下是宏觀經濟商業週期的說明:
傳統方法
-
不同的州有不同的銷售平均值和方差,表明這些州的發展分佈差異。
-
大多數銷售具有線性趨勢正弦波形狀,讓人聯想到宏觀經濟商業週期。
-
幾個非ML模型可用於預測時間序列數據。 移動平均線和指數平滑是非常好的模型。
-
ARIMA和Prophet的表現可以通過更多的hyperparamter調整來提升。