Rolling Window Regression(ローリングウィンドウ回帰)。 a Simple Approach for Time Series Next value Predictions

Srinath Perera
Srinath Perera

Follow
Jun 3, 2016 – 7 min read

時系列が与えられたとき、次の値を予測することは、長い間多くのプログラマーを魅了してきた問題です。 明らかに、この注目の主な理由は株式市場にあり、それを解読できれば無限の富を約束された。 しかし、一部の人を除いて(ウォール街を解明した数学者への貴重なインタビューを参照)、そのような富は手に入らないことが証明されています。

IoT (Internet of Things) のおかげで、時系列解析は再び脚光を浴びる態勢が整っています。 IoT では、いたるところにユビキタス センサーを設置し、データを収集し、そのデータに基づいて行動することができます。

  1. 電力負荷の予測
  2. 小売店の需要予測
  3. サービス(例:サービス業)
  4. 時系列予測の使用例としては、次のようなものがあります。 airline check-in counter, government offices) client prediction

  5. Revenue forecast
  6. ICU care vital monitoring
  7. Yield and crop prediction

では、時系列予測に利用できる手法を探ります。

最初の質問は、「回帰ではないか」ということです。 近いのですが、回帰とは違います。 時系列では、各値はこの値の直前の値に影響されます。 例えば、ある交差点で4時55分に交通量が多ければ、4時56分にも交通量がある可能性があります。 これを自己相関といいます。 回帰を行う場合、x(t)だけを考えますが、自己相関によりx(t-1)、x(t-2)、・・・も結果に影響を与えます。 そこで、時系列予測は、自己相関も考慮した回帰と考えることができます。

ここでは、1世帯から1分間隔で4年間収集したデータ「個人世帯電力消費データセット」を考えてみましょう。 3つのフィールドだけを考え、データセットは以下のようになる。

最初の質問は、どうやって成功を測定するかということだ。 これは損失関数によって行われ、損失関数を最小化しようとします。

  1. MAE ( 平均絶対誤差 ) – ここでは、誤差の大小にかかわらず、すべての誤差を平等に扱う
  2. RMSE ( ルート平均二乗誤差 ) – これは二乗項によって大きな誤差を罰するものである。 例えば、誤差と 、両者のMSEは0.5となり、RMSEは0.5となる。 0.45.
  3. MAPE ( Mean Absolute Percentage Error) – #1と#2はターゲット変数の値域に依存するため、データセット間で比較することはできません。 これに対し、MAPEはパーセンテージであるため、相対的である。 分類問題における精度のようなもので、99%の精度がかなり良いことは誰もが知っています。
  4. RMSEP ( Root Mean Square Percentage Error) – これは#2 と#3 の間のハイブリッドです。
  5. Almost correct Predictions Error rate (AC_errorRate) – 予測値が真値から %p% 以内の割合

次の値を予測しようとする場合、いくつかの選択肢があります。 ARIMA の背後にある核となる考え方は、時系列をトレンド成分、季節性成分などの異なる成分に分割し、それぞれの成分について慎重にモデルを推定することです。 概要についてはUsing R for Time Series Analysisを参照してください。

しかしながら、ARIMAには残念な問題があります。 それは、モデルのパラメータを較正するために、専門家(優秀な統計学士または大学院生)を必要とすることです。

しかし、Rにはauto.arimaという関数があり、これはモデルのパラメータを推定してくれます。

library("forecast")
....
x_train <- train data set
X-test <- test data set
..
powerTs <- ts(x_train, frequency=525600, start=c(2006,503604))
arimaModel <- auto.arima(powerTs)
powerforecast <- forecast.Arima(arimaModel, h=length(x_test))
accuracy(powerforecast)

ARIMAのやり方については、上記のリンクに詳しい説明があります。 私たちの焦点は中規模のデータセットなので、私はデータセットから 200k しか使いませんでした。 MAPEは19.5でした。

時間的特徴

2番目のアプローチは、自己相関情報が失われないように、時間的側面をとらえる特徴のリストを作成することです。 例えば、株式市場のテクニカル分析では、移動平均を用いて構築された特徴を使用します。 単純なケースでは、アナリストは7日と21日の移動平均を追跡し、それらの値の間のクロスオーバーポイントに基づいて意思決定を行います。

Following are some feature ideas

  1. collection of moving averages/ medians(e….7日、14日、30日、90日など)
  2. あるイベントからの時間
  3. 二つのイベント間の時間
  4. エントロピー、Zスコアなどの数学的な指標を集める。
  5. X(t) を power(X(t),n) や cos((X(t)/k)) などの関数に上げる

一般的なトリックは、特徴の相対的重要度を提供できる Random Forest や Gradient Boosting といった技術でこれらの特徴を適用することです。 そのデータを使用して、良い特徴を維持し、効果のない特徴を削除することができます。

