回帰モデル性能評価関数:それぞれ特徴と適用先
sckit-learnで使える回帰モデルの評価関数をベースに、それぞれの違いと使い道についてまとめます。yiは真のy、上にバーがあるのがは予測値を示します。
回帰モデル性能評価関数
平均2乗誤差(MSE, RMSE)
$$\text{MSE}(y, \hat{y}) = \frac{1}{n_\text{samples}} \sum_{i=0}^{n_\text{samples} – 1} (y_i – \hat{y}_i(予測値))^2.$$平均二乗誤差(MSE:Mean squared error, RMSE:Root mean squared error)は、誤差の2乗和の平均を最小化するようにモデルを調整する。RMSEは2乗した後に平方根をとり、次元をyとあわせている。
第一選択の評価関数。大きな値を重視する(大きな値ほど2乗誤差は大きくなる)ので外れ値の影響を受けやすいが、正規分布のように外れ値が指数的に減少する多くの状況で有用。
平均絶対誤差(MAE)
$$\text{MAE}(y, \hat{y}) = \frac{1}{n_{\text{samples}}} \sum_{i=0}^{n_{\text{samples}}-1} \left| y_i – \hat{y}_i \right|.$$平均絶対誤差(MAE:Mean absolute error)は、誤差の絶対値和の平均を最小化するようにモデルを調整する。
MSEより外れ値に強く、ロバストな評価手法。逆に値が大きく異なるデータの学習が弱い。ただ大きな値を重視する傾向は残っている。外れ値に影響が大きいデータセットに。
平均2乗対数誤差 (Mean squared logarithmic error)
$$\text{MSLE}(y, \hat{y}) = \frac{1}{n_\text{samples}} \sum_{i=0}^{n_\text{samples} – 1} (\log_e (1 + y_i) – \log_e (1 + \hat{y}_i) )^2.$$平均2乗対数誤差は、対数化したyの誤差にたいする2乗和の平均。人口、年間の商品売上など、yが指数関数的に増加するタスクで適用される。過大側の予測より、過小側の予測により大きなペナルティがつく。
絶対誤差の中央値(MedAE:Median absolute error)
$$R^2(y, \hat{y}) = 1 – \frac{\sum_{i=1}^{n} (y_i – \hat{y}_i)^2}{\sum_{i=1}^{n} (y_i – \bar{y})^2}$$予測値それぞれの絶対誤差の中央値を最小化する。外れ値ほど誤差が大きくなるが、誤差の中央値はそれにはほとんど影響されないという原理。
MAEよりさらにロバストなため、少数のサンプルしかないデータや、外れ値が気になるが除けないデータで有用。
平均パーセンテージ誤差(MPE:Mean percentage error)
平均パーセンテージ誤差は、実測値から外れた割合(%:パーセント)の平均を最小化するようにはたらく。sckit-learnには実装されていない。どのような領域の値も、その大小に関係なく同じ重みの誤差として扱われるため、良さそうであるが、実用にはいくつか問題がある(yが0ではエラーになったり、非常に小さい値では%誤差が発散するなど:英語版wikipediaより)
R2スコア(決定係数)
真の値と予測値の相関関係を示し、y-y plotの当てはまり具合に相当する。完全に一致している場合のR2スコアは1となる。R2スコアはデータセットに依存するため、異なるデータセット間でR²を比較できない。
まとめ
基本的にはR2スコアと平均2乗誤差(MSE)か R2スコアと平均絶対誤差(MAE)の併用がベスト。
大きな値を重視したい・外れ値もしっかり学習したいなら、RMSE。
外れ値の重みは減らしたいなら、MAE。
予測対象が指数関数的に変化する値であれば平均2乗対数誤差もありだが、これはyを対数化するのでも対処できる。
少数のデータしかない場合や、外れ値の影響が大きいものの除外したくないという場合は、絶対誤差の中央値(MedAE)を用いる。
ディスカッション
コメント一覧
まだ、コメントがありません