読者です 読者をやめる 読者になる 読者になる

adish intelligence

アディッシュ株式会社のエンジニアブログです。

過誤(分割表)と二値分類の性能評価について

こんにちは、ALICEチーム*1の白木です。

今回は機械学習の性能評価の中で、最も基本的な"二値分類の性能評価"について投稿します。

二値分類とはその名の通り、例えば「真 / 偽」「リンゴである / リンゴでない」「捨てるもの/ 捨てないもの」のように、二種類のグループに分ける作業のことで、二項分類・二クラス分類と呼ばれることもあります。

機械学習のように確率論の上で成り立つ技術において、機械がこの分類作業を「正しく行えているか」評価を行った上で、リリースなどの判断を行うべきで、そうした性能評価はとても重要です。実際、機械学習はそれそのもののアルゴリズムを理解・習得するのも重要ですが、どうやって評価を行うのか、の観点も同時に必要となります。

そこで、二値分類の性能評価を行う上で、抑えておくべきワードの「過誤」「分割表」「評価指標」についてまとめて紹介します。

過誤

過誤とは「あやまり」の意味であり、機械学習の文脈で話すと、分類を行った結果の「間違え方」を表すワードとして用いられます。
この過誤は特に「第一種過誤」と「第二種過誤」と呼ばれる定義として知られています。

第一種過誤

第一種過誤とは「偽陽性」とも呼ばれ、文字通りに解釈すると「ニセの陽性」です。
つまり 「本来陰性であるが、陽性と(間違えて)判断した」 状態を指す言葉です。

ここで言う「陽性」とは「リンゴである / リンゴでない」の二値分類で言えば「リンゴである」という属性を持つ状態のことを指し、「陰性」は「リンゴでない」という属性を持つ状態のことを指します。*2

第二種過誤

第二種過誤とは「偽陰性」とも呼ばれ、文字通りに解釈すると「ニセの陰性」です。
つまり 「本来は陽性であるが、陰性と(間違えて)判断した」 状態を指す言葉です。

分割表

以上の2種類の過誤の定義を踏まえて、判断を下した結果は以下の4つの条件に分類することができます。
以下のような表は「分割表(Confusion Matrix)」と呼ばれ、二値分類の結果を簡単に眺めることができるので、この表を元に結果をまとめると良いです。

f:id:shirakiya:20161128155118p:plain

「実際の状態」は、判定対象物が実際に持つ状態を指し、二値分類では正例に該当する場合は「Positive」、負例に該当する場合は「Negative」と表します。
「判定結果」は、分類器が結果として出力する分類結果のことを指し、二値分類では正しく分類することができた場合は「True」、間違えて分類した場合は「False」と表します。*3

4つの条件それぞれには「True Positive(TP)」というような名称が付けられています。

  1. True Positive (TP)(実際に正例であるものを正例と判断したもの)
  2. False Negative (FN)(実際には負例であるものを正例と判断したもの、第一種過誤)
  3. False Positive (FP)(実際には正例であるものを負例と判断したもの、第二種過誤)
  4. True Negative (TN)(実際には負例であるものを負例と判断したもの)

1つのケースとして、今まで説明で使っていた「リンゴである / リンゴでない」の場合だと、分割表は以下のようになります。

f:id:shirakiya:20161201092151p:plain

性能評価指標

次に性能評価。二値分類での性能評価によく用いられる指標は、

  • 正答率(Accuracy)
  • 適合率(Precision)
  • 再現率(Recall)
  • F値(F-measure)

の4つです。それぞれの指標について説明していきます。

正答率(Accuracy)

正答率(Accuracy)は、判定結果と実際の状態がどれだけ一致しているかを表す指標です。つまり 全体の判断の正しさ を表す指標となります。
計算式は以下の通り。

f:id:shirakiya:20161128155941p:plain

分割表で言うと、オレンジ枠で囲った全ての条件に該当したものの総和を使って、オレンジ背景にした条件に該当したものの和を割った数字となります。

f:id:shirakiya:20161128160003p:plain

ただし、正答率は評価に用いるデータのそれぞれのPositive/Negativeデータ点数の大小の影響を受けやすい数値であり、本当に正しさを測れているのかどうかに注意する必要があります。(極端に考えると、Positiveなデータが9,990個あるのに対してNegativeなデータが10個しかない場合で、TPが9,990、TNが0だとしたら、9990/10000 = 0.999 となりますがTNは全く上手く判定できていない、という状態になります)

適合率(Precision)

適合率(Precision)は、正しいと判定した結果に対して、実際の状態が正であるものの割合です。つまり 判定した結果の正しさ(正確性) を表す指標となります。
計算式は以下の通り。

