【時間序列預測/分類】45篇由淺入深的博文彙總(原理+論文+實戰)

前言

⏱最一段時間都在學習時間序列預測和時間序列分類相關的知識,一開始拿到任務感覺無從下手,論文看不懂,代碼不會寫。經過近三個月的摸索,也算是入門的小白了,這篇博文算是個人經過踩坑,去粗取精之後的經驗總結。通過4篇博客、9篇論文、32篇實戰教程,梳理出了一套系統化的時間序列預測和時間序列分類任務的入門指南。文中提及的博客論文和教程全部內容字數大約在50萬字到100萬字之間。既是對這段時間所學知識的梳理總結,也希望給有需要的同學提供幫助。水平有限,如有問題歡迎指出,謝謝。


🎯【適合人羣】:

  • 沒有時間序列預測/分類相關的經驗的小白

⌨【代碼環境】:

  • python 3.7.6
  • tensorflow 2.1.0

🔊【注意事項】:

  • 因爲tensorflow 2.0版本開始集成了keras,成爲了 tensorflow.keras API,因此不用額外安裝,並且無需 import keras

  • 本文提及文章的神經網絡編寫部分使用Keras深度學習框架。

  • 本文提及文章的所有代碼均在Jupyter Notebook中編寫,並測試通過。

  • 本文提及的所有文章中,參考資料均在每篇文章的文末給出。


📽【行文順序】:

  • 原理篇:邏輯順序

  • 論文篇:時間順序

  • 實戰篇:邏輯順序+時間順序

  • 注:本文提及的網絡架構、論文、教程都是按照由淺入深介紹的,教程部分(三、實戰篇)有些教程是有相互關聯的。


📖【主要內容】:時間序列任務分爲時間序列預測時間序列分類兩種類型,本文主要內容如下:

  • LSTM 及其不同的網絡架構處理時間序列預測/分類任務;
  • CNN 及其不同的網絡架構處理時間序列預測/分類任務;
  • CNN-LSTM 網絡處理時間序列預測/分類任務;
  • ConvLSTM 網絡處理時間序列預測/分類任務;
  • DeepConvLSTM 網絡處理時間序列分類任務;
  • LSTM-FCN 網絡處理時間序列分類任務;
  • Multivariate LSTM-FCNs 網絡處理時間序列分類任務


一、原理篇

本部分所有標題都設置了對應文章超鏈接,直接點擊傳送。

如果對下文提及的原理比較熟悉,可以直接跳過。


1.1 CNN

1. 零基礎入門深度學習(4) - 卷積神經網絡

  • 文章日期:2017/08/28
  • 內容梗概:CNN算法原理+數學推導+代碼實現

1.2 RNN

2. 零基礎入門深度學習(5) - 循環神經網絡

  • 文章日期:2017/08/28
  • 內容梗概:RNN算法原理+數學推導+代碼實現

1.3 LSTM

3. Understanding LSTM Networks

  • 文章日期:2015/08/27
  • 適合人羣:瞭解LSTM的基本原理。

相信大家看過的很多介紹LSTM原理的文章都用到了這篇文章的配圖。比如:
在這裏插入圖片描述


4. 零基礎入門深度學習(6) - 長短時記憶網絡(LSTM)

  • 文章日期:2017/08/28
  • 內容梗概:LSTM算法原理+數學推導+代碼實現

這三篇文章(本篇+之前同系列兩篇)應該是我目前遇到的講解得最詳細最全面思路最清晰的文章,由淺入深,原理+推導+代碼,牆裂推薦。


二、論文篇

本部分主要內容:

  • 時間序列分類任務數據集構建(人類活動識別)
  • CNN-LSTM 網絡
  • ConvLSTM 網絡
  • DeepConvLSTM 網絡
  • LSTM-FCN 網絡

本部分可以先跳過,直接看實戰篇,如果對其中的網絡架構有疑問或者有些內容看不懂,再閱讀這些論文也可以。


2.1 WISDM 實驗室論文

1. Activity Recognition using Cell Phone Accelerometers

  • 論文被引:2034
  • 論文年份:2010

WISDM實驗室應該是最早開始做基於手機傳感器的人類活動識別的實驗室,手機的數據只有3個特徵(3軸傳感器數據)。這篇論文是該實驗室的第一篇論文,主要介紹了關於數據集的構建與處理


