[論文紹介]On-the-fly Data Augmentation for Forecasting with Deep Learning
論文
On-the-fly Data Augmentation for Forecasting with Deep Learning
Summary
- on-the-fly*データ拡張の形式化
- シーズナル分解とbootstrapに基づくOnDAT手法の提案
- 8つのbenchmark datasetsでSOTAを達成
*on-the-flyは、ミニバッチ内を指す
Introduction
時系列予測は、実世界での活用が最も難しい。一方研究分野では、ARIMAやExponential Smoothingなどの統計的な手法だけではなく、NHITSやN-BEATS、ES-RNNなどのNNも優れた予測性能を出している。
DeepLearning(DL)には十分なデータが必要だが、時系列データは少ないこともしばしばある。時系列データのAugmentationはノイズ付与からGenerative Modelなどの手法が開発されている。
しかし、従来のAugmentationは、Modelの学習前にOriginal DatasetおよびAugmentation Datasetを作成するため、単一のDatasetしか作れず、Original Dataの生成プロセスを十分にカバーしきれない欠点がある。
そこで、データの生成プロセスを効率的に探索するために、学習中に逐次的にAugmentationを行うOn-the-fly Data Augmentationを提案した*。
*On-the-flyのAugmentationは音声認識の分野では有望な結果がでている。
Background
時系列データとは、時間順に並んだ値の系列 Y={y1, y2, ..., yt}のことで、yiはiの時点での値、tはYの長さである。時系列予測の目標は、hを予測期間として将来の観測値yt+1, ..., yt+hを予測すること。
Approches
機械学習による時系列予測には、ローカルアプローチとグローバルアプローチの二通りがある。
ローカルアプローチでは、過去q期などのラグを埋め込んだ形のAuto-Regressive Modelと捉え、一つのモデルを個々の時系列に当てはめて学習する。一方、グローバルアプローチでは全時系列の関係性や相互の特徴をまとめて学習する。グローバルアプローチでは、RNN、CNN、Transformerなどそれぞれを利用したアーキテクチャが提案されている。最近ではMLPベースのN-BEATSやNHITSが優れた性能を示している。
引用 : Global Models for Time Series Forecasting: A Simulation Study
Time-Series Augmentation
時系列のData Augmentationには様々な手法があり、簡単なものではFlippingやJittingがあり、シーズナル分解やGenerative Modelを活用する高度な手法もある。
- DBA : dynamic time warping barycentric averaging : 時系列データの重み付き平均による拡張
- MBB : moving blocks bootstrapping : シーズナル分解とBootStrappingによる拡張
- GRATIS : GeneRAting TIme Series with diverse and controllable characteristics : ガウス混合ARモデルによる拡張
OnDAT
Data augmentation technique
OnDATはSTLを用いたシーズナル分解に基づいてData Augmentationを行う。時系列データをSeasonal、Trend、LOESSに分解し、LOESSをMBBにかけたものを再結合して合成時系列データを作成する。
STLを用いたData Augmentationのイメージ
今回は、季節周期のある時系列データを対象としている。非季節性の場合でも、STL以外の分解方法を使えば同様のアプローチが可能らしい。
Data Augmentationで作成したデータ
On-the-fly data augmentation
OnDATのワークフローでは、ミニバッチ内でAugmentationを挟み込む形になる。ミニバッチのサイズが2倍になるので、計算コストがややかさむ可能性がある。
Data augmentation in validation
OnDATではtrainingとvalidationそれぞれでAugmentationを行う
モデル評価では、training Dataと validation Data を分ける必要があるが、時系列データではtraining Dataの未来のデータを使うため、validation Dataが不足する可能性がある(例えばユーザーごとに取得データの長さが違うなど)。そういったときにはvalidation DataにもOnDATを適用すれば性能評価が期待できる。
Experiments
Data
8つのdatasetを用いて実験を行った。M1、M3、M4は産業、人口統計、経済などの領域、Tourismは観光領域である。
今回は月次と四半期の時系列データを扱う。時間、日次レベルの時系列データではSTL自体の性能を低下させる恐れがあるかららしい。
入力サイズは2周期分に設定し、月次は24、四半期では8とした。予測量は月次の場合は18、四半期では8にしている。
Methods
Augmentation パターン
- Standard : Data Augmentationを行わない標準の学習
- DA : Data Augmentationを行うアプローチ
- SeasonalNaive : 観測データの同時期データをそのまま予測に用いる。ベンチマーク
DeepLearningの手法はNHITS*
*細かい学習設定は原文を参照
評価指標はSMAPE
Results
性能評価
8つ中5つのDatasetで最高のスコアを達成した。特にM1のような小規模データの方が、OnDATによる性能向上ができている(らしい)。
要素評価
OnDATの適用タイミングやアルゴリズムを変更した場合の性能評価を行った。
OnDAT(tr)はtraining、OnDAT(vl)はvalidationでの適用を示し、OnDAT(gratis)はMBBのデータ拡張をGRATISに変更したもの、OnDAT(fixed)はMBBではなく標準のbootstrapを用いた。MBB-baseのOnDATが最も性能が良い。
Validationでの効能評価
validationでOnDAT、DAを行った場合の評価。OnDATを適用した方が性能が向上している。
全体の性能評価ではM1はOnDATの方がよかった気がするので、validationはDAの方がよかったのではないかと思う。
訓練時間の短縮
OnDATを適用した方が、各々の手法よりも早く学習が完了する。表の数値は対OnDATの実行時間であり、マイナスが大きい方がOnDATが速いことを示す。
感想
そもそも時系列予測のAugmentationの手法を知らなかったので勉強になった。特にvalidation内でAugmentationを行うことは、時系列データの欠点を補う可能性があるのでぜひ試してみたい。
しかし、性能の伸びはあまり大きくないため、いわゆるタスク依存に陥ってしまうことはやむを得ない。また、実験結果では訓練時間の短縮を主張していたが、少量データの方が性能向上の幅は大きいことを鑑みると、訓練時間短縮の貢献を強く主張するのは難しそう。
Discussion