HELLO CYBERNETICS

深層学習、機械学習、強化学習、信号処理、制御工学、量子計算などをテーマに扱っていきます

抑えておきたい評価指標「正解率」「精度」「再現率」

 

 

follow us in feedly

f:id:s0sem0y:20170505205306p:plain

 

評価の指標を1つじゃない

はじめに

機械学習による分類を行った場合に、その手法が従来より優れているか否かを判断したいという場面に遭遇します。

その際、分類を適切にできた数の割合である「正解率」に着目したくなりますが、実は評価の方法はコレ以外にも複数存在します。

 

正解率

正解率は、テストデータがn個ある際に、予測結果が正解であった数をaとして

 

\frac{a}{n}

 

で表現されます。

最も直感的で分かりやすい評価指標です。

 

再現率

nクラス分類でクラスがC_1,C_2,...,C_mm個があったとしましょう。

 

「再現率」という場合には、「クラスC_1に対する精度」という具合に、あるクラスについて評価をすることになります。

 

クラスC_1のテストデータがn_1個あるとしましょう。理想的には学習によって得られた分類器が、n_1個のデータ全てをC_1と判定して欲しいところですが、実際にはそうはいきません。

 

ここでC_1のテストデータn_1個のうちx個が正しく分類され、y個が間違って他のクラスに分類されたとしましょう(他のクラスのどれであるかは問わない)。このとき、C_1に対する再現率は

 

\frac{x}{x + y}=\frac{x}{n_1}

 

というように定義されます。

本来すべて分類が上手くいけばx+y=n_1個がC_1と分類されるべきです。実際にはx個しか分類されなかった場合に、その割合が再現率となります。

 

再現率と言った時には、あるクラスに着目しており、そのクラスに属するデータのみで議論をしているということに注意してください。端的に言えば再現率は「クラスC_iのすべてデータに対して実際にクラスC_iと判断できる割合」です。

 

同様に、クラスC_iについて精度を考えたければ、クラスC_iに属するn_i個のデータのうち何個が正しくC_iと判断されたかの割合を考えればいいです。

 

 

 

精度

nクラス分類でクラスがC_1,C_2,...,C_mm個があったとしましょう。

 

こちらもC_1に対する精度という具合に扱います。

 

分類器がC_1に属するw個のデータを正しくC_1に分類したとしましょう。しかし場合によっては、C_1属していないz個のデータもC_1と分類してしまうこともあるでしょう。

このとき、C_1の精度とは

 

\frac{w}{w+z}

 

と定義されます。

再現率のときとは違い、分母のz個のデータはC_1に属していないデータです。

 

精度の場合は着目しているクラス以外のデータも指標に混在していることに注意してください。端的に言えば精度とは、「クラスC_iと判断したすべてのデータのうち、実際にC_iであった割合」です。

 

 

分割表

再現率と精度を計算する際に、あるクラスC_iに対する分割表を使うと便利です。

分割表とは

C_iに属するデータをC_iと分類した数a_i

C_iに属さないデータをC_iと分類した数b_i

C_iに属するデータをC_i以外に分類した数c_i

C_iに属さないデータをC_i以外に分類した数d_i

を以下の表形式にまとめたものです。

 

C_iの分割表
C_iに属する C_iに属さない
C_iと分類 a_i b_i
C_i以外に分類 c_i d_i

 

 

C_iの再現率はこの表に従えば

 

\frac{a_i}{a_i+c_i}

 

と表記されることとなります。

C_iの精度はこの表に従えば

 

\frac{a_i}{a_i+b_i}

 

と表記されることになります。

 

 

評価の方法

精度と再現率のトレードオフ

再現率は「クラスC_iのすべてデータに対して実際にクラスC_iと判断できる割合」で、精度は「クラスC_iと判断したすべてのデータのうち、実際にC_iであった割合」でした。

もしも分類器が、少しでもC_iっぽいなと感じればC_iと判定してしまうようになっていれば、再現率は向上します。一方で、C_iでないものも混じってくるため精度は落ちます。

 

逆に、かなりC_iである確信を持った時のみC_iと判定するようにした場合は、C_iに属するはずのデータも弾く場合があるため再現率は低下する一方で、C_iでないようなデータをかなりの確率で弾けるために精度は向上します。

 

 

F値

分類器は再現率と精度に対してトレードオフを持っているため、これらを統合して評価できる指標が必要になります。その指標の1つがF値です。

F値は、再現率をRec、精度をPreとした場合に

 

\frac{2Rec・Pre}{Rec+Pre}

 

で定義されます(調和平均)。F値を大きくするような分類器を良いものと判断します。

 

break-even

精度と再現率が等しくなるような点を「break-even」とよびます。

精度と再現率についてx-y座標にプロットしたデータを取り、y=xとの交点を求めますが、プロットした点が必ずしもy=x上にあるとは限らないため、通常は近い2点を線形補間して求めます。

 

注意点

精度や再現率、F値はいずれにしても「とあるクラスC_i」に着目しているものです。

精度も再現率も、データがC_iに属するか否かの二値を評価しているのであって、C_iに属するはずがC_kに分類しているとか、C_jのデータをC_iと判定しているとか、細かいことまでは評価していません。あるクラスに対して正しいか否かであり、どのような間違え方をしているかまでは評価できないということです。

 

 

 参考

 

言語処理のための機械学習入門 (自然言語処理シリーズ)

言語処理のための機械学習入門 (自然言語処理シリーズ)