WAPE(加重平均百分率誤差)

最終更新: 1 分で読めます このページを編集

WAPE(Weighted Absolute Percentage Error)は、絶対誤差の総和を実測値の総和で割った指標です。需要予測や在庫計画で「どれだけの量を外したか」を百分率で伝えるのに適しています。


1. 定義 #

$$ \mathrm{WAPE} = \frac{\sum_{i=1}^n |y_i - \hat{y}i|}{\sum{i=1}^n |y_i|} \times 100% $$

  • 実測値の総量でスケーリングするため、アイテム間の規模が大きく違っても比較しやすい。
  • MAPE と異なり、ゼロに近い実測値でも暴走しにくい。

2. Python で計算 #

import numpy as np

def wape(y_true, y_pred):
    return 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 に近い場合はエラーになるため、そのようなデータは除外するか、平均需要で割るなど工夫します。


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 分析と併用し、精度改善の優先順位を決めよう。