4.2.4
MAPE と sMAPE
まとめ
- MAPE は実測値に対する割合誤差の平均を測る指標です。
- 売上予測の例で MAPE と sMAPE を比較し、ゼロ付近での暴れを確認します。
- 負値や極小値を含むデータでの対処法と注意点を整理します。
- MAE・RMSE の概念を先に学ぶと理解がスムーズです
1. 定義 #
$$ \mathrm{MAPE} = \frac{100}{n} \sum_{i=1}^n \left| \frac{y_i - \hat{y}_i}{y_i} \right| $$- 実測値に対する相対誤差の平均。
- 値が小さいほど予測が実測に近い。
- 実測値
y_iが 0 に近いと発散しやすい。
2. Python での実装 #
| |
scikit-learn の mean_absolute_percentage_error は既定で 0–1 の値を返すため、パーセント表示には 100 を掛けます。
3. sMAPE(Symmetric MAPE) #
MAPE は実測値が 0 に近いと値が暴走しやすいため、分母に予測値も加えた sMAPE(対称 MAPE) がよく使われます。
計算式 #
$$ \mathrm{sMAPE} = \frac{100}{n} \sum_{i=1}^n \frac{|y_i - \hat{y}_i|}{(|y_i| + |\hat{y}_i|)/2} $$- 分母に実測値と予測値の平均を取ることで、実測値が小さいときも安定しやすくなります。
- 値の範囲は 0〜200% です(MAPE は 0〜∞)。
- M4 コンペティションなど、需要予測コンテストの公式指標として広く採用されています。
Python 実装 #
| |
計算例:MAPE vs sMAPE #
同じデータで MAPE と sMAPE を比較し、ゼロ付近での挙動の違いを確認します。
| 実測値 $y$ | 予測値 $\hat{y}$ | 絶対誤差 | MAPE 寄与 $\frac{|y-\hat{y}|}{y}$ | sMAPE 寄与 $\frac{|y-\hat{y}|}{(y+\hat{y})/2}$ |
|---|---|---|---|---|
| 100 | 90 | 10 | $10/100 = 10.0%$ | $10/95 = 10.5%$ |
| 50 | 60 | 10 | $10/50 = 20.0%$ | $10/55 = 18.2%$ |
| 2 | 10 | 8 | $8/2 = \mathbf{400.0%}$ | $8/6 = \mathbf{133.3%}$ |
| 80 | 78 | 2 | $2/80 = 2.5%$ | $2/79 = 2.5%$ |
3行目のように実測値が小さい($y=2$)場合、MAPE は 400% に跳ね上がりますが、sMAPE は 133% に抑えられます。MAPE では1つの外れ値が全体平均を支配してしまう一方、sMAPE はより安定した評価を提供します。
需要予測で sMAPE が好まれる理由 #
- ゼロ需要への耐性 — 小売や物流では需要ゼロの SKU が頻出します。MAPE はゼロ除算で破綻しますが、sMAPE は予測値が正であれば計算可能です。
- 過大予測と過小予測の対称性 — MAPE は「実測100→予測50」と「実測50→予測100」で異なる値を返しますが、sMAPE は対称的に評価します。
- コンペティション標準 — M3・M4 コンペティションで公式指標として採用され、需要予測分野のベンチマークとして定着しています。
3.1 MAPE・sMAPE・WAPE 比較表 #
需要予測の文脈で頻出する3つの割合誤差指標を整理します。
| 指標 | 分母 | 範囲 | ゼロ耐性 | 主な用途 |
|---|---|---|---|---|
| MAPE | 実測値 $y_i$ | 0〜∞ | ✗(ゼロで発散) | 一般的な割合誤差、ビジネス報告 |
| sMAPE | $(y_i + \hat{y}_i)/2$ | 0〜200% | △(両方ゼロで不定) | 対称的な割合誤差、予測コンペ |
| WAPE | $\sum y_i$(総量) | 0〜∞ | ✓(個別ゼロに強い) | 需要予測、在庫管理 |
- ビジネス報告で「平均何%外した」を伝えたい → MAPE(ただしゼロ除け必須)
- 予測コンペや対称性を重視したい → sMAPE
- SKU 単位の需要予測でゼロ需要が多い → WAPE
4. 使用時の注意点 #
ゼロや負の値:MAPE はゼロに敏感で、負の値では意味が変わる。ゼロ除けや sMAPE の利用を検討。
平均の偏り:大きな実測値よりも小さな実測値の誤差が重くなる。売上 1000 の誤差 10 より、売上 10 の誤差 5 の方が大きく影響する。
外れ値:割合指標なので絶対値より外れ値の影響が小さいが、ゼロ除けを怠ると破綻する。
報酬の解釈:ビジネスでは「平均で何%外したか」を伝えやすい一方、金額換算ができない点に注意。
5. 他指標との併用 #
- MAE / RMSE:絶対値の誤差も併用して、実際のダメージ量を把握。
- RMSLE:過小予測を重視したいときはログ誤差を取る。
- 分位点損失:需要予測でリスクバッファを設けるなら、上下限の目標値も合わせて評価する。
ノイズと MAPE #
ノイズ量が増えると MAPE がどう変化するか確認できます。
まとめ #
MAPE は予測誤差を割合で表すため、ビジネス側に説明しやすいが 0 付近では不安定。
sMAPE を使うと極端な値でも安定しやすく、需要予測コンテストでも標準的に採用されている。
絶対値指標と組み合わせて、ビジネス影響を多角的に評価するのが実務では重要。