Accuracy
正解率とは、モデルの予測のうち正しいものの割合です。計算式、top-1およびtop-5正解率、不均衡データにおける正解率のパラドックス、より適切な指標を解説します。
正解率とは、モデルの予測のうち正しいものの割合です。正しい予測数を予測総数で割って算出します。入力ごとにラベルが1つある画像分類やその他の教師あり学習タスクで標準的に使われ、モデルがどれくらいの頻度で正解するかという最も基本的な問いに答えます。正解率は読み取りやモデル間の比較が容易ですが、すべての予測を等しく扱うため、不均衡データでは、重要なケースで失敗していても高いスコアになることがあります。
正解率の計算方法#
二値分類タスクでは、混同行列の4つの件数から、正解率 = (TP + TN) / (TP + TN + FP + FN) と算出できます。つまり、真陽性と真陰性の合計をすべての予測数で割ります。クラス数が多いタスクでは、行列の対角成分の合計を全件数で割ります。scikit-learnのaccuracy_scoreを使うと、2つのラベル配列から直接計算できます。正解率の代わりに誤り率を報告することも多く、その場合は誤り率 = 1 − 正解率となります。
Top-1正解率とTop-5正解率#
クラス数の多い分類器では、top-k正解率も報告されます。Top-1正解率では、最もスコアの高いクラスが正解ラベルの場合にのみ予測を正解とします。Top-5正解率では、正解ラベルがスコア上位5クラスのいずれかに含まれていれば正解とします。1,000クラスから単一ラベルが付けられた複数の物体を含む写真が多いImageNetチャレンジを機に、Top-5が標準になりました。YOLO26の分類モデルは両方の数値を報告します。ナノモデルyolo26n-cls.ptは、224ピクセルのImageNetでTop-1正解率71.4%、Top-5正解率90.1%を達成します。
正解率と関連指標#
- 適合率:陽性と予測されたもののうち、実際に陽性である割合です。誤警報が減ると高くなります。
- 再現率:実際の陽性のうち、モデルが検出した割合です。希少クラスを無視するモデルを見抜く指標です。
- F1スコア:適合率と再現率の調和平均で、両方が高くなければ低い値にとどまります。
- 平均適合率(mAP):物体検出の標準指標です。背景には数えられる真陰性がなく、空の画像領域が無数に存在するため、物体検出には正解率を適用できません。
正解率のパラドックス#
1つのクラスが大半を占める場合、正解率は希少クラスを無視するモデルを高く評価します。取引の1%が不正な場合、すべての取引を承認するモデルは正解率99%を達成する一方で、不正をまったく検出できません。この現象は正解率のパラドックスとして知られています。同じ問題は、対象クラスが本質的に希少な欠陥検査、疾病スクリーニング、異常検知でも発生します。
import numpy as np
from sklearn.metrics import accuracy_score, balanced_accuracy_score, recall_score
# 1,000 transactions, 10 of them fraudulent (label 1)
y_true = np.zeros(1000, dtype=int)
y_true[:10] = 1
# A model that labels every transaction as legitimate
y_pred = np.zeros(1000, dtype=int)
print(f"Accuracy: {accuracy_score(y_true, y_pred):.2f}")
print(f"Balanced accuracy: {balanced_accuracy_score(y_true, y_pred):.2f}")
print(f"Fraud recall: {recall_score(y_true, y_pred):.2f}")クラス間の再現率の平均であるバランス正解率は、通常の正解率では隠れてしまう失敗を明らかにします。このスクリプトは、正解率0.99、バランス正解率0.50、不正検出の再現率0.00を出力します。