f:id:shirakiya:20161128161304p:plain

分割表で表すと、True Positive(オレンジ背景)を、判定結果が正例なものの総和(オレンジ枠)で割ったものです。

f:id:shirakiya:20161128161342p:plain

「確実にリンゴであるものを抽出して欲しい」というような要求の場合は、この適合率で高い数値を出している状態が望ましい、ということになります。
また、上記の計算式では「正例の判定」に着目していますが、逆に「負例の判定」に対しても同様の考え方で導入可能です。

再現率(Recall)

再現率(Recall)は、実際の状態が正のものに対して、正しいと判定した結果の割合です。つまり 実際に正の状態のものをどれだけ正と判定して網羅しているか(網羅性) を表す指標となります。 計算式は以下の通り。

f:id:shirakiya:20161128161856p:plain

分割表で表すと、True Positive(オレンジ背景)を、実際の状態がPositiveなもの(オレンジ枠)で割ったものです。

f:id:shirakiya:20161128161923p:plain

「リンゴであるものの取りこぼしを極力小さくして欲しい」というような要求の場合は、この再現率で高い数値を出している状態が望ましい、ということになります。

F値(F-measure)

統計的に誤差が発生しうる分類器において、適合率と再現率はトレードオフの関係にあります。
つまり、適合率を高くしようとすれば、(例えばより厳しい閾値等が用いられた上で正と判断させるようにするため)TPの絶対値が小さくなり、その分FPが大きくなります。ゆえに上記計算式より再現率が低下してしまいます。

F値(F-measure)は、このトレードオフ状態を考慮して、総合的な性能の評価尺度として適合率・再現率の調和平均を取ったものです。
計算式は以下の通り。

f:id:shirakiya:20161128162444p:plain

つまり

ベン図で考えることとします。

f:id:shirakiya:20161129102655p:plain

ピンク色の集合が「判定した結果、正例だと判断した集合」で、緑色の集合が「実際に正例である集合」を表すとします。
究極的には、この二色の集合が一致している状態が理想的な状態だが、そんなわけにもいきませんので、適合率・再現率をそれぞれ大きくなるように振るとどうなるのかを図示してみます。

適合率が大きくなるように振った場合

適合率が大きくなるように振った分類器の場合、ベン図は以下のようになります。

f:id:shirakiya:20161129102710p:plain

適合率の計算式から、

「適合率が大きくなる」=「FNが小さくなる」

なので、上のベン図のように「正例と判断した集合の面積(ピンク色の集合の面積)」に対して「TPの集合の面積の割合(ピンク色の集合と緑色の集合が重なり合っている領域)」が大きくなっている様子が見て取れるかと思います。つまり「正例と判断した結果、実際に正例であることが多い状態」が直感的に理解できると思います。
これは本当に正しいと厳しく判断したものを正と判定するような分類器であり、同時に、網羅度を表す再現率が小さくなることがこの図からわかります。

再現率が大きくなるように振った場合

一方で、再現率が大きくなるように振った分類器の場合、ベン図は以下のようになります。

f:id:shirakiya:20161129102723p:plain

再現率の計算式から、

「再現率が大きくなる」=「FPが小さくなる」

なので、上のベン図のように「Positiveである集合の面積(緑色の集合)」に対して「TPの集合の面積の割合(ピンク色の集合と緑色の集合が重なり合っている領域)」が大きくなっている様子が見て取れると思います。見方を変えると「正例と判断した集合(ピンク色の集合)」が「Positiveである集合」を覆っている状態でもあります。これが、まさに再現率を大きくすると"網羅度"が大きくなっている効果を表しています。

まとめ

  • 過誤(第一種過誤、第二種過誤)
  • 分割表
  • 評価指標項目

について、二値分類の文脈から紹介しました。機械学習において、このような評価指標(評価関数)を用いて、分類器等の性能評価を行うことが求められます。
当然、問題設定によって使うべき評価関数は変わってくるため、新たに取り組む際には注意して選定することが重要です。
タスクに適さない評価を用いている場合は、本番稼働させた際に全然機能せず、地獄を見ること必至なのでよく注意して取り組みましょう!(自戒)

*1:ALICEチームとは機械学習に関する開発を行っているチームです。アディッシュの技術開発部のチーム構成については以前投稿した記事をご覧頂ければと思います。

*2:通常は「リンゴである」を陽性と捉えて進めることが多いですが、一方で「リンゴでない」側を陽性としてしまっても良く、取り組んでいるタスクの性質を元に何を陽性にするかを決めます。

*3:ケースによっては、判定結果において正例に該当した場合を「True」、負例に該当した場合を「False」とすることもあるようです。