DSOC研究員の吉村です. 先日, Sansan の Scan for Trees という取り組みの一環で, 宮城県の大崎市に植樹に行ってきました. 普段のオフィスでのデスクワークから離れて, 鍬を手に持ち植樹をするという経験は非常に新鮮でした.
さて, 今回も引き続き「機械学習のモデルの評価方法」について見ていきます. 前回お伝えした通り, 多クラス分類 (multi-class classification) と回帰 (regression) の評価指標について確認していきます. これまでと同様に, モデルという言葉を機械学習のモデルという意味で用いていきます.
比較的基本の内容ですが, 見ていきましょう.
Notation
多クラス分類における精度評価部分では, テスト事例集合を で, 候補クラス (ラベル) 集合を で表します. 事例は , クラスは とします. , , , はそれぞれ, クラス を正例として, そのほかのクラスを負例とした時の TP, FP, TN, FN の数を表しています.
また, 回帰における精度評価部分では, テスト事例集合を で, 事例を で表します. 加えて, 事例 の真の値と予測値をそれぞれ, , とします. また, 各事例の真の値の平均を と表現します.
多クラス分類における精度評価
多クラス分類とは, 三つ以上の候補クラス集合が与えられているときに, その候補クラス集合の中から各事例に対して, 最も最適なクラスを一つだけ割り当てる分類の問題設定です. 多クラス分類に対応する実際の問題設定としては, 例えば, 生物の種の分類などが考えられます.
さて, 多クラス分類における精度評価のための手法は, 二値分類で用いるような評価指標 (例えば, Recall や Precisionなど) を多クラス分類の場合の結果にどのように適用するかを定めた評価指標を用います. 例えば, 下記のようなものが知られています.
- micro-averaged (ミクロ平均), overall average (全体平均)
- macro-averaged (マクロ平均), class-based average (クラス平均)
- weighted average (重み付き平均)
これらの評価指標は, 何らかの二値分類用の評価指標と組み合わせて用いられます. ここでは, 多クラス分類に適用可能な何らかの二値分類用の評価指標を で表すことにします. つまり, Metric には Recall や Presicion などが入ると思ってください.
micro-averaged (ミクロ平均)
$$\text{micro- averaged Metric} = \text{Metric}\left(\sum_{l \in \mathcal{L}} \#(TP_l), \sum_{l \in \mathcal{L}} \#(FP_l), \sum_{l \in \mathcal{L}} \#(TN_l), \sum_{l \in \mathcal{L}} \#(FN_l) \right)$$
ミクロ平均は, テスト事例集合全体に対する評価指標であるため, いずれのクラスについて正しく予測してもその価値を等しく扱います. 仮に, 不均衡なテストデータに対して, 属する事例が1個しかないクラスも, 属する事例が100個ある事例も正しく予測できた場合も, 等しくスコアに反映されるという特徴があります. そのため, クラスごとに重要度に違いがない場合にはこの指標を用いると良いと考えられます.
macro-averaged (マクロ平均), class-based average (クラス平均)
$$\text{macro-averaged Metric} = \frac{1}{|\mathcal{L}|}\sum_{l \in \mathcal{L}}\text{Metric} \left( \#(TP_l), \#(FP_l), \#(TN_l), \#(FN_l) \right)$$
マクロ平均は, 一度各クラスごとに評価を行った後に平均をとる評価指標です. そのため, この指標では, Recall や Precision を用いる場合には, 特定のクラスに属する事例が多いクラスを正しく予測する場合には相対的に小さく, 特定のクラスに属する事例が少ないクラスを正しく予測する場合には相対的に大きくスコアに反映されます. 一方で, Accuracy を用いる場合には, micro-averaged Accuracy と macro-averaged Accuracy は等しくなることが計算によりわかります.
weighted average (重み付き平均)
$$\text{weighted average Metric} = \frac{1}{|\mathcal{I}|} \sum_{l \in \mathcal{L}} |\mathcal{I}_l| * \text{Metric} \left( \#(TP_l), \#(FP_l), \#(TN_l), \#(FN_l) \right)$$
重み付き平均は, 各クラスに属する事例の数に応じた重みを, 各指標に掛け合わせたものの平均をとる評価指標です. そのため, 不均衡なデータに対しての評価を行う場合に, 各事例数に合わせて調整することができています. この指標では, クラスについて平均されるときに, 事例数が少ないクラスのスコアは相対的に低く, 事例数が多いクラスのスコアは相対的に高く weighted average に反映されます.
回帰における精度評価
回帰とは, 予測対象が連続値である問題設定です. 当然, この場合, 教師信号としては, 連続値が与えられます. 回帰に対応する実際の問題としては, 例えば, 商品の売上を予測したり, 何かのサイズを予測するようなものが考えられます.
さて, 回帰における精度評価のための手法としては, 下記のようなものが知られています [*1].
- MSE (Mean Square Error, 平均二乗誤差)
- RMSE (Root Mean Square Error, 平均二乗誤差平方根)
- RMSPE (Root Mean Square Percentage Error)
- MAE (Mean Absolute Error, 平均絶対誤差)
- MAPE (Mean Absolute Percentage Error)
- RMSLE (Root Mean Squared Logarithmic Error, 二乗平均平方根対数誤差)
- (R Squared, 決定係数)
- Adjusted (Adjusted R Squared, 調整済み決定係数)
MSE (Mean Square Error, 平均二乗誤差)
$$\text{MSE} = \frac{1}{|\mathcal{I}|}\sum_{i \in \mathcal{I}} (y_i - \hat{y_i})^2$$
MSEでは, 真の値と予測値との差分が大きいければ大きいほど, 相対的に大きなペナルティとなります. 例えば, 真の値が (3, 5, 2, 4) であるようなテスト事例集合に対する予測結果が, (4, 6, 3, 3) のものと, (3, 5, 2, 8) のものとでは, 後に説明する MAE はどちらも同じですが, MSE はそれぞれ, 1 と 4 となり, より予測が大きく外れている場合には大きな値になることがわかります.
MSE の欠点としては, データ内部でのスケールがまちまちであるような場合に, 大きいスケールの方にスコアが引き摺られてしまうというような点が挙げられます.
RMSE (Root Mean Square Error, 平均二乗誤差平方根)
$$\text{RMSE} = \sqrt{\frac{1}{|\mathcal{I}|}\sum_{i \in \mathcal{I}} (y_i - \hat{y_i})^2} = \sqrt{\text{MSE}}$$
RMSE は MSE の平方根をとったもので, スコアの大きさの順番については MSE と同様になります. 損失関数として用いる場合に RMSE と MSE は勾配法による変化分がスカラー倍違うことに注意が必要です.
RMSPE (Root Mean Square Percentage Error)
$$\text{RMSPE} = \sqrt{\frac{1}{|\mathcal{I}|}\sum_{i \in \mathcal{I}} \left( \frac{y_i - \hat{y_i}}{y_i} \right)^2}$$
RMSPE は, 各誤差を真の値で割ったものに対して, 二乗の平方根を計算するため, データ内のスケールの違いに対しても, ある程度の許容をすることができます. ただし, 当然, となる場合には, 定義できないため注意が必要です.
MAE (Mean Absolute Error, 平均絶対誤差)
$$\text{MAE} = \frac{1}{|\mathcal{I}|}\sum_{i \in \mathcal{I}} |y_i - \hat{y_i}|$$
MAE は 誤差の絶対値の平均をとったものであるため, 非常に直感的です. しかし, MAE は 真の値と予測値との間の誤差が大きくても、小さくても、同様にスコアに反映されます. したがって, 外れ値に対して評価結果がより頑健であるということが言えます. その点で, たまに大きく予測を外すモデルと常に少し予測を外すモデルとが同じようなスコアになります.
MAPE (Mean Absolute Percentage Error)
$$\text{MAPE} = \frac{1}{|\mathcal{I}|}\sum_{i \in \mathcal{I}} \frac{|y_i - \hat{y_i}|}{y_i}$$
MAPE は, MAE をデータ内のスケールの違いに対応させた評価手法です. 真の値に対する誤差パーセンテージを常に同等に評価します.
RMSLE (Root Mean Squared Logarithmic Error, 二乗平均平方根対数誤差)
$$\text{RMSLE} = \sqrt{\frac{1}{|\mathcal{I}|}\sum_{i \in \mathcal{I}} (\log{(y_i+1)} - \log{(\hat{y_i} +1)})^2}$$
RMSLE は, 損失として対数を用いているため, 真の値と予測結果の間に大きなスケールの差があったとしても, その差によるペナルティを比較的小さく抑えることができる評価指標です. これにより, 明らかな外れ値があった場合にも, それによりスコアが台無しになることがないという特徴があります.
(R Squared, 決定係数)
$$R^2=1-\frac{\sum_{i \in \mathcal{I}} (y_i - \hat{y_i})^2}{\sum_{i \in \mathcal{I}} (y_i - \bar{y})^2 }$$
は1が最もよく, に行くほど性能が悪いことを表します. 式を見てわかるように, 全てを真の値の平均値で予測した場合に比べて, どの程度誤差が小さいのかを表す指標です. そのため, が負になる場合には, 全てを平均値で予測した場合よりも性能が悪いことを表します.
Adjusted (Adjusted R Squared, 調整済み決定係数)
$$\text{Adjusted }R^2=1- \frac{|\mathcal{I}|-1}{|\mathcal{I}|-p} \cdot \frac{\sum_{i \in \mathcal{I}} (y_i - \hat{y_i})^2}{\sum_{i \in \mathcal{I}} (y_i - \bar{y})^2 }$$
ただし, は回帰係数のパラメタ数を表します.
調整済み決定係数は, モデルの自由度を考慮した上で全てを平均で予測するようなベースライン手法に対してどの程度性能が良いのかを表現する手法です. モデルのパラメタ数などを調整する目的で使われることが多いのではないでしょうか.
まとめ
今回は, 前回に引き続き機械学習のモデルの評価指標にスポットライトを当てた内容について説明しました. 特に, 多クラス分類や回帰で用いられるような評価指標を取り扱いました. 前回と同様に, 評価指標には様々なものがあることがわかりました. 今回紹介した評価指標は, それぞれ特性が異なるため, 利用する場面ごとに適切な評価指標の選択が重要です. 次回は, マルチラベル分類 (multi-label classification, 多ラベル分類) やランキングなどの少し特殊な問題設定における評価指標について見ていきたいと思います. また, 次回も楽しみにしてくださると幸いです.
*1:M. Shcherbakov, A. Brebels, N. L. Shcherbakova, A. Tyokov, T. A. Janovsky, and V. A. Kamaev, "A Survey of Forecast Error Measures," in WASJ, 2013