はだだだだ

定食にサラダは不要だと思う。

MENU

時系列予測モデルの評価指標について

以下の資料を参考に、時系列予測モデルの代表的な評価指標について、特徴や、メリットデメリットをまとめてみます。本記事の内容は、参考資料に記載されている内容から私がざっくり解釈したもののため、正確性には欠けていると思います。

https://otexts.com/fpp3/accuracy.html

まず、評価指標は3つの種類に分類されます。

  • Scale-dependent Errors
  • Percentage Errors
  • Scaled Errors

Scale-dependent Errorsは予測値と実測値の差分から計算されるのもので、単位に依存します。そのため、異なる時系列データの予測モデルのScale-dependent Errors(例えば、株価を予想したAモデルのScale-dependent Errorsと金利を予想したBモデルのScale-dependent Errors)は比較できません。

この点を克服したのがPercentage Errorsです。実測値等を使用して、予測誤差を%で表します。

しかし、Percentage Errorsにも問題があり、誤差を%で表すために、予測誤差を実測値等で割る際、実測値が0の場合は定義できません。また、0でなくとも0に近い値で割ろうとすると、急に大きな値になってしまうため、安定しません。

Scaled ErrorsはPercentage ErrorsとScale-dependent Errorsの良いとこ取りを目指した指標です。

以下では具体的な指標例とともに、上記の内容を掘り下げます。

Scale-dependent Errors

まず予測誤差は以下のように表せます。


e_t = y_t - \widehat {y}_t

y_tが実測値、\widehat {y}_t が予測値です。

ポピュラーなScale-dependent Errorsの指標として以下が挙げられます。

  • Mean Absolute Error : MAE = mean\left( \left| e_{t}\right| \right)
  • Root Mean Squared Error : RMSE = \sqrt {mean\left( e^{2}_{t}\right) }

MAEは予測誤差の絶対値の平均を取ったものです。これを評価指標として用いてモデル選択を行うと、その予測モデルは中央値を予測するモデルになります。これはどういうことかというと、「MAEを評価指標として使う」=「MAEが最小となるモデルを選択する」ということになるのですが、MAEが最小となるのは\widehat {y}_t  y_tの中央値になったときです。そのため、MAEを最小にしようとすることは予測値を中央値に近づけることに繋がります。

「MAEが最小となるのは\widehat {y}_t  y_t の中央値になったとき」の証明については、以下で検討しております。(ちゃんとした証明はわからなかったので雰囲気を記載しております。)

中央値がMAEを最小化する理由 - はだだだだ

RMSEは予測誤差の2乗の平均の2乗根です。ルートを取らなければMean Squared Error (MSE)となります。これを評価指標としてモデル選択を行うと、その予測モデルは平均値を予測するモデルとなります。これは「RMSEを評価指標として使う」= 「RMSEが最小となるモデルを選択する」ということになるのですが、RMSEが最小になるのは\widehat {y}_t  y_tの平均値になったときです。そのため、RMSEを最小にしようとすることは予測値を平均値に近づけることに繋がります。(これはMSEを評価指標にした時も同じです。)

「RMSE(or MSE)が最小となるのは\widehat {y}_t  y_t の平均値になったとき」の証明については、以下で検討しております。

平均値がMSE(or RMSE)を最小化する理由 - はだだだだ

評価指標自体はMAEの方がわかりやすいと思いますが、導かれる予測値の性質としてはRMSEの方がわかりやすいと思います。MAEもRMSEも元の予測対象となる時系列の単位をそのまま引き継いでいるため、異なる時系列間でMAEやRMSEを比較することはできないです。ただし、異なる時系列間でMAEやRMSEを比較するケースは、予測手法の性能や特徴を評価する時が主なケースかな?と思いますので、実際に予測モデルを作るとき(ある1つの時系列データの予測モデルを作るとき)は関係ないかと思います。

個人的には実務等で予測モデルを作るときはとりあえずMAEかRMSEを使用すれば良いのではないかと思います。

Percentage Errors

Percentage Errorsの評価指標の例とし、以下が挙げられます。

  • Mean Absolute Percentage Error : MAPE =  mean\left( \left| 100\dfrac {e_t}{y_t}\right| \right)
  • symmetric Mean Absolute Percentage Error : sMAPE =  mean\left( 200\dfrac {|e_t|}{(y_t + \widehat y_t)} \right)

