ノウハウ

PrecisionとRecallを何度も調べ直さないために

機械学習において基本的かつ重要な概念であるものの、「覚えにくい」「ややこしい」という声がたびたびあがるのがPrecisionとRecall。

今回は調和技研の研究開発部所属の石岡に、PrecisionとRecallの違い、覚え方について執筆してもらいました。

目次

何度確認しても憶えられないものは無いだろうか。私にはある。PrecisionとRecallだ。

Accuracyはわかる。精度で、予想が何%あたるかだ。

適合率、再現率という訳があることは知っているが、どっちがどっちか混乱する。どちらかわかっても何を表しているのかすぐには想像できない。そもそも適合、再現は何を表してるんだ?

何度も調べるのは時間のムダになって嫌だ。わかっているつもりではあるのに、調べ直すのは徒労感が強い。この機会に、いったん真剣に調べて考え、理解することで忘れないようにしたい。

問題は、言葉の意味を実感として理解できていないことだ。

よく考えることで、理解が深まり忘れなくなるのではないか。

日本語の良い呼び方があれば、容易に理解できるようになるのではないか。


機械学習において非常に基本的かつ重要な概念であるため繰り返し出現するが、私はその度に調べ直している。

似たような人はたくさんいるはずだ。そうした人々が何度も「Precision 意味」とか検索する回数が少しでも減ると良い。

定義と現状把握

定義を説明する際には、主にテーブルが用いられる。

ここで Positive, Negative は予測値が正、負のそれぞれを表しており、

True Positive は正と予測して真に正だった場合、

True Negative は負と予測して実際に負だった場合、

False Positive は正と予測したが実際は負だった場合、

False Negative は負と予測したが実際は正だった場合、

のそれぞれの観測された頻度が入る。


そしてこの表の時点で既にわかりにくいことが多い。


Positive, Negative は予測値の陽性、陰性を言っているが、True と False は予測が合っているか否かであって、真の値が正か負かではないところに注意が必要だ。

ここで(正、負)と書いているものも、(陽性、陰性)だったり(+、-)だったり、(1,0)だったり、(真、偽)だったりと書き方が多くある。

今回のこれを書く際も、「予測値を陽性、陰性にして、真の値を真、偽にすると縦軸と横軸の違いがわかりやすくなるのでは?」と考えたが、そうするとTP,FP,TN,FNの縦軸が合わなくなってしまう。


その上で、よく使われる精度の指標は次のように計算される。


1.accuracy

 \( {Accuracy} = \frac{TP + TN}{TP + FP + TN + FN}\) 

2.precision

 \( Precision = \frac{TP} {(TP+FP)}\)

 TP+FPは正と予測したものの総数、TPは正の予測合っていた数なので、「正と予測したデータのうち、実際に正であるものの割合」になる。

3.recall

 \( {Recall} = \frac{TP} {(TP+FN)}\)

 TP+FNは真の値が正であるものの総数、TPは正の予測合っていた数なので、「真に正であるデータのうち、正と予測したものの割合」になる。

現在利用されている訳

日本語訳としては次のようなものが使われている。

1.Accuracy

 a.精度、正解率

 b.正答率、正確さ、正確度、精確さ、確度、総合精度

2.Precision

 a.適合率、適合度

 b.精度

3.Recall

 a.再現率、再現度

 b.感度、回収率

提案手法

目標は、もうPrecisionとRecallを調べ直さなくても良くなること、もしくは調べ直す回数を減らすことである。そのためには内容を理解して、記憶を定着させる必要がある。そのために次の3つの方法を検討した。

1.情報検索の文脈で考える

仮説:適合率、再現率は元々、情報検索やデータベース分野の用語ではないか

そもそも適合率、再現率はどのような文脈で使われるようになったのだろうか。私は情報検索の分野なのではないかと考えている。

証拠は見つけられなかったが、情報検索だと仮定すると理解しやすい。まず、1940年代からある重要な応用分野で、歴史が古い。それに、実際に情報検索の文脈で考えると、訳語が理解しやすいと感じる。   


・Precision(適合率:正と予測したデータのうち,実際に正であるものの割合)について

 ⚪︎大量のデータから検索した結果のドキュメントに、求める単語が実際に入っている確率(適合する確率)はどの程度か。データ全体は巨大すぎてわからない。検索できなかったものは知ることができないため無視

 ⚪︎検索結果として取り出された集合がどのくらい「適合しているか」

・Recall(再現率:実際に正であるもののうち,正であると予測されたものの割合)について

 ⚪︎検索した結果が、検索したいもの全体を、どれくらい再現できているか

 ⚪︎DBの中に検索したいものがどれくらいあるかはわかっていて、それをどの程度「再現できたか」

上記の感覚も、大量のものから少量のものを抽出する前提があれば、理解しやすい。

2.英語の雰囲気で覚える

