Kurs
Bu yıl, yapay zekâ ve makine öğreniminin manşetlere damga vurduğu veri bilimi alanında yeniliklerle geçti. 2023’te kaydedilen ilerlemeden şüphe yokken, bu makine öğrenimi atılımlarının çoğunun, modellerin tabi tutulduğu doğru değerlendirme süreçleri sayesinde mümkün olduğunu kabul etmek önemlidir. Veri uzmanlarının görevi, bir makine öğrenimi modelinin performansını ölçmek için doğru değerlendirmelerin ve süreçlerin yürütülmesini sağlamaktır. Bu sadece faydalı değil — zorunludur.
Veri biliminin inceliklerini kavramak istiyorsanız, bu makale sizi, model değerlendirmesinde yaygın olarak kullanılan, nispeten basit ama güçlü bir araç olan karışıklık matrisiyle model değerlendirmesinin kritik adımlarında yönlendirecek.
Öyleyse konuya dalalım ve karışıklık matrisi hakkında daha fazlasını öğrenelim.
Karışıklık Matrisi Nedir?
Karışıklık matrisi, bir modelin performansını değerlendirmek için kullanılan ve görsel olarak bir tabloyla temsil edilen bir araçtır. Modelin performansı, hataları ve zayıflıkları hakkında veri uzmanlarına daha derin bir içgörü sağlar. Bu da, modelin ince ayarla daha ileri analizine olanak tanır.
Karışıklık Matrisinin Yapısı
Bir e-postayı spam ya da spam değil olarak tanımlama örneğini kullanarak, karışıklık matrisinin temel yapısını öğrenelim.
- True Positive (TP) - Modeliniz pozitif sınıfı tahmin etti. Örneğin, bir spam e-postayı spam olarak tanımlamak.
- True Negative (TN) - Modeliniz negatif sınıfı doğru şekilde tahmin etti. Örneğin, normal bir e-postayı spam değil olarak tanımlamak.
- False Positive (FP) - Modeliniz pozitif sınıfı hatalı şekilde tahmin etti. Örneğin, normal bir e-postayı spam olarak tanımlamak.
- False Negative (FN) - Modeliniz negatif sınıfı hatalı şekilde tahmin etti. Örneğin, bir spam e-postayı normal e-posta olarak tanımlamak.
Karışıklık matrisinin mantığını gerçekten kavramak için aşağıdaki görselleştirmeye bakın:

Karışıklık Matrisinin Temel Yapısı
Karışıklık Matrisi Terminolojisi
Karışıklık Matrisini derinlemesine anlamak için, bir modelin performansını ölçmekte kullanılan önemli metrikleri bilmek gerekir.
Önemli metrikleri tanımlayalım:
Doğruluk (Accuracy)
Doğruluk, toplam doğru sınıflandırma sayısının toplam vaka sayısına oranıdır.

Duyarlılık/Hatırlama (Recall/Sensitivity)
Duyarlılık/Hatırlama, doğru pozitiflerin toplamının, gerçek pozitiflerin toplamına oranıdır.

Kesinlik (Precision)
Kesinlik, doğru pozitiflerin toplamının, tahmin edilen pozitiflerin toplamına oranıdır.

Özgüllük (Specificity)
Özgüllük, doğru negatiflerin toplamının, gerçek negatiflerin toplamına oranıdır.

F1 Skoru
F1 Skoru, kesinlik ve duyarlılığın harmonik ortalamasını alan tek bir metriktir.

