Signateコンペでみる時系列データの定常性の影響~intro~

この記事は?

Signateコンペ日本取引所グループ ファンダメンタルズ分析チャレンジを題材に、時系列データの取り扱いで勉強したことを共有する記事です。時系列データの取り扱いの注意点と、対処法を理論と実践で紹介していきたいです。

コンペ内容

詳細はコンペページを見てもらうとして、概要を説明すると、

  • 各銘柄について、明日から20日間の最高値、最低値への変化率(それぞれlabel_high, label_lowと呼ぶことにします)を予測する。ただし、予測対象となる日は決算短信が発表された日のみである。

というコンペです。予測対象となる日は限られていますが、目的変数は時系列データとして解釈できます。例えば、トヨタのlabel_highは f:id:wata101wata:20210208223249p:plain となります。

時系列データって何を気を付けなければいけないの?

時系列データの前に、非時系列データの機械学習について考えていきます。例えば、アヤメの例を考えていきます。ここで、どのアヤメに所属するかを表す目的変数をy、アヤメの特徴量をxとします。機械学習する目的はxが与えられたときに、どのようなyの確率分布になるか、つまり、P(y|x)を精度よく推定できるモデルを作ることです。 f:id:wata101wata:20210208225543j:plain 時系列データに話を戻します。時系列データとは何でしょうか。一般的には、時々刻々と変化しうる確率分布から得られる実現値を意味します。例えば、株価データなら、時々刻々と平均が変動するような確率分布から毎日ひとつだけ実現値が得られていると考えます。*1

f:id:wata101wata:20210208230559j:plain
時々刻々と変化する確率分布から得られるデータをつないでいくと時系列データになる
時系列データで機械学習する目的も書きます。y_{1:t-1}x_{1:t} *2のデータが与えられたときにy_tの確率分布を求めることです。つまり、P(y_t|x_{1:t},y_{1:t-1})を精度よく推定するモデルを得ることです。
目的は明確になったので、どうやるか考えていきます。例えば、100時点分のデータがある場合、非時系列データが100個ある時と同様に考えてモデルを作ってしまっていいのでしょうか。いや、そうではないですね。非時系列データは100個のデータからある一つの確率分布を推定しますが、時系列データでは、各時点で異なる確率分布ですからこのように考えることができません。言い換えると、時系列データが100時点あるというのは、ある一つの確率分布から100個データが得られたわけではなく、100個の確率分布から1個ずつ得られているだけです。
どうすればいいでしょうか。例えば、時系列データを次の図のように変換できないでしょうか。
f:id:wata101wata:20210208231544j:plain
各時点で等しい確率分布から得られる時系列データ
このように時々刻々と確率分布が変化しなければ、ある一つの確率分布から100個のデータが得られたと解釈してもよいのではないでしょうか。これならば非時系列データと同じようにモデルを作ってもよさそうです。
このように確率分布が時々刻々と変化しない性質を定常性、そうでない性質を非定常性と呼びます*3。続きの記事では、非定常の時系列データを定常な時系列データに変換する方法の理論、そして実際にやってみてどのようにモデルの性能に影響を及ぼすか書いていきたいと思います。

*1:詳しくはこちら

*2:x_{1:t}は時点1から時点tまでのxを意味します。

*3:本当の定義はこのへん