Precision, Precise

•Precision 英辞郎 on the WEB

 ⚪︎名

  ▪︎1.正確さ、精密さ 

  ▪︎2.的確さ、明確さ

  ▪︎3.《数学》精度◆計算の結果得られる数値の、仮数部の桁数で表される、計算の精度。

 ⚪︎形

  ▪︎1.〔機器などが〕精密に作られた、精密測定用の  

    〔計算が〕精度の高い、誤差が少ない

  ▪︎2.〔動作が〕正確な、狂いがない

・precise (oxford learners dictionaries)

 ⚪︎1.clear and accurate

 ⚪︎2.[only before noun] used to emphasize that something happens at a particular time or in a particular way

 ⚪︎3.taking care to be exact and accurate, especially about small details

Precisionは「正と予測したデータのうち,実際に正であるものの割合」だが、上記の語釈からも「細部が正確」という意味で、今手元にある検索結果の正しさを想像することに近い印象がある。      

Recall

・Recall Recallの意味・使い方 

 ⚪︎他動

  ▪︎1.思い出す、思い起こす

  ▪︎2.〔不良製品を〕回収する

  ▪︎3.呼び戻す、撤回する

 ⚪︎名

  ▪︎1.思い出す[起こす]こと、想起、回想力

  ▪︎2.呼び戻し、召還、更迭

  ▪︎3.取り消し、撤回

  ▪︎4.リコール、欠陥商品回収、不良品回収

  ▪︎5.改修◆医療機器や自動車などを回収しないで不良部分だけ交換すること

  ▪︎6.《情報検索》再現率

Recallは「実際に正であるもののうち、正であると予測されたものの割合」で、言葉の意味としての 「リコール」から、世の中に出回ってしまった製品(真に正の集合)をどれだけ回収できたかを想像できる。 

3.意味を表す言葉を考えてみる

最初の表を考える場合、今回は正、負の分類で考えたが、次のような表現も考えられる。この時点でも難しさがある。


・正 / 負 (Plus / Minus)

 ⚪︎数学。0以上と0未満の数値。

・真 / 偽 (True / False)

 ⚪︎論理学で使う。正しい命題と誤った命題。

・陽性 / 陰性 (Positive / Negative)

 ⚪︎医学で使う。試薬によって病原体や抗体が検出されることと、検出されなかったこと。

 ⚪︎一般的な日本語としては、陽気なこと/陰気なこと。辞書ではこちらが先に解説されている。例えば病原菌が検出された場合、医学的にはポジティブ(陽性)だが気分的にはネガティブ(陰性)になる。

・関係 / 無関係 (Relevant / Irrelevant)

・検出 / 非検出 (Detected / Not detected)


その上で、Precision と Recall について考えてみよう。


・Precision

分母(緑)は予測値が正のもの。その中で真に正のもの(赤)の割合の計算になる。

予測で正を多くすると、False Positiveが増えてしまうので、Precision を大きくするには、予測時点で正を多くし過ぎない必要がある。

予測で陽性になったものが正解する確率なので「陽性正解率」。予測の時点で正の値を取りすぎると Precision が下がる。Precision を高くするには取りすぎないことが重要なので、「取りすぎない率」などが案として考えられるだろうか。


・Recall

分母(緑)は真の値が正のもの。その中で正と予測できたもの(赤)の割合の計算になる。

Recall は予測で全てを正にすることで容易に100%にできるが、そうすると Precision が下がってしまう。そのため、Precision と Recall はトレードオフになることも多い。

真に正である対象をどの程度手に入れられるかなので、「対象回収率」、欲しい対象を取り漏らさない確率なので、「取り漏らさない率」などが案として考えられるだろうか。

まとめ

Precision と Recall の覚え方について、以下の3つの方針から考えた。

  1. 情報検索の文脈で考える
  2. 英語の雰囲気で覚える
  3. 意味を表す言葉を考えてみる

Precisionは適合率と呼ばれることが多いが、陽性正解率、取りすぎない率なども覚えやすい。

Recallは再現率と呼ばれるが、対象回収率、取り漏らさない率だと覚えやすい。

他にも良い表現や覚え方があれば教えてください。「変な訳語を増やすな」というのも大切なご意見だと思いますが、私は適合率、再現率では憶えられなかったのです……。

Perplexity など他にも理解が難しい言葉はたくさんあるので、忘れないようにする方法を募集中です!

記事を書いた人
石岡卓也

2007年に北海道大学大学院博士課程修了。 2020年より株式会社調和技研でシステム開発や人材育成事業に従事。 複雑ネットワークとしてのSNSの研究や、ニュース記事の分類システム、コンテンツの推薦システムの開発等を経験。現在は言語分野の研究開発を行うとともに、Sapporo AI Laboのプロジェクト「札幌AI道場」において技術指導とチームのメンターを担当している。