まとめ
- RMSPE は割合誤差の二乗平均平方根を測る指標です。
- 販売予測で RMSPE を算出し、平均的な相対誤差の大きさを確認します。
- ゼロ除算を避ける ε の設定や低需要品目での扱いを整理します。
1. 定義 #
$$ \mathrm{RMSPE} = \sqrt{\frac{1}{n} \sum_{i=1}^n \left( \frac{y_i - \hat{y}_i}{y_i} \right)^2 } $$ 実務ではパーセント表示にするため 100 を掛けることが多いです。実測値が 0 に近い場合は数値が発散するので注意が必要です。
2. Python で計算 #
import numpy as np
def rmspe(y_true: np.ndarray, y_pred: np.ndarray, eps: float = 1e-8) -> float:
ratios = (y_true - y_pred) / np.maximum(np.abs(y_true), eps)
return float(np.sqrt(np.mean(ratios**2)))
y_true = np.array([120, 150, 80, 200])
y_pred = np.array([118, 148, 79, 190])
print(f"RMSPE = {rmspe(y_true, y_pred) * 100:.2f}%")
eps を導入してゼロ除算を防ぎます。ゼロ需要が多い場合は RMSLE や WAPE への切り替えを検討します。
3. 使いどころ #
- リテール需要予測:販売数量の割合誤差を重視する場合。
- 金融リスク:収益率や価格変動の予測誤差を割合で測りたい場合。
- エネルギー負荷:負荷の規模が大きく変動する場合でも、相対的なズレを評価できる。
4. 他の百分率指標との違い #
| 指標 | 特徴 | 注意点 |
| — | — | — |
| MAPE | 平均百分率誤差。直感的 | 大きな誤差に線形にしか反応しない |
| RMSPE | 大きな割合誤差を強くペナルティ | 実測値が 0 に近いと発散 |
| RMSLE | 対数スケールで評価 | 比率に近いが、解釈がやや難しい |
RMSPE は MAPE よりも大きな外れを強調するため、リスク回避志向の KPI に適しています。
5. 実務での注意 #
- ゼロや極小値が多いデータでは RMSPE が不安定。該当サンプルを除外するか、他指標を併用する。
- 予測対象の単位やスケールを考慮し、RMSPE だけでなく MAE や WAPE も併記する。
- 期間を跨いで比較する場合は、同じ商品・期間のセットで計算して公平性を保つ。
まとめ #
RMSPE は割合誤差を二乗して平均する指標で、大きな外れを強調したいときに有効。
ゼロ近傍のデータでは注意が必要だが、リスク管理や KPI としてわかりやすい数値を提供できる。
MAPE、WAPE、RMSLE などと併用し、絶対誤差・割合誤差の両面からモデル性能を評価しよう。