目前的時間序列預測的state of the art 方法?

注意,是時間序列的預測問題(特別是只預測一個y值)。實際問題場景如下描述:

首先是時間軸,共5個月,每天中的每個時間段(24個)的y值,然後預測第六個月(或只是第六個月第一周)的每天的24個時間段的y值。

這裡的y值是類似於某一公園的總客流量這樣的變數。因此y值受當天天氣、節假日等因素的影響。

關於預測方法,我查過之後,得知主要有三類方法:1,線性回歸之類的,這類方法我比較熟悉,可以將上述(天氣、節假日)的因素提取特徵加進去;2,ARIMA類的經典時間序列方法;3,RNN和LSTM等機器學習方法。只是我對2和3了解很少,不知道如何將上述(天氣、節假日)的因素提取特徵加進去?

所以,1:目前這類問題最好的方法是哪一類?

2:如果使用LSTM或RNN,有辦法將上述(天氣、節假日)的因素提取特徵加進去訓練嗎?

------LZ是機器學習小白。


回答問題

1. no free lunch原理,沒有通用的對每個問題都最優的演算法。具體問題具體分析。

但幾乎可以肯定的說,機器學習方法無論在準確率、通用性、適應性都遠遠超過傳統的統計分析方法。比如arIMa其實就可以用線性的機器學習模型學到,但是arIMa學不了機器學習的非線性預測能力、抽象能力或者集成學習能力。

2.當然可以。首先我要說,機器學習演算法不止rnn和lstm這兩個神經網路演算法,還可以設定滑動時間窗口的特徵,然後用任何一種回歸演算法(線性回歸、嶺回歸、貝葉斯方法、決策樹、支持向量機、ann、以及各類集成學習演算法如rf,xgb)都能做回歸分析。

具體上述哪個機器學習回歸演算法好,這是取決於你的數據集,這還是回到我說的第一個點,具體問題要具體分析,實踐是檢驗演算法的唯一標準。多用幾個模型,多嘗試,算cv的準確率。

新手的話,對於Python的sklearn,有個基礎的表可以看看(但是記住這些都不包括集成演算法如rf和gbrt xgb )

另外,剛才提到的滑動時間窗口特徵也好理解。定一個窗口大小n,那麼第t個時間的預測,模型所使用特徵用t-1. t-2一直到t-n,這個n你自己定就好。注意一點,在這個窗口裡的y即歷史上的因變數(標籤)記錄,也是要用到第t個時間的預測里的。

--

半年後補充

比起滑動窗口模型,用LSTM和RNN方法在時間序列預測上模型應該是更直觀的。

具體問題具體演算法,如果是純序列預測的問題上可能效果更好,而且不用人工提取特徵。


我簡單講下2.加入節假日等時間因素的一個處理方法吧。把天氣、節日做成連續變數或者0-1變數,做線性回歸,用殘差做狀態空間模型(可以理解為超級版的ARIMA),R里{forecast}包中有個tbats函數,有心的話可以看下這個函數的幫助文檔和論文。這樣的思路可以用於處理節假日,天氣,多周期,不平穩,各種類似的時序問題。


數據量不夠的時候別想著用神經網路,lstm什麼的,那得是大數據。


最近在弄類似的東西,一些感想如下。

本質上講,可利用的無非是序列的歷史信息和關於預測內容的跨域信息。

只考慮歷史信息的話,基於回歸的方法(ARMA不妨大概認為是一種多元線性回歸)基本也就做到頭了。這個方法可以提供一個群體的發展趨勢,但對於個體的差異帶來的預測結果和觀察值的波動很難處理。

此時加進去一些跨域特徵,使得對不同類型、變化趨勢的個體得以區分,從而希望可以再提高一下性能。這大概是使用RNN之類方法的原因。

所以我覺得先不提方法,了解要分析的數據是更重要的。也就是找到有區分度的信息在哪裡。然後再選擇使用什麼方法,能夠「放大」這些區分度,從而使用不同的模式刻畫變化,進行預測。

不可能期望某一個方法如同一個黑盒子,把所有能取得的信息全扔進去,然後它就能自動的給出預測結果。當然,如果真的有這種東西,請務必告訴我。。。


第一個問題我們大概都無法回答,要看你數據的量和分布情況,沒有panacea。和前面答主 @梁賦航 的no free lunch一個意思。

至於第二個問題,答案是當然可以,相關paper檢索關鍵詞context。這種時候必須要夾帶點私貨了,推薦實驗室師兄 @李Shawn 的工作(Blood Pressure Prediction via Recurrent Models with Contextual Layer)

http://www.shuwu.name/sw/RNN-CL.pdf

P.S. 同感數據量不夠大啊,題主你要不要再翻翻kaggle看看經典方法。。。一共才六個月數據,SVR,Boosting什麼的不說,直接平移說不定都比LSTM效果好喲。。。

P.P.S. TensorFlow 1.3 的Time Series(tfts)可以嘗試一下|?ω?`),無責任安利,我還沒跑過。


推薦閱讀:

時間序列如何分析周期性?
如何判斷時間序列是否是白雜訊?
時間序列異常檢測演算法研究?
如何評價facebook開源的prophet時間序列預測工具?
機器學習門下,有哪些在工業界應用較多,前景較好的小方向?

TAG:數據挖掘 | 機器學習 | 時間序列分析 |