多序列 時間序列預測

  • 2021 年 6 月 1 日
  • AI

大部分經濟學模型基本上都只能處理單序列問題,多個序列則要分開構建多個模型,對於大量的多序列,這樣的處理方式往往難以接受,比如10萬個商品意味著要構建10萬個經濟學模型,如果是簡單平均預測之類的模型倒是沒什麼問題,如果是一些複雜的經濟學模型,則模型的構建和維護成本太高。

所以一般多序列都放到一起用一個模型來建模,這麼做的基本假設就是,我們把多序列問題當作一個 假設的單序列的的子序列,建模的目的在於學習所有多序列之間共同存在的模式。比如說股票,A股的上千隻股票我們都當作一隻股票的序列數據來建模,這樣的話,某個時間段內的序列會出現非常多次,比如說 2020-01-01到2020-02-1,相同時間區間里的序列會有上千個,這樣模型能學到什麼呢?模型只能學到所有序列數據共同的一些比較「宏觀」的運行模式,這也是為什麼多序列建模之後,會發現每個序列的預測總是不那麼准,畢竟你的數據是這麼提供的,模型只能學習到其中最相似的模式,從而使得整體的loss最小。

比如說adidas這種大企業,基本上中國的大部分省市都有其不同商品的銷量數據,這些數據全部放在一起,不同區域、不同熱門程度、不同品類的商品都放在一起用一個模型建模,就硬train,這種情況下建模的效果往往不好,比如你adidas的鞋子可能賣的很火,但是你adidas的冰淇凌(只是舉例)可能就沒什麼銷量,畢竟市面上專門做冰淇凌的公司還是有很多的,這種情況下模型壓根學不到什麼共同的模式,可能最終學習到的是比較折中的對兩種商品的預測效果都不好的規律,大概像這樣:

假設上面的是nike的鞋子,下面是nike的冰淇凌,最終學出來的擬合曲線是中間的那條,顯然對於二者的預測效果都不好。

因此,更好的方式是做時間序列聚類,然後每個聚類單獨建模,比如nike的鞋子和衣服一起建模,nike的冰淇凌和nike的餅乾一起建模,因為對時間序列聚類幾乎沒有涉及,所以之前都是通過城市,大類等方式來人工對多個序列進行分群然後單獨建模,實際效果比整體建模要好得多。時間序列聚類還是挺有意思的,因為應用的場景也是比較有想像空間的,比如用戶的交易序列進行聚類,從而檢測交易序列有問題的欺詐用戶等等