WAPE

中級

4.2.12

WAPE

最終更新 2020-07-01 読了時間 2 分
まとめ
  • WAPE は実測総量に対する絶対誤差の割合を測る指標です。
  • 需要予測の実測総量を基準に WAPE を算出し、レポートでの表示例を確認します。
  • 総量が小さい場合の不安定さや MAE との併用ポイントを整理します。
  • MAE・RMSE の概念を先に学ぶと理解がスムーズです
  • MAPE の概念を先に学ぶと理解がスムーズです

1. 定義 #

$$ \mathrm{WAPE} = \frac{\sum_{i=1}^n |y_i - \hat{y}_i|}{\sum_{i=1}^n |y_i|} \times 100\% $$
  • 実測値の総量でスケーリングするため、アイテム間の規模が大きく違っても比較しやすい。
  • MAPE と異なり、ゼロに近い実測値でも暴走しにくい。

2. Python で計算 #

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
import numpy as np

def wape(y_true: np.ndarray, y_pred: np.ndarray) -> float:
    """WAPE(加重平均絶対誤差率)を計算する。

    Args:
        y_true: 観測された実測値。
        y_pred: モデルの予測値。

    Returns:
        WAPE の値。
    """
    return float(np.sum(np.abs(y_true - y_pred)) / np.sum(np.abs(y_true)))

print("WAPE:", round(wape(y_test, y_pred) * 100, 2), "%")

実測の総量が 0 に近い場合はエラーになるため、そのようなデータは除外するか、平均需要で割るなど工夫します。


計算例 #

具体的な数値で WAPE を手計算してみましょう。

SKU実測 \(y\)予測 \(\hat{y}\)絶対誤差
A10011010
B50455
C20018020
合計35035
$$ \mathrm{WAPE} = \frac{35}{350} = 0.10 = 10\% $$

MAPE の場合は \(\frac{1}{3}(10% + 10% + 10%) = 10%\) で同じ値になりますが、SKU ごとの需要量に偏りがあると結果が変わります。たとえば SKU B の需要が 5 に減ると MAPE は急騰しますが、WAPE は全体量で割るため安定します。


3. WAPE と MAPE の比較 #

指標特徴注意点
MAPE各サンプルの百分率誤差を平均実測値が 0 に近いと発散
WAPE絶対誤差の総量 ÷ 実測総量アイテムごとの重みが実測値に依存
sMAPE実測と予測の平均で割る0 を扱えるが解釈が難しい
需要予測では SKU ごとの需要量が大きく異なるため、WAPE で全体的な外れ方を評価するとわかりやすくなります。

4. 実務での使い方 #

  • 在庫計画:全 SKU の WAPE を KPI として管理し、10% 以下を保つなどの目標を設定。

  • モデル比較:MAE だと単位に依存するが、WAPE なら百分率で比較できる。

  • アイテム別詳細:全体 WAPE が良くても一部 SKU が酷い可能性があるため、SKU スライスごとの WAPE も併せて確認。


5. 注意点 #

  • 需要がゼロの期間が多い場合は、需要が発生した期間だけをベースに計算するなど前処理が必要。
  • 期間をまたいで比較する場合は、同じ期間・同じアイテムセットで計算する。
  • 単一アイテムの評価には MAE や MAPE も併用し、個別の改善余地を把握する。

まとめ #

  • WAPE は絶対誤差の総量を実測量で割り、需要予測の精度をわかりやすい百分率で示せる。

  • MAPE の弱点であるゼロ需要の発散問題を緩和し、実務 KPI として使いやすい。

  • SKU 単位やセグメント単位での WAPE 分析と併用し、精度改善の優先順位を決めよう。


よくある質問 #

WAPEとMAPEはどちらを使うべき? #

需要量に大きなばらつきがあるSKUを一括評価する場合はWAPEが安定しています。MAPEは各サンプルを均等に扱うため、少量SKUで実測値がゼロに近いと値が爆発します。一方、個々のSKUごとに精度を把握したい場合や、需要量が均質なデータではMAPEも有効です。実務では「全体KPIはWAPE、詳細分析はMAPEやMAE」と使い分けるケースが多いです。

WAPEの目標値(ベンチマーク)は? #

業界・商材・予測期間によって大きく異なります。食品・日用品の週次需要予測では10〜20%が「良好」とされることが多く、季節性が強い商品や新商品では30%前後も許容されます。自社の過去モデルや単純移動平均などのベースラインと比較して、改善率で評価するのが現実的です。

ゼロ需要のSKUが多い場合は? #

WAPEの分母(実測総量)がゼロまたは極小になると不安定です。対策として:

  • 需要が発生した期間・SKUだけを集計する(ゼロ需要期間を除外)
  • ゼロ需要SKUを別グループに分けてWAPEを別途集計する
  • ゼロ需要の発生自体を別途Binary予測指標(F1など)で評価する

WAPEとMAEの違いは何? #

MAEは絶対誤差の平均で単位が元のデータと同じ(例:個数・円)。WAPEはMAEを実測総量で割るためパーセント表現となり、単位が異なるカテゴリ間やスケールが違うモデル間の比較に適しています。

アイテム別WAPEとカテゴリ全体WAPEはどう解釈する? #

全体WAPEが良くても特定SKUの誤差が大きい場合があります。全体WAPEをKPIとしつつ、SKU別・カテゴリ別にWAPEを分解して誤差の大きい箇所を特定する「WAPE分解」が精度改善の優先順位付けに有効です。


  • MAPE・sMAPE — 各サンプル均等重みの割合誤差
  • RMSPE — 二乗ベースの割合誤差
  • MASE — スケール不変な別アプローチ

ノイズと各指標の変化 #

ノイズ量を変えた場合の各指標の変化を確認できます。