混同行列からモデルの改善を判断する指標(再現率と適合率)を解説してみた

混同行列からクラス分類(教師あり学習)において、よく使われる再現率や適合率という指標まで解説しました。
2022.07.04

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

どうも、皆さんこんにちは。 hotoke_nekoです。

機械学習をしていると「モデルの予測をより良くしたい」という場面に出会う事があると思います。 今回は混乱しがちな混同行列(confusion matrix)を手始めに、再現率(recall)や適合率(precision)について解説してみます。

話す事と話さない事

今回は概念の説明です。したがって、話す事と話さない事は以下のようになります。

  • 話す事
    • 混同行列について
    • 混同行列から算出できる再現率と適合率について
  • 話さない事
    • 実データを使ったプログラミングの方法

混同行列とは?

混同行列とは一言で言うと、予測とその予想の正解かどうかの組み分けを表にまとめたものです。 また、機械学習のモデルにおいて予測をより良くするために使う指標である再現率や適合率と呼ばれるもので、クラス分類(教師あり学習)において使用されるものです。

本記事では2クラス分類における混同行列で得られた数値から、どういった場面でその数値を使っていくのか(ひいてはどの指標を使うのか)ユースケースの形で紹介していきます。

基本的な用語

ユースケースを通して伝える前に次の混同行列の表をご覧ください。

confusion_matrix

この表のように2つに分類する場合は、予測2種類×実際のデータの正負2種類の合計4種類に予測結果を分類する事が可能です。文章化すると次の通りです。

  • 予測が当たった場合
    • 実データが正のデータ(True Positive)
    • 実データが負のデータ(True Negative)
  • 予測が外れた場合
    • 実データが正のデータ(False Positive)
    • 実データが負のデータ(False Negative)

予測が当たった場合は良いのですが、予測が外れた場合にどのように予測向上のための対応をしていくのか考える必要があります。その時の指標として、再現率と適合率があります。

再現率

再現率の式は次のようになります。 Recall

False Negativeとは実際には正のデータであるにもかかわらず、負であると予測・分類されたものです。 つまり、この式の意味は、全ての正のデータ(分母)において、正であると予測できたもの(分子)となります。

False Negativeが小さければ小さいほど、値は1に近づきます。(つまり、予測が正しいほど1に近くなる。)

また、False Negativeを小さくしたい場合というのは、予測の中で、実データで正のものを取りこぼさないようにしたい、という事です。

適合率

適合率の式は次のようになります。 precision

False Positiveは実際には、負のデータなのに正であると予測・分類されたものです。 この式の意味は、全ての正であると予測したデータ(分母)において、実際に正のデータであるもの(分子)となります。

False Positiveが小さければ小さいほど、値は1に近づきます。(つまり、予測が正しいほど1に近くなる。)

また、False Positiveを小さくしたい場合というのは、負のデータを正として予測したくない、という事です。

次からは、ユースケースごとにクイズ形式で、どちらを使うべきか一緒に考えましょう。

ユースケースの前提

Aくんというたけのこの里がとても大好きな少年と、Bさんというどちらかと言うときのこの山が好きな少女がいます。

たけのこの里が好きな少年ときのこの山が好きな少女

バラエティパックを買ってみるとそれぞれのパックが入っていますが、誤って両方のパックを開けてしまい、一緒にしてしまいました。 量も多い事ですし、AくんとBさんはロボットにお願いして良い感じに仕分けてもらう事にしてもらいました。

※今回の仕分けでは、たけのこの里を正、きのこの山を負で分類する事とします。

混同行列は次のようになります。(画像のたけのこときのこは実データに合わせて配置しています。) confusion_matrix_kinoko_and_takenoko

たけのこの里だけ食べたいAくんの場合

さて、Aくんはたけのこの里だけを食べたいです。 そのため、ロボットにお願いしたい事は出来るだけきのこの山を入れないようにする事です。

Question

ロボットの仕分けにおいて小さくしてほしい値はFalse PositiveとFalse Negativeのどちらでしょうか? 言い換えると、適合率と再現率のどちらの値をより良くしてほしいでしょうか?

正解はこちらをクリック

この場合の焦点は、たけのこの里を仕分け損なう可能性はありますがそれ以上に「きのこの山を含めない」という強い条件があるので、そちらに注目します。

正解は、False Positiveを小さくしたいので適合率、という事になります。

このユースケースから分かる通り、適合率は正確性を意識するものという事です。

きのこの山を多く食べたいBさんの場合

さて、Bさんはきのこの山を食べたいですが、たけのこの里が混じっていても気にしません。それよりもきのこの山を出来るだけ食べたいと思います。 そのため、ロボットにお願いしたい事は予測を外した場合でも、きのこの山を出来るだけ入れてほしいという事です。

Question

ロボットの仕分けにおいて小さくしてほしい値はFalse PositiveとFalse Negativeのどちらでしょうか? 言い換えると、適合率と再現率のどちらの値をより大きくしてほしいでしょうか?

正解はこちらをクリック

正解は、False Negativeを小さくしてほしいので再現率の方です。 この場合の焦点は、きのこの山の仕分けが出来るならば、「たけのこの里が混じっていても気にしない」という所です。

このユースケースから分かる通り、再現率は網羅性を意識するものです。

終わりに

いかがだったでしょうか。混同行列から再現率と適合率についてお話ししました。 他の指標として、特異率(specificity)というものや「再現率と適合率のどちらも考慮したい」という場合に使うf1値というものもございます。気になった方は、是非お調べください!

本日はここまで。

それでは、また!