MAPEは予測誤差を実測値で割って%表記にしたものです。これを使用することで異なる時系列データに適用した予測モデルの性能を比較することができます。ただし、分母となる実測値が0の場合は割り算が定義できず、また、実測値が0に近い小さな値の場合、MAPEはとても大きな値になるため、評価指標として不安定になります。

また、MAPEを使用する際の注意点として、そもそも予測対象となる時系列データが「%表記して問題ないか?」ということが挙げられます。例えば、気温のデータについて、「東京の天気が昨日より10%上がりました」などと言うことは無いと思います。これは、気温というもの区切り(1℃と2℃)が恣意的で、必ずしも2℃が1℃の2倍暑いとは言えないためです。実際、華氏で表すと2℃は35.6度、1℃は33.8度のため、2倍では無くなります。 そのため、温度を予測するモデルを作る時には、評価指標としてMAPEは使用できません。

MAPEについてはもう1点注意すべき点があります。例えば、 y_t = 100,  \widehat y_t = 50のとき、 MAPE= 50\%になるのに対し、 y_t = 50%,  \widehat y_t = 100のとき、 MAPE= 100\%になります。このように実測値と予測値が入れ替わっただけで(上回ったか、下回ったかの違いだけで)、評価指標の値が変わってしまいます。

この点をケアするために考案されたのが、 SMAPEです。先ほどの例では、実測値と予測値の大小関係は関係なく、いずれも sMAPE= 66\%になります。

ただし、sMAPEには別の問題があり、以下の記事と論文では推奨されていません。

Another look at measures of forecast accuracy | Rob J Hyndman What the MAPE is FALSELY blamed for, its TRUE weaknesses and BETTER alternatives! | R-bloggers

一方、sMAPEはKDD CUP 2018で評価指標として使われていたりするため、ポピュラーな指標ではあるようです。

KDD CUP of Fresh Air - Biendata

Scaled Errors

最後にScaled Errorsです。これはPercentage Errorsと同様、異なる時系列データの予測モデルの性能を比べる際に使用できます。Scaled Errosの例として以下が挙げられます。

  • Mean Absolute Scaled Error : MASE =  mean\left(|q_t| \right)
ただし
q_t = \begin{cases}\dfrac {et}{\dfrac {1}{T-1}\sum^{T}_{t=2}\left| y_t - \widehat y_t\right| } ~~~~ \left( 季節性が無い時系列\right) \\ \dfrac {et}{\dfrac {1}{T-m}\sum^{T}_{t=m+1}\left| y_t - \widehat y_{t-m}\right| } ~~~~ \left( 季節性がある時系列\right) \end{cases}


MASEは予測モデルの予測誤差と、ベンチマークとなるナイーブ予測の予測誤差を比較し、その比率を取っています。季節性が無い時系列の場合のナイーブ予測として、t-1の値をそのままtの予測値として使用する場合が上記の q_tの”季節性が無い場合”に当たります。(ナイーブ予測の方法は任意?だと思います。)
こうすることで、MASEが1より小さければ予測モデルはナイーブ予測に勝っている(予測誤差が小さい)とわかります。この指標では分母にナイーブ予測の予測誤差を使用することで単位の影響が無くなり、異なる時系列データの予測モデルの性能比較に使用できます。

なお、MASEを最小化するモデルはMAEと同様、中央値を予測するようなモデルになります。

Another look at measures of forecast accuracy - ScienceDirect

自分なりの結論

実務で予測モデルを作る際には、シンプルでわかりやすいScale-dependent Errorsを使用すれば良いと思います。MAEとRMSEのどちらを使うかについては、「両方試してみて、両方良さそうなモデルを選択する」というやり方が、現実的な方法ではないかと思います。
また、複数時系列データへの性能評価を行いたい場合はMASEを使用すれば良いのではないかと思います。

補足

時系列モデルの予測精度を競う大会ではモデル評価指標として何を使うかが重要になります。こちらの記事では時系列モデルの予測精度を競う大会の歴史について記述されており、モデル評価指標の歴史についてもわかりやすくまとめられています。

A brief history of forecasting competitions - ScienceDirect