Help us understand the problem. What is going on with this article?

Accuracyだけに頼れない理由

More than 1 year has passed since last update.

Accuracy、Recall、Precisionなど、機械学習モデルを評価する指標はいろいろとある。

そういった指標についてよくまとめられている記事:Data Science Performance Metrics for Everyoneがあったので、その内容をもとに、自分なりに学習したものを付け加え、下記にまとめる。

上記記事では、透析中の患者が来週中に入院するための機会学習モデルを作成し、そのモデルを評価する指標について説明している。

用語

True Positive

Positiveと予測し、実際にPositiveだったもの。

False Positive

Positiveと予測し、実際はNegativeだったもの。

False Negative

Negativeと予測し、実際はPositiveだったもの。

True Negative

Negativeと予測し、実際にNegativeだったもの。

Prevalence

ここでは、Positiveである割合。辞書をひくと、"有病率"などと訳される。

Accuracy (正確度)

分子:True Positive + True Negative (予測が正しかったもの) 
分母: 全数

Accuracyは、予測が正しかった割合をみるものだ。

なぜAccuracyだけにたよってはいけないのか?

たとえば、全患者のうち2%の入院数だとして、
機械学習モデルが、全て"入院しない" と予測したとしても、
Accuracyは98%を叩き出してしまう。98%のAccuracy・・・一聴するとすこぶる良い機械学習モデルが作成されたように思えるが、
実際には必ずしもそうではないということだ。

Recall, Specificity, Precision

上記Accuracyの問題に対応するため、Recall (Sensitivity), SpecificityやPrecisionを使用する。

Recall(再現率)

分子: True Positive (実際にPositiveであり、Positiveと予測したもの)
分母: True Positive + False Negative (予測にかかわらず実際にPositiveなもの)

Recallは、予測にかかわらず実際にPositiveのもののうち、Positiveと予測し実際にPositiveだったものの割合をみるものだ。網羅性をみることができる。Recallが高いということは、取りこぼしが少ないということ。Recallが低いということは、取りこぼしが多いということだ。
適合率(precision)とは、トレードオフの関係である。
なお、Recallは、Positiveと予測したが実際にはNegativeだったものは鑑みない。つまり、正確性は考慮しないということだ。正確性をみたいのであればPrecisionをみる。

Specificity

分子: True Negative (Negativeと予測し、実際にNegativeだったもの)
分母: False Positive + True Negative (予測に関わらず実際にNegativeであるもの)

Specificityは、予測にかかわらず実際にNegativeのもののうち、Negativeと予測し実際にNegativeだったものの割合をみるものだ。

Precision (精度 ・ 適合率)

分子: True Positive (実際にPositiveだったもの)
分母: True Positive + False Positive (Positiveと予測したもの)

Positiveと予測したもののうち、実際にPositiveだったものの割合。
正確性をみることができる。
再現率(recall)とは、トレードオフの関係である。
Precisionでは、False Negativeは鑑みないので、網羅性はみることができない。網羅性をみるのはRecallである。

トレードオフについて

たとえば、Recallの数値が悪いため、よりPositiveと予測されやすいようにモデルを調整したとしよう。
その場合、Positiveと予測する数が増えるので、Recallは上がる。そのかわり、Negativeと予測する数が減るので、Specificityは下がる。

また、Recallを上げようとするとき、Precisionは下がる。極端な例でいうと、仮にすべてをPositiveと返すモデルがあったとすれば、Recallは100%となるが、Precisionはひどいことになるだろう。
反対に、Precisionを上げようとすると、Recallが下がる。

F値によりRecallとPrecisionを評価する

RecallとPrecisionの値を評価するために、F値を用いる。
F値は、次の計算で求められる。
分子:2Recall∗Precision
分母:Recall+Precision
単なる2つの値の平均をとるのではなく、上記のような計算を行うのは、極端な値の評価を下げるためだ。
例えば、RecallとPrecisionが0.1,0.9であるより、0.5,0.5のほうがF値では良い値になる。

Prevalenceが低いとき、適合率はどうなるか

一般的に、Prevalenceが低いとき、適合率は下がる傾向にある。
50%の有病率のものを予測するより、2%の有病率のものを予測する方が適合率が下がる傾向がある。

ROC, AUC

ROCやAUCという評価指標もある。
参考:
【ROC曲線とAUC】機械学習の評価指標についての基礎講座
機械学習の評価指標 – ROC曲線とAUC

参考文献

Data Science Performance Metrics for Everyone
適合率(precision)と再現率(recall)
適合率(precision, 精度)について
再現率(precision)について
true positive, false positive, true negative, false negative について
Beyond Accuracy: Precision and Recall

unohisa
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした