Python 時系列分析 1,000本ノック
– ノック92: 予測誤差指標の比較 –

Python 時系列分析 1,000本ノック– ノック92: 予測誤差指標の比較  –
次の Python コードで、予測Aと予測Bの評価結果に注目してください。MAEではAとBの差が小さいのに、RMSEでは大きな差がついています。この違いは何を意味していますか?

Python コード:

import numpy as np

np.random.seed(42)
actual = np.array([100., 105, 98, 102, 110, 95, 103, 108])
pred_a = actual + np.random.randn(8)*3
pred_b = actual.copy(); pred_b[3] += 20

print("予測  MAE     RMSE    MAPE")
for label, p in [("A", pred_a), ("B", pred_b)]:
    e = actual - p
    print(f"{label}    {np.abs(e).mean():.4f}"
          f"  {np.sqrt((e**2).mean()):.4f}"
          f"  {np.abs(e/actual).mean()*100:.4f}%")

回答の選択肢:
(A) RMSEは大きな誤差により強く反応するため、少数の大外れがある予測を厳しく評価する
(B) RMSEは小さな誤差により強く反応するため、細かいズレが多い予測を厳しく評価する
(C) RMSEは予測値のスケールに依存しないため、単位の異なるデータでも比較できる
(D) RMSEは誤差の符号を考慮するため、過大予測と過小予測を区別できる