Confusion Matrix Nedir ve Neden Kullanılır?

İrem Kömürcü
6 min readOct 4, 2021

Yazdığımız modelin başarısını doğru şekilde ölçmek ve değerlendirmek bir Makine Öğrenmesi görevi için kritiktir. Doğru seçilen metriklerin değerlendirilmesi ile modelde iyileştirmeler yapmak, gerçeğe en yakın şekilde tahminler üretebilmek için çalışmak kolaylaşır. Seri halinde anlatılacak olan “Evaluation” konusunda Confusion Matrixleri anlayarak başlıyoruz 🐣

Confusion Matrix Nedir?

Confusion Matrix kullanarak yaptığımız classification (sınıflandırma) modelimizin performansını yorumlayabiliriz. Aynı zamanda Confusion matrix yardımı ile farklı metrik değerlerimizi de bulabilir ve model başarımızı yaptığımız işleme göre detaylı şekilde değerlendirebiliriz.

Yazıdan maksimum verimi almak için bir not;
Bu yazıda Confusion Matrix oluşturma ve değerlendirme mantığını adım adım detaylı bir şekilde görecek ve diğer metriklerin oluşturulmasına da giriş yapacağız. Anlatacağım örnekleri anlayarak ve farklı örneklerde denemeler yaparak alıştırma yapmanız sizin için yararlı olacaktır.

Matrix Büyüklüğünü Neye Göre Belirliyoruz?
Yaptığımız sınıflandırma işleminin sınıf sayısı büyüklüğünde bir Matrix oluştururuz. Örneğin; Binary (ikili) sınıflandırma işlemi için 2x2 bir matrix oluştururken, 5 sınıfa ait bir sınıflandırma işlemi yaparken 5x5 bir matris kullanırız.

Binary Classification ve Confusion Matrix Örneği

Elimizde kedi ve köpek olmak üzere 2 sınıfa ait toplam 10 veri var. Bu iki sınıfa ait modelimiz tahminler üretiyor ve biz bu tahminleri gerçek veriler ile karşılaştırmak istiyoruz. O zaman ilk olarak confusion matrix çizimi ile başlayalım! Hatırlayalım: 2 sınıflı bir sınıflandırma problemi için elimizde 2x2 matrix olmalı.

Durun bir dakika, binary sınıflandırma yaptığımız bu sınıflandırmada kedilere 1, köpeklere 0 diyemez miyiz? Elbette deriz. O zaman bundan sonra kedileri 1, köpekleri 0 olarak gösterelim. Tabloda sayıların karışmaması için kedi ve köpek isimlerini kedi ve non-kedi olarak adlandıracağım.

Elimizdeki gerçek veriler ve onlara karşılık bilgisayarımızın tahmin ettiği veriler (predicted data) görseldeki gibi. Yanlış tahminleri belirgin yapmak adına altını kırmızı ile çizdim.

Peki buradan nasıl confusion matrix çizeceğiz? Kedi üzerine kurulu bir confusion matrix çiziyoruz. İlk olarak gerçek datamızın kedi verisi karşılığında modelimizin de kedi tahmin ettiği örnekleri buluyoruz.

Gerçek data ve tahmin “kedi” verisi üzerinde toplam 4 kere eşleşmiş. Confusion matrix üzerinde kedi tahmini üzerinde kedi verisine denk gelen alana bu yüzden 4 yazıyorum.

Gerçek veri üzerinde kedi verisini “non-kedi” olarak tahmin eden verileri incelediğimde 3 eşleşmenin olduğunu görüyorum.

Kedi verisine karşılık non-kedi olan tahminleri turuncu ile bir araya getirdim. Tabloda 3 sayısını yine Turuncu ile yazıyorum.

non-kedi verisine karşılık kedi olarak tahmin edilen 1 tahminimiz var ve onu da yeşil renk ile eşleştirdim.

Son olarak non-kedi verisine karşılık non-kedi olarak eşleşen ve Doğru (True) eşleşme yapan verileri de pembe renk ile bir araya getirdim. Görüyoruz ki 2 tane non-kedi eşleşmesi var;

Toplam 10 verimiz vardı ve confusion matrix içindeki sayılarımızın toplamı da 10, doğru bir şekilde confusion matriximizi oluşturduk.

Ama bununla bitmedi! True Positive, True Negative, False Positive ve False Negatif gibi kavramlarla tanışmamızın vakti geldi. Bu değerler metriklerimizi kullanırken işimize yarayacak ve tablodaki değerlerimizi ifade etmemize yarayacak aslında.

Araştırdığım kaynaklardan farklı ve aklıma en çok yatan şekilde örneklemek istiyorum bu kelimeleri. Bildiğiniz gibi gerçek data ve tahmin data aynıysa Doğru tahmin ettiğini söylüyorduk ve bunu True olarak adlandırıyoruz. Eğer verilerimiz ile tahmin ettiğimiz veriler uyuşmuyorsa buna yanlış tahmin yani False adını veriyoruz. Peki Positive ve Negative kavramlarımız nerden geliyor?

Biz bu örnekte kedi üzerine kurulu bir confusion matrix çizdirdik ve tahmini veride kedi datası bizim için Positive adını almış oldu. Kedi dışında diğer sınıfımız bizim için Negative değerde.