2. Cell Phone-Based Biometric Identification

  • 論文被引:262
  • 論文年份:2010

這篇論文是該實驗室的第二篇論文,主要介紹了 數據收集以及將時間序列數據轉換爲樣本的過程,值得借鑑。

該實驗室還有3篇論文,個人感覺參考意義不大,可以先不看。


2.2 UCI-HAR 數據集論文

1. Human Activity Recognition on Smartphones using a Multiclass Hardware-Friendly SVM

  • 論文被引:619
  • 論文年份:2012

這篇論文是創建該數據集的實驗室發表的有關人類活動識別的第一篇論文,主要介紹了使用監督機器學習方法通過手機傳感器信號來識別人類活動(6類,分別是站立,行走,放置,行走,上樓和在下樓)進行分類。使用9個特徵(6軸傳感器+3個分離信號(身體重力加速度))。


2. A Public Domain Dataset for Human Activity Recognition Using Smartphones

  • 論文被引:763
  • 論文年份:2013

這篇論文介紹了 UCI-HAR Dataset數據集是如何創建的,很有借鑑意義,如果做時間序列分類任務的話,是必讀論文


2.3 CNN-LSTM 論文

1. Long-term Recurrent Convolutional Networks for Visual Recognition and Description

  • 論文被引:3634
  • 論文年份:2015

該論文提出的網絡架構最初被稱爲長期循環卷積網絡(LRCN),現在使用“CNN LSTM”來指代使用CNN作爲前端的LSTM。該網絡架構最初用於生成圖像的文本描述的任務。關鍵是CNN,該CNN在圖像分類任務上進行了預訓練,使得可以用作字幕生成的特徵提取器。


2. Show and Tell: A Neural Image Caption Generator

  • 論文被引:3378
  • 論文年份:2015

該論文提出的網絡架構用於語音識別和自然語言處理問題,其中CNN用作音頻和文本輸入數據上的特徵提取器,之後輸入到LSTM進行進一步處理。

這兩篇論文是CNN-LSTM網絡家族的開篇之作,是必讀論文。


2.4 ConvLSTM 論文

1. Convolutional LSTM Network: A Machine Learning Approach for Precipitation Nowcasting

  • 論文被引:1787
  • 論文年份:2015

這篇論文是最先提出 ConvLSTM 網絡架構的論文,該論文是用於預測相對短時間內某個地區未來的降雨強度,屬於必讀論文。


2.5 DeepConvLSTM 論文

1. Deep Convolutional Neural Networks On Multichannel Time Series For Human Activity Recognition

  • 論文被引:541
  • 論文年份:2015

在基準數據集上對所提方法與現有方法的比較進行了廣泛的研究。結果表明,該方法是一種很有競爭力的HAR問題求解算法。該論文還研究了CNN的效率,並得出結論:CNN對於在線人類活動識別是足夠快的


2. Deep Convolutional and LSTM RNN for Multimodal Wearable Activity Recognition

  • 論文被引:836
  • 論文年份:2016

該論文提出了DeepConvLSTM網絡架構:由卷積層和LSTM循環層組成的深度學習框架,它能夠自動學習特徵表示並對它們的激活之間的時間依賴性進行建模。通過業內的標準的人類活動識別數據集(OPPORTUNITY和Skoda)進行實驗,證明此框架適用於可​​穿戴傳感器數據的活動識別。屬於必讀論文。


2.6 LSTM-FCN 論文

1. LSTM Fully Convolutional Networks for Time Series Classification

  • 論文被引:211
  • 論文年份:2017

該論文提出的模型在顯著地提高全卷積網絡性能的同時保證模型大小隻有很少的增加,並且幾乎不需要對數據集進行預處理。提出的長短期記憶-全卷積網絡 (LSTM-FCN) 與其他網絡相比,具有最新的性能。利用注意力-長短期記憶-全卷積網絡 (ALSTM-FCN),探討了注意力機制在時間序列分類中的應用。利用注意力機制可以可視化LSTM細胞的決策過程。此外,還提出了微調的方法來提高訓練模型的性能。對模型的性能進行了全面的分析,並與其他技術進行了比較。


2. Multivariate LSTM-FCNs for Time Series Classification

  • 論文被引:70
  • 論文年份:2018

