Confusion Matrix
混同行列 (confusion matrix) が分類パフォーマンスを評価する仕組みを学びましょう。TP、FP、TN、およびFNを理解して、より高い精度を目指してUltralytics YOLO26モデルを最適化します。
混同行列は、出力が2つ以上のクラスになり得る機械学習の分類問題における、性能評価ツールです。これは予測値と実測値の4つの異なる組み合わせを示す表であり、モデル評価におけるデータ可視化の基礎となる要素です。データセットが不均衡な場合に誤解を招く可能性がある単純な精度(accuracy)とは異なり、混同行列はコンピュータビジョン (CV)モデルがどこで間違いを犯しているのかを詳細に分析できます。予測を正解ラベルと比較することで、システムが特定の2つのクラスを混同しているのか、あるいはオブジェクトの検出に失敗しているのかを開発者が判断できます。
Link to this section行列の主要コンポーネント#
行列自体は通常、二値分類の場合は4つの象限に分けられますが、Ultralytics YOLO26が扱うようなマルチクラス問題ではさらに拡大します。これら4つのコンポーネントは、モデルが予測したものと画像内に実際に存在するものの交差点を表しています。
- 真陽性 (TP): モデルが陽性クラスを正しく予測した場合。例えば、物体検出タスクにおいて、実際にフレーム内に存在する人物を囲むバウンディングボックスをモデルが正しく生成できた場合がこれに当たります。
- 真陰性 (TN): モデルが陰性クラスを正しく予測した場合。これは、製造された部品に欠陥がないことをシステムが正しく特定する異常検知のようなシナリオにおいて極めて重要です。
- 偽陽性 (FP): モデルが陽性クラスを誤って予測した場合。「第一種の過誤」とも呼ばれ、存在しないオブジェクトをシステムが検出してしまった時に発生します(例:防犯カメラが影を侵入者として誤検知する場合)。
- 偽陰性 (FN): モデルが陰性クラスを誤って予測した場合。「第二種の過誤」として知られ、存在するオブジェクトをモデルが検出し損ねた、いわゆるターゲットを「見逃した」場合に発生します。
Link to this section派生メトリクスとその意義#
混同行列内の生の数値は、モデル性能を示すより高度なメトリクスを算出するために使用されます。これらの派生指標を理解することは、ニューラルネットワークを最適化するために不可欠です。
- 適合率 (Precision): TP / (TP + FP) で計算されるこのメトリクスは、陽性の予測がどれほど正確かを示します。適合率が高いことは、誤報が少ないことを意味します。
- 再現率 (Recall / Sensitivity): TP / (TP + FN) で計算され、モデルがすべての陽性インスタンスを見つけ出す能力を測定します。オブジェクトを見逃すことの影響が甚大な場合、高い再現率が不可欠となります。
- F1スコア (F1 Score): 適合率と再現率の調和平均です。両者のトレードオフのバランスをとった単一のスコアを提供し、異なるYOLO26モデルを比較する際に役立ちます。
Link to this section実社会での応用#
混同行列によって定義されるエラーの特定のコストは、業界ごとにモデルがどのように調整されるかを決定づけます。
**ヘルスケア分野におけるAI**において、混同行列は安全性の問題に関わります。腫瘍を検出するために医療画像解析モデルを学習させる際、偽陰性(腫瘍を見逃すこと)は、偽陽性(良性の部位を医師のレビュー用にフラグ立てすること)よりもはるかに深刻です。そのため、エンジニアは潜在的な健康リスクの見逃しを確実になくすため、これらの行列において適合率よりも再現率を優先します。
対照的に、**製造業の品質管理**では効率が鍵となります。組み立てラインの部品を分類するシステムが過剰な偽陽性(良品を欠陥品としてフラグ立てする)を生成すると、不要な廃棄物を生み出し、生産を遅延させます。ここでは、混同行列はエンジニアが適合率を最大化するようにモデルを調整する手助けをし、廃棄されるものが確実に欠陥品であることを保証することで、自動機械学習 (AutoML)ワークフローを合理化します。
Link to this sectionYOLO26を用いた混同行列の生成#
When using modern frameworks, generating this matrix is often part of the standard validation pipeline. The example below demonstrates how to validate a YOLO26 model and access the confusion matrix data using the ultralytics package.
from ultralytics import YOLO
# Load a pre-trained YOLO26 model
model = YOLO("yolo26n.pt")
# Validate the model on the COCO8 dataset
# This automatically generates and plots the confusion matrix
metrics = model.val(data="coco8.yaml")
# Access the confusion matrix object directly
print(metrics.confusion_matrix.matrix)Link to this section関連する概念との違い#
混同行列を類似の評価用語と区別することが重要です。
- vs. 精度 (Accuracy): 精度は、全予測に対する正解予測の比率に過ぎません。有用ではありますが、不均衡データセットでは非常に誤解を招く可能性があります。例えば、メールの95%がスパムではない場合、すべてのメールに対して「スパムではない」と予測するモデルは95%の精度を持ちますが、役には立ちません。混同行列は、スパムクラスに対する真陽性がゼロであることを示すことで、この欠陥を明らかにします。
- vs. ROC曲線: 混同行列は、特定の単一の信頼度しきい値におけるパフォーマンスのスナップショットを提供します。対照的に、受信者動作特性 (ROC) 曲線は、しきい値を変化させたときに真陽性率と偽陽性率がどのように変化するかを可視化します。Ultralytics Platformのようなツールを使用すると、ユーザーは両方の可視化を探索し、デプロイメントに最適な動作ポイントを選択できます。






