Web Analytics Made Easy - StatCounter

工業大学生ももやまの大学生活日記

4年間+2年間の工業大学・大学院で学んだ知識やためになることを投稿していきます

条件付き確率の面白さ 再現率・適合率

こんにちは! ももやまです!

今日は高校生でもわかる確率から、実際に確率がどのようなところで使われているかをまとめてみました!
この記事は情報系で習うであろうとある講義の「再現率」・「適合率」についての説明でもあるので、「再現率」・「適合率」などを聞いたor習うって人はぜひ予習or復習してみてください。

「再現率」・「適合率」を習ってない人、もしくはこれから絶対に習わないであろう人でも具体例などでわかりやすく説明したので、情報系のお勉強をしないであろう人でも読める記事となっています!

条件付き確率についてまだいまいちわかってないという人はこちらの記事をご覧ください。表や図などを使ってわかりやすく説明しています。

www.momoyama-usagi.com


1.条件付き確率ってこんなにかわるんだね!

昨日、とあるフォロワーさんがすごく面白い確率の問題を紹介してくれた。

  

早速この問題を解いてみよう。
とりあえず合計の人数を100万人と仮定する。
1万人に1人で割合で人間に感染しているということは、100万に100人の割合で人間に感染していることがわかる。
また、100人の陽性(感染している判定の人)が実際に感染しているのは99人。
99万9900人の陰性(感染していない判定の人)が実際に感染していない可能性は98万9901人。これを表にしてみた。

 

  陽性 陰性 合計
感染してる 99 1 100
感染してない 9,999 989,901 999,900
合計 10,098 989,902 1,000,000

 

 求めたいのは、陽性(感染してる)判定のときに実際に少女が感染している(条件付き)確率である。つまり、 99 \div 10098 \approx 0.0098 = 0.98 \mathrm{(\%)} と計算でき、答えは約 1 [%] となる。 \approx は「およそ」という意味です。

あれ、なんでこんなに精度低いの!?

って思った人もいるはずだ。こんな検査が世に出回ったら大変なことになる。
このシステムが99%の精度で検査をしているのに実際に陽性と言われた人が感染している可能性1%にはとある1つの理由がある。それは、1万人に1人しか感染しないウィルスなのに、感染していない人を陽性判定にしてしまっているところにある(業界用語で言うと、偽陽性が高いということ)。

2.検査における3つの指標

ここで、検査のやり方がどれくらい優れているのかを評価するための3つの指標を説明しましょう。これらの3つの指標は機械学習とかでも使うことがあります。

1. 再現率 Recall 
  陽性 陰性 合計
感染してる 99 1 100
感染してない 9,999 989,901 999,900
合計 10,098 989,902 1,000,000

 

実際に感染している人の中からどれだけ検査で見つけることができるかという確率である。数学っぽく言うと、感染している人の中で、その人が陽性である条件つき確率となる。今回の例で言うと、 99 \div 100 = 99 \mathrm{(\%)} となる。

 

2. 適合率 Precision
  陽性 陰性 合計
感染してる 99 1 100
感染してない 9,999 989,901 999,900
合計 10,098 989,902 1,000,000

実際に陽性判定が出た人の中で、その人が感染している確率を表す。数学っぽく言うと、陽性判定の人の中で、その人が感染している条件つき確率となる。今回の問題で計算したのは、この適合率となる。計算結果は約 0.98 [%] となる。

3. F値 F-measure

再現率、適合率の両方の観点から良いシステムかどうかを判定するための指標となる。計算方法は、再現率 R と適合率  P の調和平均となる。具体的に数式で書くと、F値  F は、

 F = \frac{2 RP}{R+P}    (ただし  0 \leqq F \leqq 1)

となる。ちなみに今回の問題の場合だとF値は約 0.02 となり、ありえないほど検査のレベルが悪いということがわかる。
F値を出すときにただの平均ではなく、なぜ調和平均を取るかは余裕があるときにでも説明しようと思う。

 

ここでとある人が思うだろう。
再現率も適合率も完璧な(F値が 1 の)システムを作れないのか?と。
コストをすごくかければできるかもしれない。しかし、基本的には再現率と適合率を両立させることはできない。

感度を上げれば感染している人を陽性判定しやすくなるので再現率は上がるかもしれないが、その分誤報(感染していない人に陽性判定を出す)が増えてしまうので適合率を下がってしまう。

逆に感度を下げれば誤報(感染していない人に陽性判定を出す)が増えてしまうので適合率は上がる。しかし、実際に感染している人を陽性判定することは難しくなるため、再現率は下がってしまう。

つまり、再現率と適合率はトレードオフの関係である。

 

3.感度による再現率・適合率の比較

実際にトレードオフであることを3つの例で確認してみよう。
感染率2%の病気があり、1万人の患者の中から実際に感染している人を見つけ出すという検査を3パターン行う。

1.基本パターン

この検査は陽性患者200人のうち170人が実際に感染していて、陰性患者が9,800人だった。これを表に表すとこのような結果になった。

  陽性 陰性 合計
