この記事について
今月データサイエンティスト検定を受けるので勉強をしていたのですが、解いてる時に誤差関数に関わる問題が他の問題に比べてちょっと時間がかかるのに気づいたので自分用にまとめておきます。
同じように受験予定の人がこの記事見てるかもしれないですね。
誤差(損失)関数とは
機械学習モデルの予測値が実測値とどの程度乖離してるかを算出するために使われる関数です。
例を挙げると回帰問題では、損失関数Lを
$$
L = \frac{1}{n}\sum_{i=1}^{n}(y_i - \hat{y}_i)^2
$$
で定義してこれを最小化することで、データに沿った回帰直線の傾きと接点を求めます。
問題で出てくるやつら
ここからは問題で出てくるやつらをみていきます。
他にもありますが、一旦3つ。
以下の説明で出てくる変数は以下の通りです。
$y_i$:実測値
$\hat{y}_i$:予測値
$n$:データ数
MSE
日本語だと平均二乗誤差。英語だとMean Squared Error。
定義式は
$$
\frac{1}{n}\sum_{i=1}^{n}(y_i - \hat{y}_i)^2
$$
上でも書いたやつ。二乗している関係で大きな誤差を重要視するため、外れ値に敏感に対してなります。
MAE
日本語だと平均絶対誤差。英語だとMean Absolute Error。
定義式は
$$
\frac{1}{n}\sum_{i=1}^{n}|y_i - \hat{y}_i|
$$
絶対値で計算するため、MSEに比べると外れ値の影響を受けにくくなります。
MSLE
日本語だと平均二乗対数誤差。英語だとMean Squared Logarithmic Error。
定義式は
$$
\frac{1}{n}\sum_{i=1}^{n}(log(1 + y_i ) - log(1 + \hat{y}_i))^2
$$
対数変換をかませることで、正解値の分布が大きい場合でも適切な評価をすることができます。
1がどこからきた?って感じですが、これをしないとyが0を取った場合に大数の計算結果が負の無限大になるので、それを回避するため必要です。
まとめ
結局問題解いてる時に何で惑わされてるかというと、それぞれ何の略だかうろ覚えだったのが問題だった。
このまとめを作る前だと、問題文でMAE(平均二乗誤差)って書かれても引っ掛からなかったかもしれない。
そもそもこれらがなにか分かってなくて、言及された問題を解ける自信がないかも。という方は一度手で計算してみたりスクラッチで実装してみると理解が進んで良いと思います。
参考文献
回帰モデルの評価指標まとめ – MSE、MSLE、MAE、決定係数など
書籍
徹底攻略 データサイエンティスト検定[リテラシーレベル]対応問題集