RMSLE(対数平方平均二乗誤差)

Eval

RMSLE(対数平方平均二乗誤差)

作成日: 最終更新: 読了時間: 1 分
まとめ
  • RMSLE は対数変換した値の二乗平均平方根誤差を測る指標です。
  • 成長率の予測で RMSLE を計算し、割合差を強調する特性を確認します。
  • 対数変換前の前処理やゼロ・負値の扱いに関する注意点を整理します。

1. 定義 #

$$ \mathrm{RMSLE} = \sqrt{\frac{1}{n} \sum_{i=1}^n \left( \log(1 + \hat{y}_i) - \log(1 + y_i) \right)^2 } $$

  • 対数変換により、比率ベースの誤差を測る感覚になる。
  • 1 を足すことでゼロ値でも定義できる(負の値には注意)。

2. Python で計算 #

from sklearn.metrics import mean_squared_log_error

rmsle = mean_squared_log_error(y_test, y_pred, squared=False)
print(f"RMSLE = {rmsle:.3f}")

mean_squared_log_errorsquared=False を指定すると平方根付きの RMSLE が返ります。負の値が含まれているとエラーになるため、事前にクリップするか別指標を使用しましょう。


3. どんなときに使うか #

  • 需要・売上予測:予測値が過小だと欠品リスクが高い。対数を取ることで、小さな値の誤差を過大に評価しすぎない。
  • 人口・アクセス数など成長が激しいデータ:指数的な伸びでも評価が安定。
  • 正の値が中心:マイナスを含むデータには適さない。

4. 直感と注意点 #

  • 対数変換をするため、実測と予測の比率が同じなら誤差は同じ。例えば、y=10 → 20y=100 → 200 の誤差は等価。

  • 過小予測(実測 > 予測)のほうが、過大予測よりも相対的に大きな損失を与える。供給不足を避けたいケースに向いている。

  • 0 付近の値でも安定するよう 1 + y を使うが、それでも極端に小さい値では誤差が増える。

  • データに 0 が多い場合は、対数変換した入力で学習させると RMSLE が改善しやすい。


5. 他指標との比較 #

指標特徴注意点
RMSE大きな誤差を強くペナルティ大きい値が支配し、小さい値の誤差が目立たない
MAEロバストで解釈しやすい比率での評価ができない
RMSLE比率ベースで評価し、過小予測に敏感負の値に対応できない

まとめ #

  • RMSLE は比率ベースで誤差を評価し、過小予測を重視したいタスクに適している。

  • mean_squared_log_error を利用すれば簡単に計算できるが、データが非正の場合は前処理が必要。

  • RMSE や MAE と併用し、絶対誤差と比率誤差の両面からモデルの性能を評価しよう。