このトピックにあまり時間をかけるつもりはありません。 しかし、いくつかの努力によって、この方法は非常に良い結果をもたらすことが分かっています。 たとえば、ほとんどのコンペティションはこの方法で優勝しています(例:http://blog.kaggle.com/2016/02/03/rossmann-store-sales-winners-interview-2nd-place-nima-shahbazi />)

しかしながら、欠点は、機能を作ることはブラックアートであるということです。

Rolling Windows-based Regression

さて、いよいよ興味深い部分に入ってきました。 時系列の次の値である X(t+1) を予測するために、X(t) だけでなく X(t-1) や X(t-2) などもモデルにフィードするというものです。 同じような考え方は、ローリング・アナリシス・オブ・タイムシリーズでも述べられていますが、違う問題を解決するために使われています

例を見てみましょう。 X(t)が与えられたらx(t+1)を予測する必要があるとします。

データセットが3のローリングウィンドウで変換されると次のようになる。

次に、線形回帰やRandom Forest回帰などの有名な回帰アルゴリズムで変換後のデータセットを使用します。 期待することは、回帰アルゴリズムがX(t-2)からX(t)への自己相関係数を把握することです。

例えば、上記のデータセットで、14データポイントのローリングウィンドウを使って変換されたデータセットに線形回帰を適用すると、次の結果が得られます。 ここでAC_errorRateは、予測が実際の値の10%以内であれば正しいと見なします。

LR AC_errorRate=44.0 RMSEP=29.4632 MAPE=13.3814 RMSE=0.261307

これは、自動ARIMAの正しい方法(MAPE 0.19 vs ローリングウィンドウで0.13)よりも優れているのでかなり興味深いものです。

線形回帰はまだかなり良いですが、エラー率を10%以内に抑えるのが弱いです。 深層学習はその点では優れていますが、本格的なチューニングが必要でした。

私は、ドロップアウトまたは正則化ゼロ、活性化関数「relu」、および最適化器 Adam(lr=0.001) で 500 エポックを実行した、各レイヤーのサイズが 20 単位の隠れ層 2 層のニューラル ネットワークから、最良の結果を得ました。 ネットワークはKerasで実装しています。 チューニングしていると、記事も出てきてかなり便利です。

次に、同じアイデアをいくつかのデータセットで試してみました。

  1. Milk production Dataset ( small < 200 data points)
  2. Bike sharing Dataset ( about 18000 data points)
  3. USD to Euro Exchange rate ( about 6500 data points)
  4. Apple Stock Prices ( about 13000 data points)

予想は一変数の時系列として行われました。 つまり、タイムスタンプと予測する値のみを考慮します。 欠損値はパディング(直近の値を使用)を使ってインプットされます。 すべてのテストにおいて、我々はローリングウィンドウとしてサイズ14のウィンドウを使用しました。 Auto.Arimaを除き、他の手法はローリングウィンドウを用いたデータセットです。

勝者はいません。 しかし、私たちが議論したローリング ウィンドウ法と回帰アルゴリズムを組み合わせると、かなりうまくいくようです。

Conclusion

3 つの方法について説明しました。 この3つの方法のうち、3番目の方法は、エンドユーザーの手を煩わせることは少ないが、自動ARIMAモデルに匹敵する良い結果を提供する。

したがって、「ローリング ウィンドウに基づく回帰」は、フォーキャスターの技のバッグに追加するのに役立つと考えます。

しかしながら、これはARIMAを信用しないわけではなく、専門家が調整すれば、はるかに良い結果が得られるからです。 同時に、手作りの特徴で、2つ目と3つ目の方法もより良くなります。

1 つの重要な検討事項は、転がり窓法の窓のサイズを選択することです。 多くの場合、我々は、ドメインから良いアイデアを得ることができます。 また、ユーザーは窓のサイズに関するパラメータ検索を行うことができます。

Following are few things that need further exploration.

  • RNNとCNNを使うことができますか? RNNを試してみましたが、今のところ良い結果は得られませんでした。
  • 時間帯、曜日、また異なる時間窓の移動平均など、他の特徴を与えることも有用かもしれません。
  1. An overview of gradient descent optimization algorithms
  2. CS231n Convolutional Neural Networks for Visual Recognition

If you enjoyed this post you might also find following interesting.

  • Introduction to Anomaly Detection.Introduction to the Conveolutional Neural Networks for Visibility.If you like this post: コンセプトとテクニック
  • Chronicle of Big Data: A Technical Comedy

また、私のよく読まれた投稿や講演(ビデオ)もご覧ください。 また、@srinath_perera で話しかけたり、検索してください。

コメントを残す

メールアドレスが公開されることはありません。