オンラインの時系列予測を処理する方法は?


9

私は以下の問題を扱ってきました。私は一種のリアルタイムシステムを持っており、タイムフレームごとに現在の値を読み取り、時系列(1、12、2、3、5、9、1など)を作成します。オンラインで(新しい値が読み込まれるたびに)次の値を予測する方法(統計および機械学習)を知りたいのですが。RのARIMAとWekaのSMOregを試してみましたが、良い予測が得られましたが、新しい値が来るたびに計算をやり直さなければならないので、それらは少し遅いです。

PSメソッドが信頼区間を持っている場合も素晴らしいです。

回答:


4

あなたのリアルタイムシステムでは、観測時間は不均一で、データは非定常ですか?シンプルで高速なものが必要な場合は、不均質なEMAタイプの演算子を使用することをお勧めします。

不均一な時系列の演算子

彼らは、EMA()を新しい観測ごとに更新しvalue

value+=α(newDatavalue),α=1exp(Δtτ)

A平滑/チューニングパラメータ。これは期待値を見積もる簡単な方法です。τ

また、更新により簡単なオンライン中央値の見積もりを作成できます

sg=sgn(newDatamed)med+=ϵ(sgmed)

実際には、小さくする(または、観測を増やして減衰させる)必要があります。理想的には、は、更新の偏り具合に依存する必要があります。つまり、実際に中央値に等しい場合、はで均一でなければなりません。次に、これを深さ平衡型バイナリツリータイプ構造に拡張して、分位点を等間隔で取得できます。ε MED SG { - 1 1 } 、D 2 、D + 1 - 1ϵϵmedsg{1,1}d2d+11

上記の組み合わせにより、データをオンラインで適切に配布できます。ツリーは正しく理解するのが難しいので、興味があればC ++で両方の実装を用意しています。私は実際に両方(金融リアルタイムティックデータ)を多く使用し、それらはうまく機能しました。


こんにちはMurat!あなたが投稿した論文へのハイパーリンクを作成し、方程式を中央に配置しました。今後の参照のために、これを行う方法を知りたい場合は、投稿履歴を参照してください。テキストボックスの上部にある便利なボタンもいくつかあります。答えを書いているときに表示され、多くのことを自動的に実行します(たとえば、画像、リンク、太字/斜体などの入力)。(+1、btw)
マクロ

3

まず、データを時間的に埋め込む必要があります。たとえば、最初の入力[1、12、2、3]と対応する出力[5]を受け取り、2番目の入力として[12、2、3、5]と対応する出力[9]を受け取ります。(これは遅延4で埋め込まれていますが、より適切な別の値を選択できます。)

これで有効な予測問題が発生しました。これらのデータにオンラインガウスプロセスを適用できます。これは、説明したとおりの機械学習手法であり、信頼区間を提供します。

モデルが非定常の場合は、非定常拡張のカーネル再帰的最小二乗トラッカーを試すことができます。ちなみに、この論文には定常および非定常の場合のMatlabコードが含まれています。

これらの方法はかなり高速です。それらの計算の複雑さは、メモリに格納するデータの数(通常、処理されるすべてのデータの小さな代表的な部分です)の点で2次です。より高速な方法については、たとえばカーネル最小二乗法をお勧めしますが、その精度は低くなります。


あなたが推奨した手順は、レベルシフトまたは時間傾向の変化が発生したときに報告しますか?時間の経過に伴うパラメータの変化または分散の変化を検出しますか?季節的な自己回帰記憶と季節的なダミーを区別しますか?
IrishStat 2012

@IrishStatあなたの質問は修辞的だと思います。モデルがモデルを更新するための単純な再帰を持つことができる場合、それはあなたが説明するすべての複雑さを持つことはできません。貧弱な迅速な回答よりも、正しい回答を得ることが重要な場合があります。そのため、私の回答では、モデルがデータによく適合した場合にのみ実行するように言いました!
Michael R.Chernick

1
@IrishStatこれらのメソッドは「ノンパラメトリック」です。つまり、データの特定のモデルを想定していません(データに「フィット」しているだけです)。トレンドの変化は報告されません。ただし、予測エラーを報告するので、傾向の変化を見つけたい場合は、予測エラーが十分に大きい場合を確認するだけで済みます。
スティーブン

私はオンラインのスパースガウスプロセスに精通していませんが、リンクされた記事を見ると、以前の分布にガウスプロセスを使用しており、「カルマン」に多数のパラメーターが含まれているため、「ノンパラメトリック」として特徴付けることは適切ではないと思います。 -filter-like "recursiona。一部のモデル構造は、定式化に暗黙的に含まれている必要があるようです。IrishStatのコメントはまだ当てはまると思います。
Michael R.Chernick

3

カルマンフィルターは再帰的なアルゴリズムです。新しい観測値を取得し、それを以前の予測と組み合わせます。それはあなたのデータに適切なモデルである場合にのみ使用するのが良いでしょう。予測間隔の更新がどれほど簡単かわかりません。


0

これを試したかどうかはわかりませんが、RではArima関数を使用すると、モデルを入力として指定できます。したがって、最初にarimaモデルを見つけた場合、それぞれの平滑化コンポーネントを使用してArima(1,2,1)とすると、モデルを再適合させないように、後の反復でモデルを修正できます。その場合にデータが静止していると、予測は十分に良くなり、はるかに速くなります。

お役に立てれば..

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.