Tabloda görüldüğü gibi doğru tahminler True, yanlış tahminler False kelimelerinin ilk harfleri ile başlarken, confusion matriximizi kurduğumuz sınıfımızın tahminleri Positive değerlerini aldı. Böylece True Positive (TP), False Negative (FN), False Positive (FP) ve True Negative (TN) değerleri için tablomuzu tam olarak oluşturmuş olduk. Farklı metrikler artık bu değerleri kullanarak formüllerini uygulayabilecekler!

Bu örneğimiz ve datalarımızı adlandırmamız binary sınıflandırma problemi içindi. Ya çok sınıflı bir sınıflandırma işlemi yapıyor olsaydık?

Multi-class Sınıflandırma ve Confusion Matrix örneği

Elimizde kedi, köpek, fare olmak üzere 3 sınıfa ait bir sınıflandırma problemi var ve 3x3 bir confusion matrix çizerek başlıyoruz. Tabloyu nasıl doldurduğumuzu bir önceki örnekte göstermiştim, aynı şekilde tabloyu dolduruyoruz.

Kedi, köpek, fare sınıflarına ait toplam 19 verinin confusion matrix dağılımı bu şekilde. Peki böyle 2 sınıftan büyük sınıflandırma işlemlerinde TP, TN, FP, FN gibi değerleri nasıl veriyoruz?

Aslında yukarıda True, False ve Positive, Negative kavramlarının nasıl geldiğini açıklamıştık. Bu tablolarda bu kısımlara denk gelen değerleri toplayarak değerlerimizi buluyoruz.

Örneğin Kedi sınıfına ait olacak şekilde TP, TN, FP, FN değerlerimizi bulmaya çalışalım.

Kedinin olduğu gerçek data ve Kedi tahmin edilen datanın kesişimi bizim için True Positive alanımızı oluşturuyor.

True Positive (Turuncu alan): 5

Kedi dışında yer alan Negative değerlerin gerçek tabloda Kedi olduğu kısım bizim için False Negative değerini veriyordu. Bu değeri pembe renk ile ifade ettim.

False Negative (Pembe alan): 1+1 = 2

Kedi şeklinde tahmin edilen fakat gerçekte kedi olmayan kısımlar bizim için False Positive değerdi. Bu tabloda mavi ile işaretlenen alan bizim için False Positive oluyor.

False Positive (Mavi alan): 1+0 = 1

Son olarak hem tahmin hem gerçek data dışında kalarak eşleşen alan bizim için True Negative değeri ifade ediyordu. Bu tabloda True Negative değerini Kırmızı olarak ifade ettim.

True Negative (Kırmızı alan): 5+0+0+6 = 11

Bu multi class örneği Kedi içindi. Ya arada olan bir değer için confusion matrix değerlendirseydik? Hadi son olarak daha iyi anlamak için Köpek verisi için bu değerleri bulalım:

Köpek datasına karşılık doğru tahmin edilen köpek çıktısı bizim için True Positive değeri oluşturuyor.

True Positive (Turuncu alan): 5

Gerçek datamız üzerinde yanlış olarak köpek tahmin eden alanlar bizim için False Negative değerini oluşturuyor ve Mor renk ile ifade etmek istedim.

False Negative (Mor alanlar): 1+0= 1

Köpek tahmini için yanlış çıkan değerler bizim için False Positive değerini oluşturuyor ve Mavi renk ile ifade ettim.

False Positive (Mavi alanlar): 1+0=1

Son olarak, Köpek datasına göre yorumlanan confusion matrix üzerinde Köpek datamız dışında kalan ve doğru tahmin olarak kabul edilen True Negatif alanları kırmızı ile ifade ettim.

True Negatif (Kırmızı alanlar): 5+1+0+6= 12

Çok sınıflı büyük sınıflandırma problemlerinde confusion matrix’i sklearn yardımı ile oluşturmak ve işlemleri sklearn kütüphanesi ile yaptırmanız gerekecektir. Gerçek hayat projelerinde elle oluşturulduğunu hiç görmedim diyebilirim. Fakat çalışma mantığını anlamak oldukça önemli.

Confusion matrixleri detaylı şekilde kendi çizimlerimle anlattım. Confusion matrix’i iyi anlamak metrik değerlerinin formulasyonunu anlama açısından oldukça önemli.

Bir sonraki yazımda metrik değerlerini anlatmaya devam edeceğim ve mantığı ile birlikte aşağıdaki soruları yanıtlayacağım:

- Accuracy, Precision, Recall ve F1_Score gibi metrikleri nasıl hesaplıyoruz?
- Neden farklı metriklere ihtiyaç duyuyoruz?
- Confusion Matrix ile diğer metriklerin bağlantısı nedir?

Sorunuz olursa ya da benimle iletişim kurmak isterseniz tüm sosyal medya hesaplarım web sitem içerisinde yer alıyor. Bir sonraki yazıda görüşmek üzere!

--

--

İrem Kömürcü

Google Developer Expert on Machine Learning | Data Scientist @Deloitte | iremkomurcu.com