該論文提出將現有的單變量時間序列分類模型長短期記憶-全卷積網絡(LSTM-FCN)和注意力-長短期記憶-全卷積網絡(ALSTM-FCN)通過在全卷積塊上增加一個壓縮和激勵塊來進一步提高分類精度,從而轉化爲多變量時間序列分類模型。提出的模型在少量預處理的情況下優於大多數最新模型。所提出的模型能有效地處理各種複雜的多元時間序列分類任務,如活動識別或動作識別。此外,所提出的模型在滿足實時要求(小,快),可以部署在內存受限的系統上。


看完這些論文,瞭解網絡架構,看看代碼然後結合自己的業務需求調參,基本上夠用了。


三、實戰篇

3.1 時間序列任務 入門篇

本部分不涉及具體的數據集,使用構造的數字序列;目的是通過程序瞭解網絡架構和定義方法。


LSTM 01:理解LSTM網絡及訓練方法

LSTM 02:如何爲LSTMs準備數據

LSTM 03:如何用Keras編寫 LSTMs

LSTM 04:4種序列預測模型及Keras實現

LSTM 05:如何用Keras開發 Vanilla LSTMs 和 Stacked LSTMs

LSTM 06:如何用Keras開發 CNN LSTM

LSTM 07:如何用Keras開發 Encoder-Decoder LSTM

LSTM 08:超詳細LSTM調參指南


3.2 時間序列預測 基礎篇

時間序列預測01:如何將時間序列預測轉化爲監督學習問題

時間序列預測02:經典方法綜述 自迴歸ARIMA/SRIMA 指數平滑法等

時間序列預測03:如何爲CNN/LSTM模型構建數據集

時間序列預測04:TF2.1開發多層感知器(MLPs)時間序列預測模型詳解

時間序列預測05:CNN時間序列預測模型詳解 01 Univariate CNN、Multivariate CNN

時間序列預測06:CNN時間序列預測模型詳解 02 Multi-step CNN、Multivariate Multi-step CNN

時間序列預測07:如何開發LSTM實現時間序列預測詳解 01 Univariate LSTM

時間序列預測08:如何開發LSTM實現時間序列預測詳解 02 Multivariate LSTM

時間序列預測09:如何開發LSTM實現時間序列預測詳解 03 Multi-step LSTM

時間序列預測10:如何開發LSTM實現時間序列預測詳解 04 Multivariate Multi-step LSTM


3.3 時間序列預測 進階篇

時間序列預測11:用電量預測 01 數據分析與建模

時間序列預測12:用電量預測 02 樸素模型多步預測建模

時間序列預測13:用電量預測 03 ARIMA模型多步預測建模

時間序列預測14:CNN 實現用電量/發電量預測

時間序列預測15:Multi-input / Multi-head CNN 實現用電量/發電量預測

時間序列預測16:Encoder-Decoder LSTM 實現用電量/發電量預測

時間序列預測17:CNN-LSTM 實現用電量/發電量預測

時間序列預測18:ConvLSTM 實現用電量/發電量預測


3.3 時間序列分類 基礎篇

時間序列分類01:人類活動識別深度學習模型綜述

時間序列分類02:數據可視化與問題分析建模流程詳解(UCI-HAR)

時間序列分類03:如何開發CNNs模型實現人類活動識別(調參)

時間序列分類04:如何開發LSTMs模型實現人類活動識別(CNN-LSTM、ConvLSTM)


3.4 時間序列分類 進階篇

⏳ 更新中···


3.5 番外篇

時間序列分類05:Python yield 實現滑動窗口截取時間序列數據(滑動步長可調)

時間序列分類06:numpy unique() 方法實現將分類標籤轉化爲數字編碼(非one-hot)


4. 調參篇(頭髮掉光篇)

⌛更新中···


以上是三個多月以來對時間序列預測和分類任務的總結,僅供參考。如果給你帶來了幫助,請動動手指點個贊;如果對文中內容存疑,歡迎指出交流,謝謝各位人才。

拿到任務剛開始的時候,無從下手,四處碰壁,走了很多彎路。經過這段時間的試錯和摸索(掉頭髮),算是總結出了一些門道。上文提到的論文,是個人認爲幫助比較大的論文,如果在做時間序列預測或分類任務的話最好要都讀一篇,理解其中的建模思路和網絡架構的優缺點,以便在業務需求中快速上手。

實戰篇的代碼主要參考澳大利亞博主Jason Brownlee的博客文章,在此表示感謝。博客地址:傳送門


碼字不易,點個贊👍吧。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章