0. はじめに
このポストでは,CourseraにあるKaggle講座 How to Win a Data Science Competition: Learn from Top Kagglers の講義メモとして,機械学習でよく使われる評価指標を,回帰・分類に分けて整理する.それぞれの評価指標について、定義(①)に加えて,その性質(②)や使用上の注意点(③)なども記す.
- 注1) 紹介する評価指標については,重要で汎用度の高いものに絞っています.辞書的な網羅性はありません.
- 注2) 内容の不足・不備については,些細な点でも,コメントなどにてご指摘いただけると嬉しいです.
1. 回帰
- Notation
- $N$ - number of data samples
- $y \in \mathbb{R}^{N}$ - target vector (data set)
- $ \hat{y} \in \mathbb{R}^{N}$ - predicted vector (data set)
- $ y_i \in \mathbb{R} $ - target value (data)
- $ \hat{y}_{i} \in \mathbb{R}$ - predicted value (data)
1.1. MSE, RMSE, R^2
1.1.1. 定義
-
MSE
(Mean Square Error, 平均二乗誤差)
$$
MSE(\hat{y}) := \frac{1}{N}\sum_{i=1}^{N} { ( y_i - \hat{y}_{i} ) }^{2}
$$ -
RMSE
(Root Mean Square Error, 二乗平均平方根誤差)
$$
RMSE(\hat{y}) := \sqrt{ \frac{1}{N}\sum_{i=1}^{N} { ( y_i - \hat{y}_{i} ) }^{2} }
$$ -
R^2
(R-squared, 決定係数)
$$
{R^{2}}( \hat{y} ) := 1 - \frac{ \frac{1}{N} \sum_{i=1}^{N} { ( {y}_i - \hat{y}_{i} ) }^{2} }{ \frac{1}{N} \sum_{i=1}^{N} { ( {y}_i - \bar{y}) }^{2} } = 1 - \frac{M S E(\hat{y})}{Var(y)}
$$
1.1.2. 性質
-
MSE
について- MSEは,回帰における最も基本的な評価指標
- 予測値$\hat{y}$の各要素を定数$\alpha$で固定した場合($\hat{y}_i = \alpha$),最適な定数$\alpha^{*}_{MSE}$ は観測データ$y$の平均値$\bar{y}$になる.
$$
\alpha^{*}_{MSE} := \bar{y} = \frac{1}{N}\sum_{i=1}^{N} y_i
$$
-
MSE
,RMSE
,R^2
の相違点- 損失関数としての性質
- モデルの予測値$\hat{y}$に対するモデルパラメータ$\theta$の最適化を考える.MSE最小化・RMSE最小化・R^2最大化はいずれも同じ最適解$\theta^*$をもつ.
$$
\begin{align}
MSE(\hat{y}_{\theta_1}) &> MSE(\hat{y}_{\theta_2}) \
\Leftrightarrow ~~ RMSE(\hat{y}_{\theta_1}) &> RMSE(\hat{y}_{\theta_2}) \
\Leftrightarrow ~~ \hspace{1.5em} {R^{2}}(\hat{y}_{\theta_1}) &< {R^{2}}(\hat{y}_{\theta_2})
\end{align}
$$ - パラメータの更新に,勾配法を使う場合は注意.
-
RMSE
を損失関数にした場合,MSE
よりも更新幅が小さくなる.
$$
\frac{\partial RMSE}{\partial \hat{y}_{i}} = \frac{1}{2 \sqrt{MSE}} \frac{\partial MSE}{\partial \hat{y}_{i}}
$$
-
- モデルの予測値$\hat{y}$に対するモデルパラメータ$\theta$の最適化を考える.MSE最小化・RMSE最小化・R^2最大化はいずれも同じ最適解$\theta^*$をもつ.
- モデルの絶対評価を行う際は,MSEではなく
R^2
(決定係数
)がよく使われる.- R^2:データに対するモデルの当てはまりの良さ
- R^2の拡張(モデル選択)
- 損失関数としての性質
1.2. MAE
1.2.1. 定義
-
MAE
(Mean Absolute Error, 平均絶対誤差)
$$
MAE(\hat{y}) := \frac{1}{N}\sum_{i=1}^{N} \left| y_i - \hat{y}_{i} \right|
$$
1.2.2. 性質
-
MAE
について- 予測値$\hat{y}$の各要素を定数 $ \alpha$ で固定した場合($\hat{y}_i = \alpha$),最適な定数 $ \alpha^{*}_{MAE}$は観測データ$y$の中央値$median(y)$になる.
$$
\alpha^{*}_{MAE} := median(y)
$$ - 損失関数としての性質
- MAEを損失関数とする場合,勾配法はあまり使われない
- 予測値 $\hat{y}$の各要素を定数$\alpha$で固定した場合($\hat{y}_i = \alpha$),
- $ \frac{\partial MAE}{\partial \hat{y}_{i}} ~$ : ステップ関数 (原点では微分不可能)
- $ \frac{{\partial}^{2} MAE}{\partial {\hat{y}_{i}}^{2}}$ : 常に0 (原点では微分不可能)
- MSEよりも,データに対する
ロバスト性
が高い.- データに外れ値があった場合,
MSE
が評価する誤差は,MAE
の2倍. - データの
平均値
は外れ値に影響されるが,中央値
は外れ値に対して頑健.
- データに外れ値があった場合,
- MSEよりも,指標としての解釈性が高い.
- ファイナンスの文脈でよく使われる.
- ファイナンスの文脈でよく使われる.
- 予測値$\hat{y}$の各要素を定数 $ \alpha$ で固定した場合($\hat{y}_i = \alpha$),最適な定数 $ \alpha^{*}_{MAE}$は観測データ$y$の中央値$median(y)$になる.
-
Huber損失
- MSEとMAEをミックスさせた評価指標として,
Huber損失
がある.ロバスト推定
やSVM
の損失関数に用いられる.- Cf.) Huber, Peter J. (1964). “Robust Estimation of a Location Parameter”. Annals of Statistics 53 (1): 73–101. doi:10.1214/aoms/1177703732. JSTOR 2238020.
$$
Huber~loss := \frac{1}{N} \sum_{i=1}^{N} {L}_{\delta}(y_i, \hat{y}_{i}) \
{L}_{\delta}(y_i, \hat{y}_{i}) = \left\{
\begin{array}{c}
\frac{1}{2} {( y_{i} - \hat{y}_{i} )}^{2} \hspace{4em} ( |y_{i} - \hat{y}_{i}| \leq \delta ) \\
\delta \cdot ( |y_{i} - \hat{y}_{i}| - \frac{1}{2}\delta) \hspace{1em} ( |y_{i} - \hat{y}_{i}| \gt \delta )
\end{array}
\right.
$$
- Cf.) Huber, Peter J. (1964). “Robust Estimation of a Location Parameter”. Annals of Statistics 53 (1): 73–101. doi:10.1214/aoms/1177703732. JSTOR 2238020.
- MSEとMAEをミックスさせた評価指標として,
-
Quantile Regression
(分位点回帰)- MAEを損失関数とする回帰は,
Median Regression
とも呼ばれるが,その一般化として,Quantile Regression
(分位点回帰)というものもある.
- MAEを損失関数とする回帰は,
1.3. (R)MSPEとMAPE
1.3.1. 定義
-
MSPE
(Mean Square Percentage Error, 平均平方二乗誤差率)
$$
MSPE(\hat{y}) := \frac{100}{N} \sum_{i=1}^{N} { \left( \frac{y_i - \hat{y}_{i} }{y_i} \right) }^{2}
$$ -
MSAE
(Mean Absolute Percentage Error, 平均絶対誤差率)
$$
MSAE(\hat{y}) := \frac{100}{N} \sum_{i=1}^{N} \left| \frac{y_i - \hat{y}_{i} }{y_i} \right|
$$
1.3.2. 性質
-
相対誤差
と絶対誤差
- 絶対誤差 = $ y_i - \hat{y}_{i} $
- 相対誤差 = $ (y_i - \hat{y}_{i}) ~/~ y_{i} $
- Cf.) 相対誤差の計算方法と意義
-
MSPE
について- MSEを相対誤差で評価したもの.
- %表示(百分率)にすることが多い.
- 例:観測値$ y_i $と予測値$ \hat{y}_{i}$($N=1$)が以下のような場合
- If $ ({y}_{1} = 90, ~~ \hat{y}_{1} = 100) $ then, $ MSE=100, ~~ MSPE=1 $
- If $ ({y}_{2} = 900, ~~ \hat{y}_{2} = 1000) $ then, $ MSE=10000, ~~ MSPE=1 $
- 損失関数としての性質
- 予測値$\hat{y}$の各要素を定数$\alpha$で固定した場合($\hat{y}_{i} = \alpha$),最適な定数 $\alpha^{*}_{MSPE}$ は観測データ$y$の重み付き平均値 $w(\bar{y})$ になる.
- 値が小さいデータに対して過剰にfitしようとする.(バイアス)
-
MAPE
について- MAEを相対誤差で評価したもの.
- %表示(百分率)にすることが多い.
- 例:観測値$ y_i $と予測値$ \hat{y}_{i}$($N=1$)が以下のような場合
If $ ( y_1 = 90, ~~~ \hat{y}_1 = 100) ~~ $ then, $ MAE=10, ~~~ MAPE=1 $
If $ ( y_2 = 900, ~ \hat{y}_2 = 1000) $ then, $ MAE=100, ~ MAPE=1 $ - 損失関数としての性質
- 予測値$\hat{y}$の各要素を定数$ \alpha$で固定した場合($ \hat{y}_{i} = \alpha$),最適な定数 $ \alpha^{*}_{MAPE}$ は観測データ$y$の重み付き中央値 $ w(\text{median}(y))$になる.
- 値が小さいデータに対して過剰にfitしようとする.(バイアス)
1.4. RMSLE
1.4.1. 定義
-
RMSLE
(Root Mean Square Logarithmic Error, 平均平方二乗対数誤差)
$$
\begin{eqnarray}
RMSLE(\hat{y}) &:=& \sqrt{ \frac{1}{N}\sum_{i=1}^{N} { \left\{ \log(y_i + 1) - \log(\hat{y}_{i} + 1) \right\} }^{2} } \
&=& \sqrt{ MSE(\log(y_i + 1), \log(\hat{y}_{i} + 1) ) }
\end{eqnarray}
$$
1.4.2. 性質
-
RMSLE
について- MSEをlogスケールで表現したもの
- 絶対誤差を,相対誤差(MSPE, MAPE)ではなくlogスケールで表現.
$y_i$ の大小を考慮して誤差評価 - 損失関数として用いる場合,$ \hat{y} $ に対して凸かつ非対称
- $ \hat{y} $ > 極小値 → 傾きが小さい
- $ \hat{y} $ < 極小値 → 傾きが大きい
2. 分類
- Notation
- $N$ - number of data samples
- $L$ - number of classes
- $y_i$ - ground truth (data)
- $\hat{y}_{i}$ - predictions (data)
- $ y_{il}$ - probability that $i$-th sample belongs $l$-th label
- $\hat{y}_{il}$ - confidence that $i$-th sample belongs $l$-th label
- $ [ a = b]$ - indicator factor
二値分類の基本指標
-
混同行列
(Confusion matrix
)- 二値分類(Binary classification)タスクのみに使う.
-
True Positive
(TP
)- Positiveサンプルのうち,正しくPositiveと分類されたもの
-
False Positive
(FP
)- Negativeサンプルのうち,間違ってPositiveと分類されたもの
-
False Negative
(FN
)- Positiveサンプルのうち,間違ってNegativeと分類されたもの
-
True Negative
(TN
)- Negativeサンプルのうち,正しくNegativeと分類されたもの
- Cf.) Understanding Confusion Matrix - Towards Data Science
-
- 代表的な評価指標
-
正答率
(Accuracy
) = (TP+TN) / (TP+FP+TN+FN) -
精度
(Precision
) = TP / (TP+FP) -
検出率
(Recall
) = TP / (TP+FN) -
F値
(F-Measures
) = $ \frac{2}{\frac{1}{Recall}+\frac{1}{Precision}}$ - Cf.) Accuracy, Precision, Recall or F1? - Towards Data Science
-
- ROC曲線 (Receiver Operating Curve, 受信者操作曲線)
- しきい値$b$を変化させたときの真陽性率 (TP Rate)と偽陽性率 (FP Rate)の関係を曲線でプロットしたもの
-
真陽性率
(TP Rate) = TP / (TP+FN) =感度
(Sensitivity
) =検出率
(Recall
) -
偽陽性率
(FP Rate) = FP / (FP+TN) -
偽陰性率
(FN Rate) = FN / (TP+FN) -
真陰性率
(TN Rate) = TN / (FP+TN) =特異度
(Specificity
)
-
- Cf.) Pang-Ning Tan, Introduction to Data Mining (2nd Edition), Chapter 3 "Classification: Basic Concepts and Techniques"
- しきい値$b$を変化させたときの真陽性率 (TP Rate)と偽陽性率 (FP Rate)の関係を曲線でプロットしたもの
- 二値分類(Binary classification)タスクのみに使う.
2.1. Accuracy
2.1.1. 定義
-
Accuracy
(正答率)
$$
Accuracy := \frac{1}{N}\sum_{i=1}^{N} [ y_i = \hat{y}_{i} ]
$$ -
Error
(誤り率)
$$
Error := \frac{1}{N}\sum_{i=1}^{N} [ y_i \neq \hat{y}_{i} ]
$$
2.1.2. 性質
-
Soft prediction
とHard prediction
-
soft labels
(= soft predictions)- $ f(x) \in \mathbb{R}^{L}$ - 分類モデル$f$の出力スコア
-
hard labels
(= hard predictions)- $ \underset{i}{\rm argmax} ~ f_{i} (x)$ - 分類モデル$f$が最大スコアを出力したラベル
- $ \left[ b \lt f(x) \in \mathbb{R}^{L} \right]$,$b$: しきい値
-
-
Accuracy
について-
Hard prediction
なので,解釈が難しい.- 分類モデル$f$の出力値そのものではなくて,$\text{argmax}()$で評価する.
- 損失関数として用いると,最適化が難しい.
- best conts. $\alpha^{*}(x)$:最も頻度の高いクラスに固定する.
- 例($N = 100$)
- Dataset
- 10 cats
- 90 dogs
- $\alpha^{*}(x) = "dogs"$
- Dataset
-
2.2. LogLoss
2.2.1. 定義
-
Binary LogLoss
$$
Losloss := - \frac{1}{N}\sum_{i=1}^{N} \left\{ y_i \log \hat{y}_{i} + (1 - y_i) \log (1 - \hat{y}_i) \right\}, ~~ y_i, \hat{y}_{i} \in \mathbb{R}
$$ -
Multiclass LogLoss
$$
Logloss := - \frac{1}{N} \sum_{i=1}^{N} \sum_{l=1}^{L} y_{il} \log \hat{y}_{il}, ~~ y_i, \hat{y}_{i} \in \mathbb{R}^{L}
$$
2.2.2. 性質
-
LogLoss
(Logarithmic loss)について- LogLoss $\in$
Soft prediction
. - 損失関数として用いると,最適化が簡単.
- best conts. $\alpha^{*}_{i}(x)$
- これは,$i$-th クラスの頻度(経験分布).
- 例($N = 100$)
- Dataset
- 10 cats
- 90 dogs
- $ \alpha^{*}(x) = [0.1, 0.9 ]$
- Dataset
- LogLoss $\in$
2.3. AUC (ROC)
2.3.1. 定義
-
AUC
(Area under the ROC Curve)
$$
AUC := \frac{(\text{correctly orderd pairs})}{(\text{total number of pairs})}
$$
2.3.2. 性質
-
AUC
(ROC
)について- AUCは,
二値分類タスク
(Binary classification)のみに使う- Cf.) 奥村先生によるAUC (ROC)の解説ページ
- サンプルに対する識別結果の"順序"にのみ依存,分類モデルの"出力値"には非依存.
- best consts. $ \alpha^{*}_{i}(x)$:任意の定数に固定してもAUCの値は同じ.
- AUCは,分類平面(しきい値)に依らない.
- AUCの説明
- AUC := ROC曲線(Receiver Operating Curve)の下側面積
-
Wilcoxon-Mann-Whitney検定
(WMW検定) Brunner-Munzel検定
-
- サンプルペアの順序
- 正しい順序に分類されたサンプルペアの割合
$$ AUC := \frac{(\text{correctly orderd pairs})}{(\text{total number of pairs})} $$
- 正しい順序に分類されたサンプルペアの割合
- AUC := ROC曲線(Receiver Operating Curve)の下側面積
- pythonの場合,
sklearn.metrics.roc_curve()
とsklearn.metrics.auc()
を使って計算できる.
- AUCは,
2.4. Cohen’s Kappa
2.4.1. 定義
-
Cohen’s Kappa
($ \kappa$係数, $\kappa$統計量)
$$
\text{Kappa} := 1 - \frac{1 - \text{accuracy}}{1 - p_{e}} = 1 - \frac{(\text{error})}{(\text{baseline error})} \\
p_{e} := \frac{1}{N^{2}} \sum_{k} n_{k1} n_{k2}
$$- Notations
- $i$ - 評価者
- $k$ - 識別するクラス
- $n_{ki}$ - 評価者 $i$ がクラス $k$ であると識別したサンプルの数
- $N$ - サンプルの数
- $p_{e}$ - 各サンプルをランダムに識別した場合の平均正答率
- Notations
-
Weighted Kappa
(重み付けカッパ係数)
$$
\text{Weighted Kappa} := 1 - \frac{(\text{weighted error})}{(\text{weighted baseline error})} \\
\text{weighted error} := \frac{1}{Z} \sum_{i,j} c_{ij} w_{ij}
$$- Notations
- $c_{ij}$ - 混同行列$C$の$(i, j)$成分
- $w_{ij}$ - 重み行列$W$の$(i, j)$成分
- $Z$ - 規格化定数
- Notations
2.4.2. 性質
-
Cohen's Kappa
について- Jacob Cohenが1960年に発表.
- 基準となるスコア(baseline)を0に正規化して,任意のモデルの性能を表現.
- 「
Kappa
-Accuracy
の関係性」は,「R^2
-MSE
の関係性」に似ている.
- 「
-
Weighted Kappa
について- Accuracy(Error)に重みづけを行ってKappaを計算.
- $ weighted~error := \frac{1}{Z} \sum_{i,j} c_{ij} w_{ij}$
- $ c_{ij} $:混同行列$ C \in \mathbb{R}^{L \times L}$の$(i, j)$成分 ※$L$ - 識別するクラス数
- $ w_{ij} $:重み行列$ W \in \mathbb{R}^{L \times L}$の$(i, j)$成分 ※$L$ - 識別するクラス数
- 混同行列$C$
- TP, FP, FN, FP
- 重み行列$W$
- "順序つき"クラスラベルの分類に使う.
- 例:病気のレベルに応じたクラス分類 - 重み行列$W$の構成法
-
Linear weights
:$ w_{ij} = |i - j|$ -
Quadratic weights
:$w_{ij} = {(i - j)}^{2}$
-
Quadratic Weighted Kappa
を損失関数に使う場合,典型的にはMSE
で近似する.- Cf.) 解析的に解く方法もある."On The Direct Maximization of Quadratic Weighted Kappa" (2015)
- 例($N = 100$)
- Dataset
- 10 cats
- 90 dogs
- 20 tigers
- Dataset
- Accuracy(Error)に重みづけを行ってKappaを計算.
以上です。
最後まで読んでいただきありがとうございます。