如何構建一般時間序列問題的回歸解決方案

經常有人問我說:浪叫獸時序問題我不知道如何建立解決方案,我這裡介紹一下簡單的思路

圖一

簡單的打個比方,我有兩周數據(圖一),我讓你預測第三周的,這個是就屬於時序問題了。

我來說一下特徵,我取abcde第一周的均值作為特徵,abcde就都有一個特徵了。

接著說訓練集:以A的第一個特徵和label為例,我用A第一周的均值作為特徵mean(D2:I2),第二周第一天的真值作為label (K2)

就會有 A mean(7) label(1) ,這樣就有了一個樣本

接著說預測集:A 對應第二周就有對應的均值,mean(K2:Q2) label(未知),這樣就有了一個預測樣本了

在一個樣本A樣本上增加一個時間標記(周幾),對於label為第二周第一天的label,我在天數一欄填寫數值1,對於我要預測的第二天 ,我這天數一欄添加2。而特徵保持不變都用上一周的均值。

圖二

如上圖二,就簡單的構建了樣本A的兩天樣本,所以對於A預測7天的時序問題,我們就可以構建一個以上述思路的擴展的回歸問題。A就有如圖三所示的訓練集,和預測集。

圖三

對於ABCDE,我們也以同樣的方法構建就有了我們時序問題的訓練集。在這裡天數特徵是必不可少的特徵。以上就是簡單的沒有任何作息干擾,沒有節假日影響的時序問題。

對於特徵你們還要試試 mean max min last first std skew 這種哪個特徵好,然後你的特徵數就由 1個mean(7),變成了N個你能想到的統計量。

PS:特徵就是為了能讓演算法區分樣本的唯一性,足夠表達樣本的唯一性(有合理的數據解釋結果(區分樣本),才能快速計算出結果)。

滑窗的介紹:按照我們的上面的方法我們就可以得到以下的數據集(一套訓練集,一套預測集)

圖四

現在的情況是我們過了一周後,我有了第三周的數據,現在我需要預測第四周。

這樣訓練集 和 預測集 就放在了一起, 預測集 變為 train 2 (圖四)

圖四

現在我把新的預測集填上,我們就有了2套訓練集,一套新的預測集。

圖五

在這個基礎之上我們在添加一列月份(圖六):

圖六

上述就是簡單的滑窗概念,我一月份有一份訓練集,二月份一樣有一份訓練集。預測的是 3月份的 ,如果數據我提供的 就只有 1 2 月,所以只能滑兩次 ,如果我是讓你預測的 12月份的 ,理論上 你可以有 11 個訓練子集,不過 11個訓練子集 可能不如 2個 或者 6 個 。

區分時間的特徵這時序裡面都是很有效果的,比方說周幾,每月的第幾周,每月的第幾天,每周的第幾天,休息日,節假日,季度,四季。這些都是我們作息上對於時間區分的強特徵。

時序問題的回歸建模,這裡我介紹的是我最常用的建模方案,希望能幫助大家打開時序問題的建模大門。


推薦閱讀:

TAG:時間序列分析 | Kaggle | 數據挖掘 |