2値分類の精度?

気になったこと

世間ではコロナ騒動で検査が効く/効かない、効果は?などと疑心暗鬼になっていますが、
正確に捉えるために、いろんな指標が何を指すのか、今一度確認してみます。

ある病気Aに対して、検査結果が陽性(その病気)、陰性(大丈夫そう)という結果が次の結果だとします。1

検査陽性 検査陰性 Total
病気Aあり 85 15 100
病気Aなし 1,284 8,415 9,900
Total 1,570 8,430 10,000

上記の混同行列(confusion matrix)2に対して、

検査結果を元にする指標

  • 適合率、精度(Precision): 検査結果が陽性の時だった時に、実際に病気である確率(=陽性適中率)。つまり、検査結果をどれだけ真摯に受け入れるか、という指標

    • 85 / 1,284 = 5.4%
  • 陰性適中率: 上記精度の陰性の方の指標、つまり結果が陰性だとして本当に陰性か、という指標

    • 8,415 / (8,415 + 15) = 99.8%

    • 適合率(=陽性適中率)、陰性適中率ともに、検査結果が○○だとして、という指標なので患者に立った時の指標と解釈出来ますね。

実際に病気だった結果を元にする指標

  • 検出率(Recall), 感度(Sensitivity): 病気Aだった人がどの程度検査で的中出来ているか

    • 85 / (85 + 15) = 85%
  • 特異度(Speciality): 病気Aでない人が検査で陰性だった割合、つまり病気Aでない人を正しく除外できる割合

    • 8,415 / (1,284 + 8,415) = 85%

全体を俯瞰する系の指標

  • 正解率(accuracy): 全体の中でどの程度正解してるか(検査結果と実際の病気有無が一致しているか)を示します。

    • (85 + 8,415) / (85 + 15 + 1,284 + 8,430) = 85%
  • F値: 精度(precision)、適合率(recall)のアイノコではないですが、全体的な分類精度を考えたい時なんかによく使われます

    • (2 precision recall ) / (precision + recall) = (2 0.054 0.85) / (0.054 + 0.85) = 10.2%

使い方

「有効な薬が出たよ」なんて広告とかニュースを見た時に、「どの指標で測ってるのか?」は確実に理解したいものですね。

1 機械学習モデルの文脈なら、検査結果が予測結果、病気A有無は実測値のように読み替えられます:
2 いつ見てもネーミングがアレに感じるのは私だけでしょうか、、: