Confusion Matrix
Karışıklık matrisi, bir modelin tahminlerini gerçek etiketlerle sınıf sınıf karşılaştırarak sayar. Matrisin nasıl okunacağını, sağladığı metrikleri ve nesne tespitindeki biçimini öğren.
Karışıklık matrisi, bir sınıflandırma modelinin tahminlerinin gerçek etiketlerle ne kadar örtüştüğünü sayan bir tablodur. Bir eksen gerçek sınıfları, diğeri tahmin edilen sınıfları listeler ve her hücre, bu sınıf çiftine düşen örnekleri sayar. Doğru tahminler köşegende yer alır; her hata ise hangi sınıfın hangisiyle karıştırıldığını tam olarak gösteren hücrede, köşegenin dışında yer alır. Bu nedenle karışıklık matrisi, model hatalarına standart ilk bakış ve doğruluk, kesinlik, duyarlılık ve F1-skorunun kaynağıdır.
İkili Karışıklık Matrisini Okuma#
İki sınıf olduğunda matrisin dört hücresi vardır:
- Doğru pozitifler (TP): Kusurlu olduğu halde kusurlu olarak tahmin edilen parça gibi, pozitif olarak tahmin edilmiş pozitif örnekler.
- Yanlış pozitifler (FP): Tip I hatalar veya yanlış alarmlar olarak da adlandırılan, pozitif tahmin edilmiş negatif örnekler.
- Yanlış negatifler (FN): Tip II hatalar veya kaçırmalar olarak da adlandırılan, negatif tahmin edilmiş pozitif örnekler.
- Doğru negatifler (TN): Negatif tahmin edilmiş negatif örnekler.
İkili sınıflandırma ölçütlerinin çoğu bu dört sayının oranlarından oluşur. Kesinlik TP / (TP + FP), duyarlılık TP / (TP + FN), doğruluk ise (TP + TN) değerinin dördünün toplamına bölünmesidir. Köşegen dışındaki hangi hücrenin daha önemli olduğu uygulamaya bağlıdır: kanser taraması, yanlış negatifleri düşük tutacak şekilde ayarlanırken spam filtresi yanlış pozitifleri düşük tutacak şekilde ayarlanır.
Çok Sınıflı Karışıklık Matrisleri#
N sınıf olduğunda matris N × N boyutundadır. scikit-learn'in confusion_matrix kullandığı yerleşimde her satır gerçek bir sınıfı, her sütun ise tahmin edilen bir sınıfı gösterir. Bir satır boyunca okumak, o sınıfa ait örneklerin nereye gittiğini gösterir; dolayısıyla köşegen hücrenin satır toplamına oranı, sınıfın duyarlılığıdır. Bir sütun boyunca okumak, modelin o sınıf için yaptığı tahminlerin gerçekte ne olduğunu gösterir; dolayısıyla köşegen hücrenin sütun toplamına oranı, sınıfın kesinliğidir. Bazı araçlar matrisi transpoze edilmiş biçimde çizer; bu yüzden grafiğin nasıl okunacağını eksen etiketleri belirler.
from sklearn.metrics import confusion_matrix
# 10 görüntü için gerçek ve tahmin edilen etiketler
y_true = ["cat", "cat", "cat", "dog", "dog", "dog", "dog", "fox", "fox", "fox"]
y_pred = ["cat", "cat", "dog", "dog", "dog", "dog", "cat", "fox", "dog", "fox"]
# Bu etiket sırasına göre satırlar gerçek sınıfları, sütunlar tahmin edilen sınıfları gösterir
labels = ["cat", "dog", "fox"]
matrix = confusion_matrix(y_true, y_pred, labels=labels)
print(matrix)Kedi, köpek ve tilki için yazdırılan satırlar [2 1 0], [1 3 0] ve [0 1 2] şeklindedir. Köşegende 10 görüntünün 7'si bulunduğundan doğruluk 0.7'dir. Köpek sütununda bir kedi ve bir tilki örneği yer alır; bu nedenle köpek kesinliği 3 / 5 = 0.6 olur. Köpek satırında bir görüntü kedi olarak tahmin edilmiştir; bu nedenle köpek duyarlılığı 3 / 4 = 0.75 olur. Normalize edilmiş bir matris, her hücreyi gerçek sınıfın toplamına böler; böylece köşegen sınıf başına duyarlılığı gösterir ve boyutları çok farklı sınıflar karşılaştırılabilir hale gelir.
Nesne Algılama için Karışıklık Matrisleri#
Algılama işlemi bir arka plan sınıfı ekler; çünkü algılayıcı, hiçbir şeyin olmadığı yerde bir kutu bildirebilir veya bir nesneyi tamamen kaçırabilir. Tahminler önce kesişim/birleşim (IoU) ölçütüyle etiketlerle eşleştirilir, ardından sayılır: eşleşen çiftler sınıf hücrelerine, eşleşmeyen tahminler arka plana karşı yanlış pozitiflere ve eşleşmeyen etiketler arka plan olarak tahmin edilmiş yanlış negatiflere yazılır. Boş görüntü bölgeleri sayılamayacağı için arka plan-arka plan hücresi boş kalır; bu nedenle algılama matrisinde doğru negatif yoktur. YOLO26 doğrulaması, arka plan için bir ek satır ve sütun içeren bu matrisi oluşturur, tahminleri IoU 0.45'in üzerinde olduğunda etiketlerle eşleştirir ve matrisi confusion_matrix.png olarak kaydeder; tahmin edilen sınıflar dikey, gerçek sınıflar yatay eksendedir.
from ultralytics import YOLO
# Load a pretrained YOLO26 nano detector
model = YOLO("yolo26n.pt")
# Validation builds the confusion matrix and saves it as confusion_matrix.png
metrics = model.val(data="coco8.yaml")
matrix = metrics.confusion_matrix.matrix # rows: predicted class, columns: true class
# 80 COCO classes plus one background row and column
print(matrix.shape)
# Class 0 is "person": correct detections and people the model missed
print(f"Person TP: {matrix[0, 0]:.0f}, missed: {matrix[-1, 0]:.0f}")Şekil (81, 81) biçimindedir ve son satır, hiçbir tahminin eşleşmediği etiketli kişileri sayar.
Karışıklık Matrisi ve İlgili Araçlar#
- ROC eğrisi: Her karar eşiği için bir nokta gösterir; her nokta, ilgili eşiğin karışıklık matrisini doğru pozitif oranı ve yanlış pozitif oranı olarak özetler.
- Ortalama kesinlik (mAP): Tüm güven düzeylerinde alınan aynı TP ve FP kararlarından hesaplanan temel algılama skorudur; hangi sınıfların birbiriyle karıştırıldığını göstermez.
- Doğruluk: Matrisin tek bir sayıya indirgenmiş halidir; köşegen toplamının tüm hücrelerin toplamına oranıdır. %95'i negatif olan bir veri kümesinde, her zaman "negatif" tahmin eden bir model %95 doğruluk alırken matrisi sıfır doğru pozitif gösterir.