Karışıklık Matrisinin Rolü
Karışıklık matrisini daha iyi kavramak için, amacını ve neden yaygın olarak kullanıldığını anlamalısınız.
Bir modelin performansını ya da genel olarak herhangi bir şeyi ölçerken insanlar çoğunlukla doğruluğa odaklanır. Ancak doğruluk metriğine aşırı derecede bel bağlamak yanlış kararlara yol açabilir. Bunu anlamak için, doğruluğu tek başına bir metrik olarak kullanmanın sınırlamalarını ele alacağız.
Tek başına metrik olarak doğruluğun sınırlamaları
Yukarıda tanımlandığı gibi, doğruluk toplam doğru sınıflandırma sayısının toplam vaka sayısına oranıdır. Ancak bu metriği tek başına kullanmanın aşağıdakiler gibi sınırlamaları vardır:
- Dengesiz Verilerle Çalışma: Hiçbir veri kusursuz değildir ve doğruluk metriğinin kullanımını, öngörü gücü açısından değerlendirmek gerekir. Örneğin, bir sınıfın diğerine göre baskın olduğu bir veri kümesiyle çalışmak, modelin çoğunluk sınıfını tahmin edeceği için daha yüksek doğruluk elde etmesine neden olur.
- Hata Türleri: Modelinizin belirli bir bağlamda nasıl performans gösterdiğini anlamak ve öğrenmek, ince ayar yapmanıza ve performansını artırmanıza yardımcı olur. Örneğin, FP ve FN gibi hata türlerini bir karışıklık matrisiyle ayırt etmek, modelin sınırlamalarını keşfetmenizi sağlar.
Bu sınırlamalar karşısında, karışıklık matrisi ve çeşitli metrikler, bir modelin performansını nasıl iyileştireceğinize dair daha ayrıntılı içgörüler sunar.
Karışıklık matrisinin faydaları
Bir karışıklık matrisinin temel yapısında görüldüğü gibi, tahminler dört kategoriye ayrılır: True Positive, True Negative, False Positive ve False Negative.
Bu ayrıntılı döküm, bir modelin performansını iyileştirmek için değerli içgörüler ve çözümler sunar:
- Dengesiz Verilerin Çözümü: İncelendiği üzere, doğruluğu tek başına metrik olarak kullanmak dengesiz verilerde sınırlamalara sahiptir. Kesinlik ve duyarlılık gibi diğer metrikleri kullanmak, daha dengeli bir bakış ve daha doğru bir temsil sağlar. Örneğin, finans gibi sektörlerde yanlış pozitifler ve yanlış negatifler ciddi sonuçlara yol açabilir.
- Hata Türü Ayrıştırma: Makine öğrenimi modelinin ürettiği farklı hata türlerini anlamak, sınırlamaları ve iyileştirme alanlarını ortaya koyar.
- Ödünleşimler: Bir Karışıklık Matrisinde farklı metrikler arasındaki ödünleşimler kritiktir; çünkü birbirlerini etkilerler. Örneğin, kesinlikteki bir artış genellikle duyarlılıkta bir azalmaya yol açar. Bu da, etkilenen metrik değerlerinden yararlanarak modelin performansını iyileştirmenize rehberlik eder.
Karışıklık Matrisi Hesaplama
Artık temel bir karışıklık matrisini, terminolojisini ve kullanımını iyi anladığımıza göre, bir karışıklık matrisini elle hesaplamaya ve ardından pratik bir örneğe geçelim.
Karışıklık matrisini elle hesaplama
İşte bir Karışıklık Matrisi’nin nasıl elle hesaplanacağına dair adım adım bir kılavuz.
Sonuçları tanımlayın
İlk adım, görevinizin iki olası sonucunu belirlemek olacaktır: Pozitif veya Negatif.
Tahminleri toplayın
Olası sonuçlar tanımlandıktan sonra, bir sonraki adım modelin tüm tahminlerini toplamak, modelin her sınıfı kaç kez tahmin ettiği ve gerçekleşme sayılarını kaydetmektir.
Sonuçları sınıflandırın
Tüm tahminler bir araya getirildikten sonra, sonraki adım sonuçları dört kategoriye ayırmaktır:
- True Positive (TP)
- True Negative (TN)
- False Positive (FP)
- False Negative (FN)
Bir matris oluşturun
Sonuçlar sınıflandırıldıktan sonra, bir dizi metrik kullanılarak daha fazla analiz etmek üzere bunları bir matris tablosunda sunmak bir sonraki adımdır.
Karışıklık matrisi pratik örnek
Bu süreci göstermek için pratik bir örnekten geçelim.
E-postayı spam veya spam değil olarak tanımlama örneğiyle devam ederek, spam’in Pozitif, spam değilin Negatif olduğu varsayımsal bir veri kümesi oluşturalım. Aşağıdaki verilere sahibiz:
- 200 e-posta arasında, gerçekte 80 e-posta spam’dir ve model bunların 60’ını doğru şekilde spam olarak tanımlar (TP).
- 200 e-posta arasında, 120 e-posta spam değildir ve model bunların 100’ünü doğru şekilde spam değil olarak tanımlar (TN).
- 200 e-posta arasında, model 20 spam olmayan e-postayı hatalı şekilde spam olarak tanımlar (FP).
- 200 e-posta arasında, model 20 spam e-postayı atlar ve spam değil olarak tanımlar (FN).
Bu noktada, sonucu tanımladık ve verileri topladık; sonraki adım sonuçları dört kategoriye ayırmaktır:
- True Positive: 60
- True Negative: 100
- False Positive: 20
- False Negative: 20
Sıradaki adım bunu bir Karışıklık Matrisi’ne dönüştürmektir:
|
Gerçek / Tahmin |
Spam (Pozitif) |
Spam Değil (Negatif) |
|
Spam (Pozitif) |
60 (TP) |
20 (FN) |
|
Spam Değil (Negatif) |
20 (FP) |
100 (TN) |
Peki Karışıklık Matrisi bize ne söylüyor?
- Doğru Pozitifler ve Doğru Negatifler doğru tahminleri gösterir.
- Yanlış Pozitifler, modelin pozitif sınıfı hatalı tahmin ettiğini gösterir.
- Yanlış Negatifler, modelin pozitif sınıfı tanımlayıp tahmin edemediğini gösterir.
Bu karışıklık matrisini kullanarak Doğruluk, Duyarlılık, Kesinlik, Özgüllük ve F1 Skoru gibi farklı metrikleri hesaplayabiliriz.

