時系列データの学習の概要
時系列データとは、株価や気温、トラフィック量などの時間の経過に応じて値が変化するデータのことを呼ぶ。この時系列データに対して機械学習を適用することで、大量のデータを学習し、未知のデータに対する予測を行うことで、ビジネスの意思決定やリスク管理などに役立てることができる。
時系列データには、トレンド(傾向)、季節性、ランダム要素などが含まれる。トレンドとは長期的な傾向を表し、季節性とは周期的なパターンであり、ランダム要素とは予測できないノイズとなる。これらの要素を考慮するために、時系列データの予測では様々な手法が用いられている。
それらの中で代表的な手法としては、“RやPythonを用いた一般的な時系列解析のための実装例“でも述べているARIMA、”Prophetを用いた時系列分析について“で述べているProphet、”LSTMの概要とアルゴリズム及び実装例について“で述べているLSTM、状態空間モデルなどが用いられる。これらの手法は機械学習に基づいた予測手法で、過去の時系列データを学習して未来の予測を行うものとなる。
また、時系列データには時刻が含まれるため、過去のデータを学習し未来を予測するためには、データをトレンド成分、季節成分、残差成分に分解するなど、時系列データを適切に加工する必要があり、そこでも様々な工夫が必要となる。
ここで時系列データ分析の基本的な手法の一つである自己相関分析について述べる。
自己相関分析とは、時系列データの過去の値と現在の値の相関を分析する手法となり、過去の値と現在の値の相関を調べることで、次の値を予測することを可能にするものとなる。
自己相関分析での指標は、自己相関係数とよばれる、時系列データのある時点での値と、過去のある時点での値との相関を計算したものとなる。自己相関係数は、-1から1までの値を取り、1に近いほど強い正の相関があることを示し、-1に近いほど強い負の相関があり、0に近い場合は相関がないことを示す。
自己相関係数は、時系列データのラグ(過去の時点から現在の時点までの期間を表し、ラグ1は一つ前の時点、ラグ2は二つ前の時点を指す)によって変化するため、自己相関係数は、ラグを変えながら計算することとなる。
自己相関係数を用いた時系列データの解析では、主に以下のような手法がある。
- 自己相関グラフ : ラグに対する自己相関係数をグラフ化することで、データの季節性や周期性などのパターンを視覚的に把握することができる。
- 自己回帰モデル(ARモデル) : 自己相関係数の情報を用いて、過去のデータから未来を予測するモデルとなる。自己相関係数が高い場合に有効な手法となる。
- 移動平均自己回帰モデル(ARMAモデル): 自己回帰モデルに加え、移動平均モデルを組み合わせたモデルとなる。自己相関係数と偏自己相関係数の情報を用いて、過去のデータから未来を予測することができる。
- 自己回帰移動平均モデル(ARIMAモデル): ARMAモデルに、差分を加えたモデルとなる。データの非定常性を考慮したモデルで、時系列データの解析によく使われる。
次に、自己相関的な考えをさらに発展させ汎化させたモデルである状態空間モデルについて述べる。
状態空間モデルは、時系列データの解析によく使われる統計モデルの一つであり、非常に汎用的な枠組みとなる。状態空間モデルでは、観測される時系列データが、何らかの確率過程によって生成されると考え、その過程を記述する数式モデルを構築する。また、その確率過程を支配する「状態変数」と呼ばれる非観測変数を仮定し、その状態変数の時間的変化を表す遷移モデルと、状態変数から観測される値を生成する観測モデルを考える。具体的には、状態空間モデルでは以下の要素を持つ。
- 状態方程式:状態変数の時間的変化を表すモデル
- 観測方程式:状態変数から観測される値を生成するモデル
- 初期状態分布:最初の状態変数の確率分布
- 誤差分布:状態方程式と観測方程式において、誤差項として仮定する確率分布
状態空間モデルを用いた時系列データ解析では、観測データに対して状態変数を推定することが目的となり、この推定には、カルマンフィルターやパーティクルフィルターなどのアルゴリズムが用いられる。これらのアルゴリズムを用いることによって、現在の時点における状態変数の推定値と、その推定値の精度を計算することが可能となる。
また、状態空間モデルを用いた時系列データ解析では、状態変数の推定結果を用いて、将来の値の予測を行うこともでき、状態変数の推定値を用いて観測方程式から将来の値を予測したり、異常値の検出や欠損値の補完などの応用にも用いられることもある。
時系列データ解析について
岩波データサイエンスシリーズ:「時系列解析−状態空間モデル・因果解析・ビジネス応用」より。
時系列とは、ある現象の時間的な変化を、連続的に(または一定間隔をおいて不連続に)観測して得られた値の系列(一連の値)のこと。例えば、統計学や信号処理で時間経過に従って計測されるデータ列であり、(通常、一定の)ある時間間隔で測定される。均一間隔では無い場合は点過程と呼ぶ。
以下に時系列図と点過程図のそれぞれの例を示す。
時系列データとして観測対象を記録するということは、観測対象が連続時間上で変化しているということを暗に仮定していることになる。実際に我々が時系列図を書く時には、観測の時点間(観測がなされていない時間)を直線という最も単純な関数でで補間し、観測対象が連続時間で変化しているという事実を反映させている。つまり時系列データの収集とは、「観測対象ないしその属性が連続時間上で変化すると仮定し、それらを事前に定めた時間間隔で記録する」という作業になる。
観測対象が連続時間で変化していると仮定した時、時系列分析の主な目的の一つは、観測対象のモデル化、つまり観測対象をうまく表現する連続時間を引数とした関数を、時系列データから読み取ることになる。しかしながらそのような関数を見つけ出すことは以下のような点から困難となる。
- 連続時間の関数の形が不明である。しかも、連続時間の関数は無限に考えられるので、すべての関数の当てはめを試すことは物理的に不可能となる。
- 観測対象が従う関数の形は、時間の経過と共に変化する可能性がある。つまり、推定対象の関数は期間を通じて一つであるという保証はない
- 関数の形が明示的に分かった(分析者が強制的に設定した)としても、観測にはノイズが混入するので関数のパラメータの正確な推定は容易にはできない
これらの課題に対応するため、実際の時系列データ分析では、観測対象が従うであろう関数のクラスを、観測者や分析者の知見、先行研究、予備的なデータの分析を通じて絞り込み、その中のなるべく単純かした時系列モデルをつかって観測対象を表現することを目指す。
時系列分析で最もよく用いられる単純化は、連続時間の関数を離散時間の関数に置き換えるやり方となる。これは下図の左のような連続データを右のような離散データに変換することを意味する。これは観測時間ごとにある現象が発生するという確率分布によりモデル化することができる。
ここで仮定する確率分布としては、対象となるデータの分布を見て選ぶことが基本だが、それが不明瞭な場合は、多くのモデルで用いられている正規分布から考え始めるのがベターとなる。
本ブログではこの時系列データ解析について以下の内容について述べている。
時系列データ解析の実装
時系列データとは、株価や気温、トラフィック量などの時間の経過に応じて値が変化するデータのことを呼ぶ。この時系列データに対して機械学習を適用することで、大量のデータを学習し、未知のデータに対する予測を行うことで、ビジネスの意思決定やリスク管理などに役立てることができる。ここではpythonとRを用いた時系列データの実装について述べている。
Prophetは、Facebookが開発した時系列予測ツールであり、時間の流れや周期性、祝日などの影響を考慮して、未来の時系列データを予測することができるものとなる。Prophetは、ビジネス、ファイナンス、気候、医療など様々な分野に活用することができるものであり、ここではPythonを用いた実装について述べている。
指数平滑法(Exponential Smoothing)は、時系列データの予測やデータの平滑化に使用される統計的手法の一つであり、特に、過去の観測値を基に未来の値を予測するために使用されるものとなる。指数平滑法は、シンプルながら効果的な方法であり、時間に対する重み付けを行い、過去のデータに対する影響を調整することができる手法となる。
- カルマンフィルタスムーザーの概要とアルゴリズム及び実装例について
カルマンフィルタスムーザー(Kalman Filter Smoother)は、カルマンフィルタリングの一種であり、時系列データの状態推定を改善するために使用される手法となる。この手法では通常、動的なシステムの状態をモデル化し、観測データと組み合わせて、より精密な状態推定を行っている。
時系列データとは、株価や気温、トラフィック量などの時間の経過に応じて値が変化するデータのことを呼ぶ。この時系列データに対して機械学習を適用することで、大量のデータを学習し、未知のデータに対する予測を行うことで、ビジネスの意思決定やリスク管理などに役立てることができる。今回はそれらのアプローチの中で状態空間モデルを中心に述べる。
- 隠れマルコフモデルと状態空間モデルの相違点について
“隠れマルコフモデルの概要と各種応用事例および実装例“で述べている隠れマルコフモデル(Hidden Markov Model, HMM)と”状態空間モデルの概要とRとPythonを用いた時系列データの解析の実装例“で述べている状態空間モデル(State Space Model, SSM)は、時間的な変化や系列データのモデリングに使用される統計モデルだが、異なるアプローチを持ったものとなる。以下に、それらの主な相違点について述べる。
- ダイナミック線形モデル(DLM)の概要とアルゴリズム及び実装例
ダイナミック線形モデル(Dynamic Linear Model, DLM)は、時間的な変動を考慮した統計的モデリングの一形態であり、このモデルは、時系列データや時間に依存するデータの解析に使用されるものとなる。ダイナミック線形モデルは、線形状態空間モデルとも呼ばれる。
サンプルベースMPC(Sample-Based Model Predictive Control)は、モデル予測制御(MPC)の一種で、システムの未来の挙動を予測し、最適な制御入力を計算する手法であり、従来のMPCに比べて、非線形システムや高次元システムにも適用しやすく、リアルタイム性を確保しやすい点が特徴の手法となる。
リアルタイム制約修正(Real-Time Constraint Modification)は、リアルタイムシステムにおける制約条件を動的に調整・修正する技術や手法を指し、リアルタイムシステムは、処理や応答が特定の時間内に行われることが要求されるシステムであり、典型的には組み込みシステムや制御システム、通信システムなどで使用されるものとなる。
モデル予測制御(Model Predictive Control, MPC)は、制御理論の一手法であり、制御対象のモデルを使用して将来の状態や出力を予測し、最適な制御入力を計算するためのオンライン最適化手法となる。MPCはさまざまな産業および制御アプリケーションで使用され、以下にMPCの概要につにいて述べる。
動的グラフのエンベディング(Dynamic Graph Embedding)は、動的なネットワークや時変グラフなどの時間的変化を持つグラフデータを解析するための手法となる。従来の静的グラフに対するエンベディングは、ノードの固定された表現を得ることに焦点を当てたものだが、動的グラフのエンベディングでは、グラフの時間的変化に対応した表現を得ることが目的となる。
時空間グラフ畳み込みネットワーク(STGCN: Spatio-Temporal Graph Convolutional Network)は、時系列データがノードとエッジで構成されるグラフ上にある時系列データを対象とした畳み込みであり、リカレントニューラルネットワーク(Recurrent Neural Network,RNN)の代わりに時間変化の予測に用いられるモデルとなる。これは、交通流や気象データなどのように、地理的な位置や時間的な変化が重要なデータに対して効果的なアプローチとなる。
RNN(Recurrent Neural Network)は、時系列データやシーケンスデータをモデル化するためのニューラルネットワークの一種であり、過去の情報を保持し、新しい情報と組み合わせることができるため、音声認識、自然言語処理、動画解析、時系列予測など、さまざまなタスクで広く使用されているアプローチとなる。
LSTM(Long Short-Term Memory)は、再帰型ニューラルネットワーク(RNN)の一種であり、主に時系列データや自然言語処理(NLP)のタスクにおいて非常に効果的な深層学習モデルとなる。LSTMは、過去の情報を保持し、長期的な依存関係をモデル化することができるので、短期的な情報だけでなく、長期的な情報を学習するのに適した手法となる。
GRU(Gated Recurrent Unit)は、”RNNの概要とアルゴリズム及び実装例について“でも述べている再帰型ニューラルネットワーク(RNN)の一種で、特に時系列データやシーケンスデータの処理に広く使用される深層学習モデルとなる。GRUは”LSTMの概要とアルゴリズム及び実装例について“で述べているLSTM(Long Short-Term Memory)と同様に長期的な依存関係をモデル化するために設計されているが、LSTMよりも計算コストが低いことが特徴となる。
Bidirectional Recurrent Neural Network(BRNN)は、再帰型ニューラルネットワーク(RNN)の一種で、過去と未来の情報を同時に考慮することができるモデルとなる。BRNNは、特にシーケンスデータを処理する際に有用で、自然言語処理や音声認識などのタスクで広く使用されている。
Deep RNN(Deep Recurrent Neural Network)は、再帰型ニューラルネットワーク(RNN)の一種で、複数のRNN層を積み重ねたモデルとなる。Deep RNNは、シーケンスデータの複雑な関係をモデル化し、より高度な特徴表現を抽出するのに役立ち、通常、Deep RNNは時間方向に多層で積み重ねられたRNNレイヤーから構成されている。
Stacked RNN(スタックされた再帰型ニューラルネットワーク)は、再帰型ニューラルネットワーク(RNN)の一種で、複数のRNN層を積み重ねて使用するアーキテクチャであり、より複雑なシーケンスデータのモデリングが可能になり、長期依存性を効果的にキャプチャできるようになる手法となる。
- リザーバーコンピューティングについて
リザーバーコンピューティング(Reservoir Computing、RC)は、リカレントニューラルネットワーク(RNN)の一種で、特に時系列データの処理において効果を発揮する機械学習手法となる。この手法は、ネットワークの一部(リザーバー)をランダムに接続された状態にしておくことで、複雑な動的パターンの学習を簡素化している。
Echo State Network(ESN)は、リザーバーコンピューティングの一種で、時系列データやシーケンスデータの予測、分析、パターン認識などに使用されるリカレントニューラルネットワーク(RNN)の一種となる。ESNは、非常に効率的で簡単に訓練でき、さまざまなタスクで良好な性能を発揮することがある。
Pointer-Generatorネットワークは、自然言語処理(NLP)のタスクで使用される深層学習モデルの一種であり、特に、抽象的な文章生成、要約、文書からの情報抽出などのタスクに適した手法となる。このネットワークは、文章を生成する際に、元の文書からのテキストの一部をそのままコピーすることができる点が特徴となる。
Temporal Fusion Transformer (TFT) は、複雑な時系列データを扱うために開発されたディープラーニングモデルで、リッチな時間的依存関係をキャプチャし、柔軟な不確実性の定量化を可能にするための強力なフレームワークを提供するものとなる。
- ダイナミックベイジアンネットワーク(DBN)の概要とアルゴリズム及び実装例について
ダイナミックベイジアンネットワーク(Dynamic Bayesian Network、DBN)は、ベイジアンネットワーク(Bayesian Network、BN)の一種であり、時間的な変化や系列データのモデリングに用いられる確率的グラフィカルモデルの一種となる。DBNは時系列データや動的なデータに対して強力なツールであり、様々な分野で応用されている。
Dynamic Graph Neural Networks(D-GNN)は、動的なグラフデータに対処するために設計されたグラフニューラルネットワーク(Graph Neural Network、GNN)の一種であり、ノードとエッジが時間に応じて変化するようなデータを扱うために設計されたものとなる。(GNNについては”グラフニューラルネットワークの概要と適用事例およびpythonによる実装例について“を参照のこと)このアプローチは、時系列データ、ソーシャルネットワークデータ、交通ネットワークデータ、生物学的ネットワークデータなど、さまざまな領域で用いられている。
テンソル分解法(Tensor Decomposition)は、高次元のテンソルデータを低ランクのテンソルに近似する手法であり、この手法は、データの次元削減や特徴抽出に使用され、機械学習やデータ解析のさまざまなアプリケーションで有用なアプローチとなる。ダイナミックモジュール検出にテンソル分解法を適用することは、時系列データや動的なデータモジュールの検出といったタスクに関連する。
ST-GCN(Spatio-Temporal Graph Convolutional Networks)は、動画データや時間的データを扱うために設計されたグラフ畳み込みネットワークの一種であり、グラフ構造を持つデータ(例: 隣接ノードとエッジで表現されるネットワークデータ)に対して、空間的な情報(グラフ内のノード間の関係)と時間的な情報(連続したフレームまたは時間ステップ)の両方を考慮して特徴抽出と分類を行うことができる手法となる。これは主に動画分類、動作認識、スポーツ解析などのタスクに用いられている。
DynamicTriadは、動的なグラフデータの時間的な変化をモデル化し、ノードの対応関係を予測するための手法であり、このアプローチは、動的なネットワークでの対応関係の予測やノードの時間的な変化の理解に応用されている。
時間と共に変化するグラフデータを解析する手法は、ソーシャルネットワーク分析、ウェブトラフィック分析、バイオインフォマティクス、金融ネットワークモデリング、交通システム解析など、さまざまなアプリケーションに適用されている。ここではこの技術の概要とアルゴリズム及び実装例について述べている。
スナップショット解析(Snapshot Analysis)は、データの異なる時間点でのスナップショット(瞬間のデータスナップショット)を使用して、時間的な変化を考慮に入れたデータ解析の手法となる。この手法は、時間に関する情報を持つデータセットを分析し、そのデータの時間的なパターン、トレンド、および変化を理解するのに役立ち、グラフデータ解析と組み合わせることで、ネットワークや関係性データの時間的な変化をより深く理解することができるようになる。ここでは、このアプローチの概要とアルゴリズム及び実装例について述べている。
ダイナミックコミュニティ分析(Dynamic Community Detection)は、時間に関連する情報を持つネットワーク(ダイナミックネットワーク)内で、コミュニティ(モジュールまたはクラスタ)の時間的な変化を追跡および解析するための手法となる。通常、ノードとエッジが時間に関連した情報を持つグラフデータ(ダイナミックグラフ)を対象としており、この手法は、さまざまな分野で応用され、例えばソーシャルネットワーク分析、バイオインフォマティクス、インターネットトラフィックモニタリング、金融ネットワーク分析などで利用されている。
ダイナミック中心性指標(Dynamic Centrality Metrics)は、時間的な変化を考慮に入れたグラフデータ解析の一種であり、通常の中心性指標(例: 次数中心性、媒介中心性、固有ベクトル中心性など)は、静的なネットワークに適しており、ネットワーク内のノードの重要性を単一のスナップショットで評価するものとなる。しかし、実際のネットワークは時間に関連する要素を持つことが多いため、ネットワークの時間的な変化を考慮することが重要となる。
ダイナミックモジュール検出は、時間的な変化を考慮に入れたグラフデータ解析の手法の一つであり、この手法は、ダイナミックネットワーク内でコミュニティ(モジュール)の変化を追跡し、異なる時間スナップショットでのコミュニティ構造を特定するものとなる。ここではダイナミックモジュール検出に関する詳細とその実装例についての情報を示す。
ダイナミックグラフ埋め込み(Dynamic Graph Embedding)は、時間的な変化を考慮に入れるグラフデータ解析のための強力な手法となる。このアプローチでは、グラフデータが時間に沿って変化する場合、ノードやエッジの表現を時間軸上で持つことを目的としている。
ネットワークアライメントは、異なるネットワークやグラフ間で類似性を見つけ、それらをマッピングし合わせる技術であり、時間的な変化を考慮に入れるグラフデータ解析にネットワークアライメントを適用することで、異なる時間スナップショットのグラフを対応付け、その変化を理解することが可能とするものとなる。
時間予測モデルを用いた時間的な変化を考慮に入れるグラフデータ解析は、グラフデータ内の時間的なパターン、トレンド、予測を理解するために使用される。ここではこのアプローチについての詳細について述べる。
TIME-SI(Time-aware Structural Identity)は、時間に関連する情報を考慮に入れてネットワーク内のノード間の構造的な対応を特定するためのアルゴリズムまたは手法の一つであり、TIME-SIは、生物学的ネットワークやソーシャルネットワークなど、さまざまなネットワークデータで使用されているものとなる。
タイムライン上でグラフスナップショットを表示したり、アニメーション化することは、時間的な変化を視覚化し、グラフデータの動的な特性を理解するのに役立ち、グラフデータを解析する上で重要な手法となる。ここではこれらに用いられるライブラリ及び実装例について述べている。
Pythonでネットワークの動的な変化を視覚的に表現するための手法であるNetworkXとMatplotlibを組み合わせたグラフのアニメーションの作成について述べる。
高次元のデータを次元削減技術を使用して低次元にプロットし、可視化を容易にする手法は、データの理解、クラスタリング、異常検出、特徴量選択など多くのデータ分析タスクで有用となる。ここでは主要な次元削減技術とその手法について述べる。
Gephiは、オープンソースのグラフ可視化ソフトウェアで、ネットワーク分析や複雑なデータセットの可視化に特に適したツールとなる。ここではGephiを使用してデータを可視化する基本的なステップと機能について述べる。
Cytoscape.jsは、JavaScriptで書かれたグラフ理論ライブラリであり、ネットワークやグラフデータの可視化を行うために広く使用されているものとなる。Cytoscape.jsを使用することで、ウェブアプリケーションやデスクトップアプリケーションに対してグラフやネットワークデータの可視化を追加することが可能となる。ここではCytoscape.jsを用いたデータの可視化に関する基本的なステップとコードの例を示す。
Sigma.jsは、Webベースのグラフ可視化ライブラリで、対話的なネットワーク図を作成するのに役立つツールとなる。ここではSigma.jsを使用してグラフデータを可視化するための基本的な手順と機能について述べる。
自動機械学習(AutoML)は、機械学習モデルの設計、トレーニング、最適化のプロセスを自動化するための手法やツールを指す。AutoMLは、機械学習の専門知識が限られているユーザーや、効率的なモデルの開発を求めるユーザーにとって特に役立つものであり、以下の主な目標を持っている。ここでは、このAutoMLの概要と様々な実装例について述べている。
ダイナミックファクターモデル(Dynamic Factor Model, DFM)は、多変量時系列データの解析に用いられる統計モデルの一つであり、複数の時系列変数を共通の要因(ファクター)と個別の要因(スペシフィック要因)に分解することにより、データの変動を説明するものとなる。ここではこのDFMに対して、様々なアルゴリズムと適用事例およびRとPythonによる実装について述べている。
類似性(similarity)は、二つ以上のオブジェクトや事物が共通の特徴や性質を持ち、互いに似ていると見なされる程度を表す概念であり、比較や関連性の観点からオブジェクトを評価したり、分類やグループ化を行ったりする際に重要な役割を果たしている。ここでは、様々なケースでの類似度の概念と一般的な計算方法について述べている。
ベイズ構造時系列モデル(Bayesian Structural Time Series Model; BSTS)は、時間とともに変化する現象をモデル化する統計モデルの一種であり、予測や因果推論を目的として利用されるものとなる。ここではこのBSTSに関しての概要と様々な応用事例及び実装例について述べている
ベクトル自己回帰モデル(Vector Autoregression Model, VARモデル)は、統計学や経済学などの分野で使用される時間系列データのモデリング手法の一つです。VARモデルは、複数の変数が相互に影響し合う場合に適用されるモデルとなる。一般的な自己回帰モデル(Autoregression Model)は、ある変数の値をその過去の値の線形結合として表現するモデルで、VARモデルはこのアイディアを複数の変数に拡張したものとなり、複数の変数の過去の値を使って現在の値を予測するモデルとなる。
オンライン学習(Online Learning)は、データが逐次的に到着する状況下で、モデルを逐次的に更新して学習する手法であり、通常の機械学習で行われるバッチ学習とは異なり、新しいデータが到着するたびにモデルが更新されるアルゴリズムであることが特徴となる。ここでは、このオンラン学習に関して様々なアルゴリズムと適用事例およびpythonによる実装例について述べている。
LightGBMは、Microsoftが開発したGradient Boosting Machine(GBM)のフレームワークであり、大規模なデータセットに対して高速かつ高精度なモデルを構築できるように設計されている機械学習のツールとなる。ここではpyhton、R、Clojureでの実装について述べる。
ロバスト主成分分析(Robust Principal Component Analysis、RPCA)は、データの中から基底を見つけ出すための手法であり、外れ値やノイズが含まれているようなデータに対しても頑健(ロバスト)に動作することを特徴としている。ここでは、このRPCAに関して様々な適用事例とpyhtonによる具体的な実装について述べている。
ここではpython Kerasの概要と基本的な深層学習タスク(MINISTを用いた手書き文字認織、Autoencoder、CNN、RNN、LSTM)への具体的な適用例について述べている。
Elasticsearchは、検索、分析、およびデータ可視化のためのオープンソースの分散型検索エンジンであり、機械学習(Machine Learning, ML)技術も統合されており、データ駆動型のインサイトや予測を実現するために活用することができるプラットフォームとなっている。ここではこのElasticsearchでの機械学習技術の様々な活用と具体的な実装について述べている。
今回は時系列データについて説明する。時系列とは、ある量の定期的な観測値を、その測定時間に従って並べたデータ系列のこととなる。時系列の将来の値を予測するためには、将来の値がある程度、過去の値に基づいていることが必要となる。今回はClojureを用いたAR、MA、ARMAモデルの実装について述べる。
今回は状態空間モデルの応用の一つであるカルマンフィルターのClojureでの実装について述べる。カルマンフィルターは離散的な誤差のある観測から、時々刻々と時間変化する量(例えばある物体の位置と速度)を推定するために用いられる無限インパルス応答フィルターであり、その使いやすさからレーダーやコンピュータービジョンなど幅広い工学分野で利用されている技術となる。具体的な利用例としては、機器内蔵の加速度計やGPSからの誤差のある情報を統合して、時々刻々変化する自動車の位置を推定したり、人工衛星やロケットの制御などにも用いられている。
カルマンフィルターは以前述べた隠れマルコフモデル(hidden markov model)と類似した隠れ状態とそれらから生成される観測データを持つ状態空間モデルで、状態は連続であり、状態変数の変化はガウス分布に従う雑音を用いて統計的に記述されるものとなる。
今回は、ノンパラメトリックベイズモデルの応用として時系列データの構造変化推定について述べる。時系列データを解析する際の一つの問題設定として、データ構造変化推定が考えられる。データの性質の変化を分析する問題は変化点検出として幅広く研究されている重要なテーマとなる。ここでは、ディリクレ過程等の統計モデルを用いた方法について述べる。
基本的なアイデアとしては各データがある確率を持って複数のモデルから生成されていると仮定し、時系列的な生成過程の変化を推定することで、データの構造的な変化を推定する。
バンディット問題には線型バンディットのほかにも様々な拡張や一般化がある。ニュース推薦などの設定では、クリックの有無といったバンディット問題の報酬に対応する量の確率分布が時刻とともに変化する場合がある。このような設定はいくつか定式化が考えられ、その定式化に応じてさまざまな方策が考えられる。ここではそれらのうち代表的なものについて述べる。
- 顧客動線研究入門 HMM,k-medoid,フラクタル次元,カーネル密度推定法
- GRUによる時系列での予測
- 部分空間法による変化検知 -時系列データのための特異スペクトル変換法
- Stanとdlmによる事前確率モデル(外部リンク)
- Kerasを用いた複数時系列データを1つの深層学習モデルで学習させる方法(外部リンク)
Kerasで複数の時系列データを深層学習モデルで学習させる手法には2つあります。(1)複数入力型の深層学習モデル、(2)個別入力型の深層学習モデルの組み合わせ。1の手法の利点はモデルがシンプルなので学習と予測が2の手法に比べ高速になります。2の手法の利点は時系列ごとにカスタマイズ可能なので1よりも精度を高めることが容易になります。
「Prophet」はFacebookを運営するメタが開発した時系列分析のアルゴリズムである。同社が2017年にProphetのソフトウエア(Python用とR用ライブラリーがある)をオープンソースソフトウエア(OSS)として公開して以来、時系列予測の分野で急速に広まった。今では「デイリーデータ(1日単位で記録されるデータ)の時系列分析には基本的にProphetを使う」と言っていいほど普及している。
時系列データ解析の理論
- 時系列データの解析(1) イントロダクション
- 時系列データの解析(2) 統計的分析の基礎
- 時系列データの解析(3) 時間依存データの分析とARモデル
- 時系列データの解析(4) ARCHモデルとGARCHモデル
- 時間遷移のスパース性
時系列データ解析への状態空間モデルの適用
状態空間モデルは多くの時系列モデルを統一的に取り扱うためのモデルで、時系列の予測、保管、成分分析やパラメータ推定など、時系列に関連した多くの問題を状態推定の問題として統一的に取り扱うことができる枠組みとなる。ここでは、状態空間モデルとは何かについて述べる。
今回述べる具体的な状態空間モデルとしては線形・ガウス型状態空間モデル、ARモデル、自己回帰・移動平均(ARMA)モデル、成分分解モデル、時変係数モデルとなる。
時系列の観測値Yj={y1,…,yn}と状態空間モデルが与えられた時、状態snを推定する問題は、状態推定とよばれる。観測値の最終時点nと推定する状態の時刻jの大小関係により、平滑化、フィルタ、予測の3つの場合に分けられる。
状態空間モデルに関して、このような状態推定の問題を考えるのは、時系列の予測、補間、パラメータ推定、成分分解などの現実の問題開裂に必要な問題のほとんどがこの状態推定を利用することによって統一的に解決でるからである。リアルタイム処理が要求されるオンライン制御や逐次予測などは別にして、一般に情報抽出や推定においては、平滑化は注目する時点の前後の情報を用いるので、予測やフィルタよりも精度の良い推定を行うことができる。
線形・ガウス型の状態空間モデルには、状態の条件付き分布p(xn|Yn)は正規分布となり、カルマンフィルタにより効率的に計算することができる。一方、モデルが非線形あるいはノイズの分布が非ガウス型の場合には、状態の予測分布などは非ガウス型の分布となるので、これを何らかの形で近似することが必要になる。
それらの手法としては(1)解析的近似、(2)数値的近似、(3)粒子的近似等の手法がある今回は主に粒子的近似(パーティクルフィルター)を用いたアプローチについて述べる。
Rで状態空間モデルを扱うパッケージとしてよく使われるものがdlmとKFASとなる。両者とも、カルマンフィルタによるフィルタリング・平滑化・予測が可能となるが異なる点もある。ここでは、dlmパッケージを使った状態空間モデルによる解析について述べる。dlmは、Giovanni Perris氏が開発しているパッケージとなる。状態空間モデルのうち、線形・正規分布の動的線形モデル(dynamic linaer model)を扱う。
前回のdlmで解析したデータは明らかに季節変動があるので、季節調整分を加えたモデルとしてみる。dlmで季節調整成分を扱うには、dlmModSeas関数またはdlmModTrig関数を使用する。前者はダミー変数により季節調整成分を表現し、後者は三角関数を利用する。ここではdlmModSeas関数を使用した。
KFASは、jouni Heleke氏が開発しているパッケージとなる。dlmと異なる点として、Rtという係数行列がシステムノイズにかかっているところで、これは、どの状態にシステムノイズを加えるのかを選択するためのものとなる。
KFASでも、前述と同様の季節調整モデルを解析する。KFASではSSModel関数でモデルの定義を行う。KFASでも、dlmと同様に、関数を組み合わせてモデルを構築していく。下のコードでは、多項成分を扱う関数のSSMtrendと、季節調整成分を扱う関数のSSMseasonalとを組み合わせてモデル化している。SSMtrendは、dlmのdlmModPolyに相当する関数で、degree引数に1を与えて、ローカルレベルモデルとしている。
「粒子フィルタ」をR言語でパッケージを使わずに作る。フィルタリングだけなら、初期化やパラメータ設定の部分を除くとほぼ3行で書ける。基本的にはデータ(観測値)に対して、時刻tでの観測に近い粒子ほど重みが大きくして、リサンプリングのステップで選ばれやすくなり、その結果データに近い経路が得られる。このとき、各時点の粒子の分布が、モデルから求めた事後分布(より正確にはフィルタリング分布)を表現しているということになる。
マーケティングの分野では、長い間「動的な構造理解」をなおざりにしてきていた。その理由の一つは、動的な解析に耐えうるデータが存在していなかったことである。しかし、その問題よりも大きな問題は「動的」という考え方に対するある種の認織不足のようなものを指摘しなければならない。多くのマーケティング研究者は「静的な消費者像」を前提にした解析を行えば十分であると考えていた。
消費者の態度や行動が動的に変化しないという考え方に妥当性はなく、動的だと考えモデル化とし知見を獲得しなければ、より深い需要サイド理解につながらない。最近になってその状況に変化が生じ、時間を明示的に意識したマーケティング現象解明の重要性が理解されてきた。ビッグデータ型の消費者行動データ(人x商品・サービスx時点)の蓄積が進み、「時点」を能動的に意識した動的な解析がなされるようになってきた。
ある時系列から別の時系列に対して因果関係があるかという問いは、少なくとも2つの時系列データが関心事であることを前提としている。時系列に基づく因果推論は、本質的に多変量時系列の問題であり、モデルとしては多変量自己回帰モデル(Vector AutoRegression model, VARモデル)が用いらられることが多い。
ここでは、内閣支持率と株価の因果関係を例に、VARモデルに基づく因果関係の分析の手順を、フリーソフトウェアRを用いて述べる。データにはしばしば欠損が伴うが、今回取り上げる内閣支持率も例外ではない。ここではRのtimsacパッケージに含まれる関数decompを使った欠陥値補間を取り上げる。またVARモデルによる因果分析では時系列の定常性を仮定するので、定常・非定常のチェックや、定常化のための前処理が必要となる。そのための手順とそこで用いられる単位根検定(unit root test)の使い方についても述べる。制御なし/制御付きVARモデルの推定、ラグ選択、因果検定、インパルス応答関数の算出などには、Rのパッケージvarsを利用する。
ここでは、時系列の因果性を分析する枠組みとして、多変量自己回帰モデル(VARモデル)を導入する。RパッケージでVARモデルを扱うことができるものがいくつか存在するが、ドキュメントも充実していてよく使われるものはBernhard Pfaffによるパッケージvarsとなる。時系列ytを予測するのに、他の時系列xtの過去の値が役に立つとき、時系列xtからytに「グレンジャーの意味で因果性がある」という。
隠れマルコフモデル(HMM)と状態空間モデルの違いは、隠れマルコフモデルでは「状態」を表す変数が有限個離散の値を取るのに対して、状態空間モデルでは連続血(実数成分のベクトル値)を取ることにある。
隠れマルコフモデルのの前進アルゴリズム(forward algorithm)は状態空間モデルの逐次フィルタ(一期先予測とフィルタリング)に、前進後進アルゴリズム(forward-backward algorithm)は平滑化の公式にそれぞれ対応する。ただし、後者では、よく使われる公式に見掛け上の違いがあるので注意が必要となる。
宇宙の年齢は138億歳だと聞くと「宇宙や天体の時間スケールというものはとてつもなく長いものだ」と感じる。だから、昨日の夕方、西の空に沈んだ太陽が、今日の朝には100万倍明るくなって登ってきた、などということが起こることは誰も予想しない。しかし、実際の宇宙では、太陽のような普通の星は別として、そのような人間の時間スケールで変化してしまう天体観測は頻繁に目撃される。
「アンドロメダ座V455」の爆発が初めて報告されたのは2007年9月4日となる。この星は以前から爆発の可能性が指摘されていた天体となる。地球からの距離が近いため爆発の初期にしか観測されない周期約80分の振動現象を観測するために広島大学の1.5m望遠鏡「かなた」をこの天体に向けた。果たして明るさの振動は捉えられた。ただ得られたデータは天体が明るいときに温度が低くなることを示すもので、天体の変動としては珍しい。しかし、この現象に限れば予想通りの結果であった。
ここではこれらで得られたデータから降着円盤の形をトモグラフィー的に再構築した結果について述べる。
コメント
[…] 機械学習技術サマリー 確率的生成モデルサマリー 時系列データ解析技術サマリー ストリームデータ制御技術サマリー 人工知能技術サマリー デジタルトランスフォーメーション技術サマリー […]
[…] 機械学習技術サマリー 確率生成モデルサマリー マルコフ連鎖モンテカルロ法サマリー 時系列データ解析サマリー […]
[…] 機械学習技術サマリー 確率的生成モデルサマリー 時系列データ解析技術サマリー ストリームデータ制御技術サマリー 人工知能技術サマリー IOT&センサー技術サマリー デジタルトランスフォーメーション技術サマリー […]
[…] 機械学習技術サマリー 確率的生成モデルサマリー 時系列データ解析技術サマリー ストリームデータ制御技術サマリー 人工知能技術サマリー IOT&センサー技術サマリー デジタルトランスフォーメーション技術サマリー […]
[…] 機械学習技術サマリー 確率的生成モデルサマリー 時系列データ解析技術サマリー ストリームデータ制御技術サマリー 人工知能技術サマリー IOT&センサー技術サマリー セマンティックウェブ技術サマリー デジタルトランスフォーメーション技術サマリー […]
[…] 時系列データ学習サマリー […]
[…] 人工知能技術サマリー デジダルトランスフォーメーションサマリー 深層学習技術サマリー 機械学習技術サマリー 自然言語処理サマリー 時系列データ学習サマリー 画像情報処理サマリー […]
[…] 人工知能技術サマリー デジダルトランスフォーメーションサマリー 深層学習技術サマリー 機械学習技術サマリー 自然言語処理サマリー 時系列データ学習サマリー 画像情報処理サマリー […]
[…] 人工知能技術サマリー デジダルトランスフォーメーションサマリー 深層学習技術サマリー 機械学習技術サマリー 自然言語処理サマリー 時系列データ学習サマリー 画像情報処理サマリー […]
[…] 人工知能技術サマリー デジダルトランスフォーメーションサマリー 深層学習技術サマリー 機械学習技術サマリー 自然言語処理サマリー 時系列データ学習サマリー 画像情報処理サマリー […]
[…] 人工知能技術サマリー デジダルトランスフォーメーションサマリー 深層学習技術サマリー 機械学習技術サマリー 自然言語処理サマリー 時系列データ学習サマリー […]
[…] 機械学習技術 確率的生成モデル 時系列データ解析技術 ストリームデータ制御技術 人工知能技術 IOT&センサー技術 デジタルトランスフォーメーション技術 […]
[…] 人工知能技術 デジダルトランスフォーメーション 深層学習技術 機械学習技術 自然言語処理 時系列データ学習 […]
[…] 機械学習技術 確率的生成モデル サポートベクトルマシン スパースモデリング 人工知能技術 異常検知・変化検知技術 関係データ学習 時系列データ解析 デジタルトランスフォーメーション技術 […]
[…] 機械学習技術 確率的生成モデル サポートベクトルマシン スパースモデリング 人工知能技術 異常検知・変化検知技術 関係データ学習 時系列データ解析 シミュレーションと機械学習 デジタルトランスフォーメーション技術 […]
[…] 時系列データ解析 Rと機械学習 […]
[…] 機械学習技術 確率的生成モデル サポートベクトルマシン スパースモデリング 人工知能技術 異常検知・変化検知技術 関係データ学習 時系列データ解析 シミュレーションと機械学習 デジタルトランスフォーメーション技術 […]
[…] 機械学習技術 確率的生成モデル サポートベクトルマシン スパースモデリング 人工知能技術 異常検知・変化検知技術 関係データ学習 時系列データ解析 デジタルトランスフォーメーション技術 […]
[…] 機械学習技術 確率的生成モデル サポートベクトルマシン スパースモデリング 人工知能技術 異常検知・変化検知技術 関係データ学習 時系列データ解析 デジタルトランスフォーメーション技術 […]
[…] 異常検知と変化検知技術 時系列データ解析 […]
[…] Twitter Facebook はてブ Pocket LINE コピー 2023.06.26 機械学習技術 時系列データ解析技術 ストリームデータ制御技術 人工知能技術 IOT&センサー技術 […]
[…] デジタルトランスフォーメーション技術 確率的生成モデル 時系列データ解析 サポートベクトルマシン スパースモデリング 異常検知・変化検知技術 […]
[…] Twitter Facebook はてブ Pocket LINE コピー 2023.09.07 機械学習技術 時系列データ解析技術 ストリームデータ制御技術 人工知能技術 IOT&センサー技術 […]
[…] ;時系列データ解析“を参照のこと。 […]
[…] 画像処理技術 強化学習技術 確率的生成モデル 深層学習技術 Python 時系列データ学習 […]
[…] 時系列データ解析に関しては”時系列データ解析“に詳細を述べている。そちらも参照のこと。 […]
[…] 関係データ学習 推薦技術 異常検知・変化検知技術 時系列データ解析 python […]
[…] 関係データ学習 推薦技術 異常検知・変化検知技術 時系列データ解析 python […]
[…] 関係データ学習 推薦技術 異常検知・変化検知技術 時系列データ解析 python […]
[…] 関係データ学習 推薦技術 異常検知・変化検知技術 時系列データ解析 python […]
[…] 関係データ学習 推薦技術 異常検知・変化検知技術 時系列データ解析 python […]
[…] 関係データ学習 推薦技術 異常検知・変化検知技術 時系列データ解析 python […]
[…] 関係データ学習 推薦技術 異常検知・変化検知技術 時系列データ解析 python […]
[…] 関係データ学習 推薦技術 異常検知・変化検知技術 時系列データ解析 python […]
[…] 時系列データ分析に関しては”時系列データ解析“に述べている。そちらも参照のこと。 […]
[…] 関係データ学習 推薦技術 異常検知・変化検知技術 時系列データ解析 python […]
[…] 時系列データ分析の詳細に関しては、”時系列データ解析“に述べており、ベイズ推定に関しては”確率的生成モデルについて“、”ベイズ推論とグラフィカルモデルに […]
[…] 関係データ学習 推薦技術 異常検知・変化検知技術 時系列データ解析 python […]
[…] 関係データ学習 推薦技術 異常検知・変化検知技術 時系列データ解析 python […]
[…] 時系列データ解析に関しては”時系列データ解析“に詳細を述べている。そちらも参照のこと。 […]
[…] 時系列データ解析 | Deus Ex Machina より: 2022年5月9日 10:55 AM […]
[…] 時系列データ解析 | Deus Ex Machina より: 2022年4月28日 2:11 PM […]
[…] 時系列データ解析 | Deus Ex Machina より: 2022年5月21日 4:29 AM […]
[…] 時系列データ解析 | Deus Ex Machina より: 2022年6月30日 4:09 AM […]
[…] 時系列データ解析 | Deus Ex Machina より: 2022年6月22日 4:12 AM […]
[…] 時系列データ解析 | Deus Ex Machina より: 2022年6月16日 3:46 AM […]
[…] 時系列データ解析 | Deus Ex Machina より: 2022年5月28日 2:18 PM […]
[…] 時系列データ解析 | Deus Ex Machina より: 2022年5月17日 1:32 PM […]
[…] 画像処理技術 強化学習技術 確率的生成モデル 深層学習技術 Python 時系列データ学習 […]
[…] 関係データ学習 推薦技術 異常検知・変化検知技術 時系列データ解析 python […]
[…] デジタルトランスフォーメーション技術 画像処理技術 音声認識技術 時系列データ解析 強化学習技術 確率的生成モデル 深層学習技術 Python […]
[…] 関係データ学習 推薦技術 異常検知・変化検知技術 時系列データ解析 python グラフニューラルネットワーク […]
[…] 関係データ学習 推薦技術 異常検知・変化検知技術 時系列データ解析 python グラフニューラルネットワーク […]
[…] 関係データ学習 推薦技術 異常検知・変化検知技術 時系列データ解析 python グラフニューラルネットワーク […]
[…] デジタルトランスフォーメーション技術 確率的生成モデル 時系列データ解析 サポートベクトルマシン スパースモデリング 異常検知・変化検知技術 […]
[…] 関係データ学習 推薦技術 異常検知・変化検知技術 時系列データ解析 python […]
[…] 関係データ学習 推薦技術 異常検知・変化検知技術 時系列データ解析 python […]
[…] 数学 アルゴリズムとデータ構造 画像認識 自然言語処理 推薦技術 時系列データ解析 Python R Clojure […]
[…] 関係データ学習 推薦技術 異常検知・変化検知技術 時系列データ解析 python […]
[…] 関係データ学習 推薦技術 異常検知・変化検知技術 時系列データ解析 python […]
[…] Twitter Facebook はてブ Pocket LINE コピー 2024.08.28 機械学習技術 時系列データ解析技術 ストリームデータ制御技術 人工知能技術 IOT&センサー技術 […]
[…] 関係データ学習 推薦技術 異常検知・変化検知技術 時系列データ解析 python […]
[…] 関係データ学習 推薦技術 異常検知・変化検知技術 時系列データ解析 python グラフニューラルネットワーク […]
[…] 関係データ学習 推薦技術 異常検知・変化検知技術 時系列データ解析 python […]
[…] 関係データ学習 推薦技術 異常検知・変化検知技術 時系列データ解析 python […]
[…] 関係データ学習 推薦技術 異常検知・変化検知技術 時系列データ解析 python […]
[…] 関係データ学習 推薦技術 異常検知・変化検知技術 時系列データ解析 python […]
[…] マルコフ連鎖モンテカルロ法 python R言語 異常検知・変化検知技術 時系列データ解析 […]