まとめ
- 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_error に squared=False を指定すると平方根付きの RMSLE が返ります。負の値が含まれているとエラーになるため、事前にクリップするか別指標を使用しましょう。
3. どんなときに使うか #
- 需要・売上予測:予測値が過小だと欠品リスクが高い。対数を取ることで、小さな値の誤差を過大に評価しすぎない。
- 人口・アクセス数など成長が激しいデータ:指数的な伸びでも評価が安定。
- 正の値が中心:マイナスを含むデータには適さない。
4. 直感と注意点 #
対数変換をするため、実測と予測の比率が同じなら誤差は同じ。例えば、
y=10 → 20とy=100 → 200の誤差は等価。過小予測(実測 > 予測)のほうが、過大予測よりも相対的に大きな損失を与える。供給不足を避けたいケースに向いている。
0 付近の値でも安定するよう
1 + yを使うが、それでも極端に小さい値では誤差が増える。データに 0 が多い場合は、対数変換した入力で学習させると RMSLE が改善しやすい。
5. 他指標との比較 #
| 指標 | 特徴 | 注意点 |
|---|---|---|
| RMSE | 大きな誤差を強くペナルティ | 大きい値が支配し、小さい値の誤差が目立たない |
| MAE | ロバストで解釈しやすい | 比率での評価ができない |
| RMSLE | 比率ベースで評価し、過小予測に敏感 | 負の値に対応できない |
まとめ #
RMSLE は比率ベースで誤差を評価し、過小予測を重視したいタスクに適している。
mean_squared_log_errorを利用すれば簡単に計算できるが、データが非正の場合は前処理が必要。RMSE や MAE と併用し、絶対誤差と比率誤差の両面からモデルの性能を評価しよう。