Karışıklık matrisi metrik çıktısı
Kesinlik (Precision) ve Duyarlılık (Recall)
F1 skorunun formülünde neden kesinlik ve duyarlılığın yer aldığını merak ediyor olabilirsiniz. F1 skoru, dengesiz verilerle çalışırken veya kesinlik ile duyarlılık arasındaki ödünleşimi dengelemek istediğinizde kritik öneme sahiptir.
Kesinlik, pozitif tahminlerin isabetini ölçer. ‘Model TRUE tahmin ettiğinde, ne sıklıkla doğruydu?’ sorusunu yanıtlar. Kesinlik özellikle, yanlış pozitifin maliyetinin yüksek olduğu durumlarda önemlidir.
Duyarlılık ya da hassasiyet, model tarafından doğru tanımlanan gerçek pozitiflerin sayısını ölçer. ‘Sınıf gerçekte TRUE olduğunda, sınıflandırıcı bunu ne sıklıkla doğru bildi?’ sorusunu yanıtlar.
Duyarlılık, pozitif bir örneği kaçırmanın (FN) negatif örnekleri hatalı şekilde pozitif etiketlemekten daha kötü olduğu durumlarda önemlidir.
- Kesinlik kullanımı: Yanlış pozitiflerin ciddi sonuçları olabilir. Örneğin, finans sektöründe kullanılan bir sınıflandırma modelinin bir işlemi yanlışlıkla sahtekârlık olarak tanımlaması. Bu gibi senaryolarda kesinlik metriği önemlidir.
- Duyarlılık kullanımı: Tüm pozitif vakaları belirlemek hayati olabilir. Örneğin, tıp alanında kullanılan sınıflandırma modellerinin doğru teşhis koyamaması yıkıcı olabilir. Tüm pozitif vakaların doğru tanımlanmasının kritik olduğu senaryolarda duyarlılık metriği önemlidir.
Python'da Scikit-learn ile Karışıklık Matrisi
Bunu somutlaştırmak için, Python'da Scikit-learn kullanarak bir Rastgele Orman (Random Forest) sınıflandırıcı ile bir karışıklık matrisi oluşturalım.
İlk adım, gerekli kütüphaneleri içe aktarmak ve sentetik veri kümenizi oluşturmaktır.
# Import Libraries
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import confusion_matrix
import matplotlib.pyplot as plt
import seaborn as sns
# Synthetic Dataset
X, y = make_classification(n_samples=1000, n_features=20,
n_classes=2, random_state=42)
# Split into Training and Test Sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
Bir sonraki adım, basit bir random forest sınıflandırıcı kullanarak modeli eğitmektir
# Train the Model
model = RandomForestClassifier(random_state=42)
model.fit(X_train, y_train)
Pratik örnekte yaptığımız gibi, sonuçları sınıflandırmamız ve bunu bir karışıklık matrisine dönüştürmemiz gerekecek. Bunu önce test verileri üzerinde tahmin yaparak ve ardından bir Karışıklık Matrisi üreterek yapıyoruz:
# Predict on the Test Data
y_pred = model.predict(X_test)
# Generate the confusion matrix
cm = confusion_matrix(y_test, y_pred)
Şimdi karışıklık matrisinin görsel bir temsilini üretmek istiyoruz:
# Create a Confusion Matrix
plt.figure(figsize=(8, 8))
sns.heatmap(cm, annot=True, fmt='d', cmap='Greens')
plt.title('Confusion Matrix')
plt.ylabel('True label')
plt.xlabel('Predicted label')
plt.show()
Çıktı şu şekilde:

Random Forest Karışıklık Matrisi Çıktısı
Tadaa 🎉 Scikit-learn kullanarak ilk Karışıklık Matrisi'nizi başarıyla oluşturdunuz!
Sonuç
Bu makalede, bir Karışıklık Matrisinin tanımını, değerlendirme aracı etrafındaki önemli terminolojiyi ve farklı metriklerin sınırlamalarını ve önemini ele aldık. Bir Karışıklık Matrisi’ni elle hesaplayabilmek, veri bilimi bilgi birikiminiz için olduğu kadar, Scikit-learn gibi kütüphanelerle uygulayabilmek açısından da önemlidir.
Karışıklık Matrisine daha derinlemesine dalmak isterseniz, R ile karışıklık matrislerini R'de Karışıklık Matrisini Anlamak yazımızla pratik edin. Python'da Model Doğrulama kursumuzla biraz daha derine inin; burada model doğrulamanın temellerini, doğrulama tekniklerini öğrenecek ve doğrulanmış, yüksek performanslı modeller oluşturmaya başlayacaksınız.
İstekli bir öğrenen olarak, teknik veri bilimi birikimimi ve güçlü kişilerarası becerilerimi hayata geçirerek teknoloji bilgimi ve yazma becerilerimi geliştirmeyi ve genişletmeyi hedefliyorum.
Farmakolojiden Veri Bilimi dünyasına geçiş yaptım ve Lambda School ile 9 aylık bir bootcamp tamamladım.
Makine Öğrenimi ve Yapay Zekâ alanlarında teknik kodlama ve yazma becerilerimi uygulamak ve geliştirmekle ilgileniyorum.
Şu anda Veri Bilimci ve Serbest Çalışan Teknik Yazarı olarak çalışıyorum.

