第8回、9回と再帰ネットワークのLSTMを利用した時系列分析を行いました。今回はやや本題からそれますが、時系列分析に関する指標についてまとめておきます。次回、実際に8回、9回で学習したモデルが数値的にどのような特徴を持つのかを確かめていきます。
時系列分析の指標
3種類の視点から指標を外観していきます。
- モデルの誤差
- 方向性精度
- モデルの比較
記号
- $y_t$ : t期の実現値・実測値
- $f_t$ : t期の予測値 ($\hat{y}_t$ではないので注意してね)
1. 実測値と予測値の乖離・誤差
実際の値と予測値の差である誤差の平均を利用する指標群です。誤差の平均を見ることで、平均として予測が実際の値よりもどの程度ずれているのかが判定できます。通常は、誤差が小さいほど予測精度が高くなります。
代表的な指標
1. MAE (mean absolute error、平均絶対誤差)
$$
MAE = \frac{1}{n}\sum_{t=1}^{n}|y_t - f_t|
$$
2. RMSE (root mean squared error、平均平方二乗誤差)
$$RMSE = \sqrt{\frac{1}{n}\sum_{t=1}^{n}(y_t - f_t)^2}$$
3. MAPE (mean absolute percentage error、平均絶対誤差率)
$$
MAPE = \frac{1}{n}\sum_{t=1}^{n}\Bigl|\frac{y_t - f_t}{y_t}\Bigr| \times 100%
$$
RMSEは二乗しているので大きな誤差に対して大きいペナルティになる性質を持ちます。RMSEは大きな誤差に厳しい性格の指標です![]()
MAPEは、×100%として%表示にしていますが、誤差の割合みたいな指標です。割り算しているので、$y_t=0$だと使えない点、$y_t < 0$のように値がマイナスのときは解釈上わかりにくくなる点に注意です。MAPEはデータの単位に依存しない率・割合指標なので桁が大きく異なるデータ同士の誤差も比較できます。
2. 方向性に関する精度
時系列の予測なので上下・増減などの将来の予測方向が正しいことが正義! と考える指標となります。予測方向に関する精度で、基本的なイメージは上下の2値分類みたいなものかな![]()
代表的な指標
MDA (mean directional accuracy、平均方向精度)
予測値と実測値の方向が一致した割合を求める指標となります。誤差の大きさに関係なく、予測の方向性が一致する場合のみを考慮します。予測値と実測値の方向が同じなら+1で、逆方向なら0として、同方向の割合を求めることになります。代表的な状況を式で表現すると、次のような形になります。
$$MDA = \frac{1}{T-1} \sum_{t=2}^{T} \frac{1 + \text{sign}((y_t - y_{t-1})(f_t - y_{t-1}))}{2}$$
ちょっと入り組んだ式ですが、基本的に平均ですね![]()
- $(y_t - y_{t-1})(f_t - y_{t-1}) > 0$ のとき(方向一致):$\text{sign}(\cdot) = 1$
- $(y_t - y_{t-1})(f_t - y_{t-1}) < 0$ のとき(方向不一致):$\text{sign}(\cdot) = -1$
- $(y_t - y_{t-1})(f_t - y_{t-1}) = 0$ のとき(変化なし):$\text{sign}(\cdot) = 0$
この式だと、変化なしで0.5という中途半端な形になっていますが気にしないでください![]()
![]()
![]()
| 方向 | 値 |
|---|---|
| 方向一致 | 1 |
| 方向不一致 | 0 |
| 変化なし | 0.5 |
まとめると表のようなカウント計算になります1。$T-1$で割り算して同方向数の単純平均を求める尺度がMDAです。
評価の組み合わせ
MAEやRMSEが小さく、MDAが高い場合、そのモデルは誤差が小さく、トレンドの方向も正確に予測できているのでいい感じのモデル![]()
再帰ネットワークで時系列データを学習させると、第8回目のように1期ずれたモデルに近似することがあります。直前の期を今期の予測とするモデルはナイーブ予測モデルと呼ばれることがあります。ナイーブ予測も、思いの外、誤差が小さく方向もあっていることが度々あります![]()
![]()
![]()
ナイーブ予測と比較・判定する尺度を最後に紹介します。
3. モデルの比較
予測モデルを比較する指標となります。最初にナイーブ予測の誤差とモデル予測の誤差を数値的に比較する方法で、ナイーブ予測よりどれくらい良いかみたいな指標となります2。次に紹介する方法が、2個のモデル性能の統計的な検定です。
代表的な指標
1. MASE (mean absolute scaled error、平均絶対スケール誤差)
Hyndman and Koehler (2006)が提案した指標で「時系列 {$y_t$} がたかだか1個の単位根を持つ」という仮定のもと次の形で定義されます。
$$
MASE = \frac{MAE_{model}}{MAE_{naive}}
= \frac{\frac{1}{m} \sum_{t=n+1}^{n+m}|y_t - f_t|}
{\frac{1}{n-1}\sum_{t=2}^{n}|y_t - y_{t-1}|} \
$$
分母は学習時に利用したデータ $y_1,y_2,...,y_n$ を使ったナイーブ予測でのMAE
$$
MAE_{naive} = \frac{1}{n-1}\sum_{t=2}^{n}|y_t - y_{t-1}|
$$
となります。$MAE_{naive}$を基準の値とします。分子は学習データとは異なるテストデータ $y_{n+1},y_{n+2},...,y_{n+m}$ を使った予測モデルでのMAE
$$
MAE_{model} = \frac{1}{m} \sum_{t=n+1}^{n+m}|y_t - f_t|
$$
となります。ナイーブ予測での平均絶対誤差よりも、予測モデルでの平均絶対誤差の方が大きいのか小さいかという意味合いになります。MASEはMAE同士を割り算しているので、データの単位に依存しない尺度となっているのも利点になります。
ポイントは2点
- 学習に利用したデータによるナイーブ予測の誤差を基準点とみなし、その誤差とテストデータでのモデルの誤差の比率を求める
- 時系列データがたかだか1個の単位根を持つ
単位根が高々1個なので階差$(y_{t} - y_{t-1})$は何らかの分布に従うことになります。理論上、ナイーブ予測の平均は、期間に無関係に等しくなるんだな3![]()
計算例1
表のような時系列のデータをサンプルとしてMASEを計算してみます。表の数値は左から順番に時系列順に並んでいると考えてください📈
| 学習データ | テストデータ | |
|---|---|---|
| 時系列データ | 1, 2, 3, 4, 5 | 10, 20, 30, 40, 50 |
| ナイーブ予測 | -, 1, 2, 3, 4 | 5, 10, 20, 30, 40 |
| モデル1予測 | 15, 25, 35, 45, 55 |
モデル1のMASE
学習に利用したデータを使って、ナイーブ予測のMAEを求めます。
$$
MAE_{naive} = \frac{1}{4}(|2-1| + |3-2| + |4-3| + |5-4|)=1
$$
続いて、テストデータを利用してモデル1の予測を利用したMAEを求めます。
$$
MAE_{model} = \frac{1}{5}(|10-15|+|20-25|+|30-35|+|40-45|+|50-55|)=5
$$
$MASE=MAE_{model}/MAE_{naive}$なので、
$$
MASE = \frac{MAE_{model}}{MAE_{naive}} = 5
$$
となります。
ナイーブ予測のMASE
ナイーブ予測を利用してMASEを求めてみましょう。テストデータでのナイーブ予測のMAEは
$$
MAE_{naive,model} = \frac{1}{5}(|10-5|+|20-10|+|30-20|+|40-30|+|50-40|)=9
$$
ナイーブ予測のMASEを求めると
$$
MASE_{naive} = \frac{MAE_{naive,model}}{MAE_{naive}} = 9
$$
表のような、学習データとテストデータの性質が大きく違うような状況(時系列データがMASEの単位根の条件を満たさないような状況)だと、ナイーブ予測のMASEが1より大きくなることもあります。しかし、単位根が高々1という状況下では、MASEは1に近い値になります。
予測モデルの比較
基準のMASEとして、ナイーブ予測そのものを予測モデルにしたMASEを求めます。便宜上、$MASE_{naive}$と表記します。*単位根の仮定から理論上 $MASE_{naive}=1$ となります
この事実を利用すると予測モデルとナイーブ予測モデルを比較することができます。
- MASE < 1:予測モデルの方がナイーブ予測より精度がいいぞ
- MASE > 1:ナイーブ予測の方が予測モデルより精度がいいぞ
計算例でもみたように、ナイーブ予測でのMASEが必ずしも1にならない、というか、1よりも結構大きな状況になることもあります。この場合MASEが有用な指標とはならない可能性もありますが、次のように前向きに捉えることも可能です。
- $MASE < MASE_{naive}$
予測モデルの方がナイーブ予測より精度がいいぞ
- $MASE > MASE_{naive}$
ナイーブ予測の方が予測モデルより精度がいいぞ
2. Diebold-Mariano検定(ダイボールド・マリアーノ検定)
2つのモデルの予測精度に統計的に有意な差があるかどうかを検定する方法です。各 t 時点のモデル1での予測値と実測値の誤差を$e_{1,t}$、モデル2での予測値と実測値の誤差を$e_{2,t}$とします。基本的なアイディアは、誤差を二乗したり、絶対値を作用させたりする損失関数$L$(二乗誤差や絶対誤差など)を考えて、2つのモデルの損失の差
$$d_t = L(e_{1,t}) - L(e_{2,t})$$
が等しいのか、異なるのかを検証する形になります。実際は、$d_t$の平均値($\bar{d}$)を分散で割り引いた値
$$
\mbox{dm} = \frac{\bar{d}}{\sqrt{\mbox{調整した分散}}}
$$
が検定統計量になります。dmは2つのモデルの損失の差分の平均なので、ゼロかどうかをで検定することになります。誤差の損失関数を与える部分ですが、二乗誤差、絶対誤差など自由に選択できるというユニークな特徴もあります。dmの式の部分、アバウトですが詳細は Diebold and Mariano (1995)の論文で確認してください4![]()
![]()
![]()
簡便な比較方法を最後に紹介したいと思います。
誤差の差分($d_t$)= 「モデル1での誤差」 ー 「モデル2での誤差」
とした場合、比較方法は次の囲みの形になります![]()
比較の例
-
dm < 0 で有意:モデル1の勝利🎉
モデル1の損失 < モデル2の損失でモデル1の予測精度が高いという意味 -
dm > 0 で有意:モデル2の勝利🎉
モデル1の損失 > モデル2の損失でモデル2の予測精度が高いという意味
少し興味が湧いてきたので調べてみたのですが、Diebold Mariano検定の改良版などもいくつか提案されているようです。a new approach....や a modified DM....などなど。研究の進歩を感じますね〜![]()
参考論文
-
Diebold and Mariano (1995). "Comparing Predictive Accuracy", Journal of Business & Economic Statistics, 13(3), 253 - 263
-
Hyndman and Koehler (2006) "Another look at measures of forecast accuracy", International Journal of Forecasting, 22, 679 – 688
目次ページ