Generic selectors
Search in title
Search in content
Post Type Selectors
コラム
AI用語集

Accuracyとは何か――「正解率が高い」だけではモデルの良さを判断できない

用語:Accuracy

一言でいうと:Accuracyは、評価対象のうち正しく予測できた割合を表す基本指標ですが、クラス不均衡や採点規則によっては高い値でも有用性を意味しません。

AI用語の分類:AIの評価・安全・倫理・ガバナンス

TERM ID:G273

Accuracyは分類モデルの評価で最も直感的に見える指標です。一般には「全予測のうち何件が正しかったか」を表し、二値分類なら、真陽性(TP)と真陰性(TN)を全件数で割って計算します。

Accuracy = (TP + TN) / (TP + TN + FP + FN)

値が1に近いほど正しい分類が多いという意味ですが、Accuracyだけで「モデルが優秀」と結論づけるのは危険です。クラスの偏り、誤りのコスト、分類しきい値、マルチクラスやマルチラベルでの定義を確認して初めて、数字の意味が分かります。

まず「何件正しかったか」を測る

1000件の分類で950件が正しければAccuracyは0.95、つまり95%です。陽性と陰性のどちらを正解したかは区別せず、全体として正しかった割合を数えます。この単純さがAccuracyの利点です。データが比較的均衡していて、誤分類の種類ごとのコストが大きく違わない場合、モデルの大まかな性能を把握するのに便利です。

しかし、どの誤りも同じ1件として数えるため、現実の意思決定に重要な差を隠すことがあります。

不均衡データでは高いAccuracyが無意味になる

最も有名な落とし穴はクラス不均衡です。1万件のうち陽性が100件、陰性が9900件しかないデータを考えます。モデルが一度も陽性を検出せず、すべてを陰性と予測しても、9900件は当たるためAccuracyは99%になります。

数字だけ見れば非常に高性能に見えますが、陽性を見つけるという目的には全く役立ちません。このような場面ではRecall、Precision、F1、ROC/AUC、PR曲線などを併せて見る必要があります。どの指標が重要かは、見逃しと誤警報のどちらが重いかで変わります。

Accuracyはしきい値にも依存する

確率を出す二値分類モデルでは、たとえば0.5以上を陽性とする分類しきい値を置きます。このしきい値を動かすと、陽性と判定される件数が変わり、TP、TN、FP、FNも変わるためAccuracyも変わります。

したがって「Accuracy 92%」という数字は、モデル本体だけの性質ではありません。評価データ、しきい値、ラベル定義、前処理を含む評価条件の結果です。異なるしきい値で計算したAccuracyを、その条件を無視して単純比較するのは適切ではありません。

マルチクラスでは全体の正解割合

猫・犬・鳥の3クラス分類のような単一ラベルのマルチクラス問題では、各サンプルについて予測クラスが正解クラスと一致した割合がAccuracyです。この場合も、多数派クラスが圧倒的に多いと全体Accuracyが少数クラスの失敗を隠します。

そこでクラスごとのRecallやPrecision、混同行列を確認すると、「鳥だけほとんど猫と誤認している」といった構造が見えてきます。Macro平均のF1など、各クラスを同等に扱う指標が有用な場合もあります。

マルチラベルでは定義確認が必須

1件の画像に「屋外」「人物」「車」など複数ラベルを同時に付けるマルチラベル分類では、ライブラリによってAccuracyの扱いに注意が必要です。scikit-learnのaccuracy_scoreでは、各サンプルについて予測されたラベル集合が正解集合と完全一致した場合だけ正解とする「subset accuracy」を計算します。

たとえば正解が{人物, 車, 屋外}なのに、予測が{人物, 車}なら、3つ中2つを当てていてもそのサンプルは不正解です。したがって二値分類のAccuracyと同じ感覚で数字を読むと誤解します。

Balanced Accuracyとの違い

不均衡データ向けにはBalanced Accuracyという別の指標があります。通常のAccuracyがサンプル数の多いクラスに強く影響されるのに対し、Balanced Accuracyは各クラスの再現率を平均する考え方で、多数派だけ当てて高得点になる問題を緩和します。

「Accuracy」と「Balanced Accuracy」は同じではないため、論文や製品資料では指標名を正確に確認する必要があります。

具体例

ある検査モデルの評価結果が、TP=70、TN=880、FP=30、FN=20だったとします。合計1000件なのでAccuracyは(70+880)/1000=0.95、95%です。

