AIを導入する前に、業務で要求される精度を設定しておきます。
またAIは作成したら終わりではなく、その精度を評価して改善を続ける必要があります。
例えば、医療や自動運転など人命に関わるものでは、限りなく100%に近い正確な判定結果が得られないと実用化できない、商品の仕入れなどで多少の上下があってもよいので、80%ぐらいの精度は欲しい、といった評価レベルを設定します。
では、この100%、80%といった精度は具体的にはどのように計算されるのでしょうか?
実はその計算方法によって精度が変わってきます。
その計算方法を紹介する前にまずは混同行列について、お話したいと思います。
行を実際のクラス、列をAIによって判定されたクラスとして以下の行列を想定します。
AIによって判定されたクラス | |||
P | N | ||
実際のクラス | P | 真陽性(True Positive; TP) | 偽陰性(False Negative; FN) |
N | 偽陽性(False Positive; FP) | 真陰性(True Negative; TN) |
混同行列により、以下4つのグループに分類されます。
- AIが陽性と判定し、実際に陽性であった → 真陽性(TP)
- AIが陽性と判定したが、実際は陰性であった → 偽陽性(FP)
- AIが陰性と判定したが、実際は陽性であった → 偽陰性(FN)
- AIが陰性と判定し、実際に陰性であった → 真陰性(TN)
この混同行列を使用して、これから3つの評価モデルを紹介します。
正解率(Accuracy)
正解率(Accuracy)= (TP + TN) / (TP + FP + FN +TN)
AIによって判定されたクラス | |||
P | N | ||
実際のクラス | P | 真陽性(True Positive; TP) | 偽陰性(False Negative; FN) |
N | 偽陽性(False Positive; FP) | 真陰性(True Negative; TN) |
適合率(Precision)
適合率(Precision)= TP / (TP + FP)
AIによって判定されたクラス | |||
P | N | ||
実際のクラス | P | 真陽性(True Positive; TP) | 偽陰性(False Negative; FN) |
N | 偽陽性(False Positive; FP) | 真陰性(True Negative; TN) |
再現率(Recall)
再現率(Recall)= TP / (TP + FN)
AIによって判定されたクラス | |||
P | N | ||
実際のクラス | P | 真陽性(True Positive; TP) | 偽陰性(False Negative; FN) |
N | 偽陽性(False Positive; FP) | 真陰性(True Negative; TN) |
それぞれの意味は以下のようになります。
正解率 | 全てのデータのうち、AIが陽性・陰性を正確に判定したもの |
適合率 | AIが陽性と判定したもののうち、実際に陽性であったもの |
再現率 | 実際に陽性であったもののうち、AIが陽性と判定したもの |
では、これら3つの指標をどのように使うべきでしょうか?
まず、適合率と再現率はトレードオフの関係になります。
たとえば、コロナの陽性を判定しようとする場合、疑わしきは陽性と判定するようなAIですと、再現率は高くなりますが、適合率は低下します。
医療の現場では、人命が優先ですので、疑わしきは陽性と判定する再現率を採用した方がよいと思われます。
一方Amazonのようにお薦め商品を提示するAIの場合には、適合率を重視すべきと考えます。
偽陽性(その商品に関心がないのに、どんどん薦めてくる)の状態が乱発されると、利用者は嫌がるからです。
このようにAIを利用する業務の特性に応じて、その精度を評価することが必要になってきます。