感染してる 170 30 200
感染してない 30 9,770 9,800
合計 200 9,800 10,000

 この場合の再現率と適合率とF値は、

再現率: 170 \div 200 = 85 \mathrm{(\%)}
適合率: 170 \div 200 = 85 \mathrm{(\%)}
F値:0.85

となる。いわゆるバランス型である。

 

2.感度強化パターン

1のときよりも感度を上げた場合を考える。

この検査は陽性患者250人のうち190人が実際に感染していて、陰性患者が9,750人だった。これを表に表すとこのような結果になった。

  陽性 陰性 合計
感染してる 190 10 200
感染してない 60 9,740 9,800
合計 250 9,750 10,000

 この場合の再現率と適合率とF値は、

再現率: 190 \div 200 = 95 \mathrm{(\%)}
適合率: 190 \div 250 = 76 \mathrm{(\%)}
F値:0.84

となる。感度を上げると再現率が上昇するが、適合率が下がることがわかる。

 

3.感度弱体化パターン

今度は1のときよりも感度を下げた場合を考える。

この検査は陽性患者155人のうち150人が実際に感染していて、陰性患者が9,845人だった。これを表に表すとこのような結果になった。

  陽性 陰性 合計
感染してる 150 50 200
感染してない 5 9,795 9,800
合計 155 9,845 10,000

 この場合の再現率と適合率とF値は、

再現率: 190 \div 200 = 75 \mathrm{(\%)}
適合率: 190 \div 250 \approx 97 \mathrm{(\%)}
F値:0.85

となる。感度を下げると適合率は上昇するが、再現率は減少することがわかる。

 

4.実際のシステムをみてみよう!

 実際のシステムはどうなの?

ここからは、再現率を重視した検査システムを導入しているものと、適合率を重視した検査システムを導入したものの具体例(たまに仮想のものあり)を2つずつあげてみましょう。

(a) 再現率重視なもの

1: 感染症チェック(インフルとか)

感染症かどうかの判定は、感染していない人を陽性判定してしまうミスよりも、逆に感染している人を陰性判定するミスをしてしまうほうが、後々感染症が大流行するなどのパンデミックの原因となることから再現率が高めとなっている。

2: 火災感知器(ホーチキツケテー)

どこかでお出かけしたときに、「ファンフォンファンフォンファンフォン 火事です! 火事です! 3階で火災が発生しました! 落ち着いて避難してください!」みたいな放送を聞いたことがある人は意外といるはずです。しかし、放送が鳴ってもほとんどの場合は誤報であることが多いですよね(実際に火災現場にあった人、ごめんなさい…)。これは、多少誤報で警報音が鳴ることよりも、実際に火災なのに警報音がならないことのほうが大問題になるから、実際に火災であるときに警報音を鳴らせる確率をあげられるように再現率をあげてると考えられます。

このように、再現率重視なものの特徴として、もし該当する人や状態(感染やら火災やら)を検知できなかったら大問題になる、というのがあります。

 

(b) 適合率重視なもの

1: 指紋認証

スマホとか銀行とかでよく指紋を認証することありますよね。たまに自分の指紋が認証されなくなってイライラしてませんか。指紋認証の精度が若干悪いのは、指紋登録されていない赤の他人の指紋を間違えて本人のものだと判定してしまったら、見知らぬ人に通帳やスマホを悪用されてしまったら大変なため、わざと感度をちょっとだけ下げ、適合率を上げているからなのです。でも最近指紋認証精度本当によくなってるよね!

2: (実際には存在しないけど) ドミネーター

PSYCHO-PASSに出てくるドミネーター、もし知ってる人がいたらうれしいです。
ドミネーターというのは、「対象の人間の心理状況などを読み取って、心理状況からその人がやばいやつ(犯罪犯してる的な意味で)かどうかを数値(犯罪係数)で判定して、一定値以上の人を鎮圧 or 排除(死刑)するもの」です。

dic.nicovideo.jp

[ニコニコ大百科より]

このドミネーター、もし間違えて実際に犯罪を犯していない人に対して鎮圧やら排除を執行しまったら大変まずいことになりますよね。なのでおそらくこのドミネーターにはおそらく適合率重視なアルゴリズムが入っていると思います。実はそんなにPSYCHO-PASS見たことない()

適合率重視の検査の特徴として、該当しない人(感染の例だと感染していない)なのに誤って該当する状態(陽性)と判定してしまったら大問題になる、というのがあります。

 

5.さいごに

今回は高校数学で学べる確率の知識から、実際に確率がどのようなところで使われているのか、そして情報系の知識である「再現率」・「適合率」と、それを用いた具体的なシステムの例について説明しました。確率分野は苦手な人が多いのですが、確率というのはわかれば非常に面白い分野となっているので、機会があれば確率のお勉強をしてみてください。
もし、大学で「再現率」・「適合率」について勉強した人は、この記事を予習や復習の材料に使っていただければ幸いです…