一方、陽性は実際には90件あり、そのうち20件を見逃しています。Recallは70/90で約77.8%です。また陽性と判定した100件のうち30件は誤警報なので、Precisionは70/100で70%です。Accuracy 95%という一つの数字だけでは、この見逃し率や誤警報率は見えません。

何を推論してはいけないか

Accuracyが高いからといって、確率出力が正しく校正されているとは限りません。新しい分布でも同じ性能とは限りません。少数クラスに強いとも限りません。見逃しが少ないとも、誤警報が少ないとも限りません。さらに、評価データに漏洩があればAccuracy自体が過大評価されます。

元の文脈で確認するチェックリスト

Accuracyを見るときは、クラス比率、サンプル数、陽性クラスの定義、しきい値、混同行列、クラス別指標、評価データの独立性を確認します。マルチクラスならmacro/microなどの補助指標、マルチラベルならAccuracyの具体的定義も見ます。

Accuracyは便利な「全体の正解割合」ですが、何を間違えたかを捨てて一つの数にまとめる指標です。元の用途で重要な失敗が何かを確認してから読めば、99%という見栄えの良い数字に振り回されにくくなります。

Top-k Accuracyとは別物

画像認識や言語モデルの一部ベンチマークではTop-1 AccuracyやTop-5 Accuracyが使われます。Top-1は最上位予測が正解かを見る一般的なAccuracyに近い一方、Top-5は上位5候補のどこかに正解が含まれれば正解とします。同じ「Accuracy」という語でも評価条件が違うため、Top-kのkを確認する必要があります。

Accuracyの差が意味のある差か

評価セットが100件しかなければ、1件の違いでAccuracyは1ポイント動きます。1万件なら1件は0.01ポイントです。小数点以下の細かな差を比較するときは、テスト件数や統計的不確実性を無視できません。

さらに同じ1000件で2モデルを比較する場合、単純な割合差だけでなく「どのサンプルで片方だけ正解したか」という対応関係も情報になります。複数seedで学習結果が変わるモデルなら、学習のばらつきも含めて見る必要があります。

AccuracyをKPIにするときの注意

Accuracy最大化が業務目標と一致するとは限りません。たとえば不正検知で偽陰性1件の損失が偽陽性100件分に相当するなら、両方を1件として数えるAccuracyは意思決定の損失を表しません。評価指標は「計算しやすいもの」ではなく「重要な失敗を反映するもの」を選ぶ必要があります。

生成AIでAccuracyと書かれている場合

LLM評価でも、選択式問題、分類、ツール選択、正誤判定などではAccuracyが使われます。ただし自由記述生成では「正解」の判定規則が必要です。exact match、正規化後一致、judge判定など、採点方法が変わればAccuracyも変わります。単語として同じAccuracyでも、何を1件の正解と数えたかを確認します。

選択肢順序やプロンプト形式を変えると結果が動くベンチマークもあります。したがってLLMのAccuracyはモデルだけでなく、prompt template、sampling、採点器、データ処理を含む評価パイプラインの出力です。

ベースラインとの比較

Accuracy 60%が高いか低いかは課題次第です。二択の無情報ランダムなら期待値50%、100クラスなら1%ですが、クラス不均衡では多数派だけを予測するbaselineが高いこともあります。評価表ではランダム、majority class、既存モデルなどのbaselineを確認すると、数字の実質的な意味が見えます。

Accuracy差の大きさも確認する

Accuracy 91%と90%の差が実質的かは、評価件数や誤りの種類によります。大規模データなら1ポイント差が安定していても、少数サンプルでは偶然の可能性があります。また同じ1ポイントでも、重大なクラスの見逃しが減ったのか、簡単な多数派だけ改善したのかで価値は異なります。順位だけでなく混同行列やクラス別指標へ戻るのが安全です。

注・出典

  1. Google for Developers — Classification: Accuracy, recall, precision, and related metrics — https://developers.google.com/machine-learning/crash-course/classification/accuracy-precision-recall
  2. scikit-learn — accuracy_score — https://scikit-learn.org/stable/modules/generated/sklearn.metrics.accuracy_score.html

AI協働制作について

本記事は、著者が独自に設計した指示、参照資料、出典確認規則、著作権確認および監査工程を組み込んだChatGPT等の生成AIを、情報収集の補助、資料整理、構成検討、草稿作成、文章校正および監査補助に使用して制作しました。記事の対象範囲、情報源の採否、構成、解釈および最終表現は著者が判断し、最終稿を承認しています。著者は、本記事の正確性、独自性、引用、著作権処理および公開内容について責任を負います。制作工程の詳細は「AI協働制作方針」をご覧ください。 AI協働制作方針

おすすめ