評価の指標を1つじゃない
はじめに
機械学習による分類を行った場合に、その手法が従来より優れているか否かを判断したいという場面に遭遇します。
その際、分類を適切にできた数の割合である「正解率」に着目したくなりますが、実は評価の方法はコレ以外にも複数存在します。
正解率
正解率は、テストデータが個ある際に、予測結果が正解であった数をとして
で表現されます。
最も直感的で分かりやすい評価指標です。
再現率
クラス分類でクラスがの個があったとしましょう。
「再現率」という場合には、「クラスに対する精度」という具合に、あるクラスについて評価をすることになります。
クラスのテストデータが個あるとしましょう。理想的には学習によって得られた分類器が、個のデータ全てをと判定して欲しいところですが、実際にはそうはいきません。
ここでのテストデータ個のうち個が正しく分類され、個が間違って他のクラスに分類されたとしましょう(他のクラスのどれであるかは問わない)。このとき、に対する再現率は
というように定義されます。
本来すべて分類が上手くいけば個がと分類されるべきです。実際には個しか分類されなかった場合に、その割合が再現率となります。
再現率と言った時には、あるクラスに着目しており、そのクラスに属するデータのみで議論をしているということに注意してください。端的に言えば再現率は「クラスのすべてデータに対して実際にクラスと判断できる割合」です。
同様に、クラスについて精度を考えたければ、クラスに属する個のデータのうち何個が正しくと判断されたかの割合を考えればいいです。
精度
クラス分類でクラスがの個があったとしましょう。
こちらもに対する精度という具合に扱います。
分類器がに属する個のデータを正しくに分類したとしましょう。しかし場合によっては、に属していない個のデータもと分類してしまうこともあるでしょう。
このとき、の精度とは
と定義されます。
再現率のときとは違い、分母の個のデータはに属していないデータです。
精度の場合は着目しているクラス以外のデータも指標に混在していることに注意してください。端的に言えば精度とは、「クラスと判断したすべてのデータのうち、実際にであった割合」です。
分割表
再現率と精度を計算する際に、あるクラスに対する分割表を使うと便利です。
分割表とは
に属するデータをと分類した数
に属さないデータをと分類した数
に属するデータを以外に分類した数
に属さないデータを以外に分類した数
を以下の表形式にまとめたものです。
の分割表 |
に属する | に属さない |
と分類 | ||
以外に分類 |
の再現率はこの表に従えば
と表記されることとなります。
の精度はこの表に従えば
と表記されることになります。
評価の方法
精度と再現率のトレードオフ
再現率は「クラスのすべてデータに対して実際にクラスと判断できる割合」で、精度は「クラスと判断したすべてのデータのうち、実際にであった割合」でした。
もしも分類器が、少しでもっぽいなと感じればと判定してしまうようになっていれば、再現率は向上します。一方で、でないものも混じってくるため精度は落ちます。
逆に、かなりである確信を持った時のみと判定するようにした場合は、に属するはずのデータも弾く場合があるため再現率は低下する一方で、でないようなデータをかなりの確率で弾けるために精度は向上します。
F値
分類器は再現率と精度に対してトレードオフを持っているため、これらを統合して評価できる指標が必要になります。その指標の1つがF値です。
F値は、再現率を、精度をとした場合に
で定義されます(調和平均)。F値を大きくするような分類器を良いものと判断します。
break-even
精度と再現率が等しくなるような点を「break-even」とよびます。
精度と再現率について座標にプロットしたデータを取り、との交点を求めますが、プロットした点が必ずしも上にあるとは限らないため、通常は近い2点を線形補間して求めます。
注意点
精度や再現率、F値はいずれにしても「とあるクラス」に着目しているものです。
精度も再現率も、データがに属するか否かの二値を評価しているのであって、に属するはずがに分類しているとか、のデータをと判定しているとか、細かいことまでは評価していません。あるクラスに対して正しいか否かであり、どのような間違え方をしているかまでは評価できないということです。
参考