Keras ile Python’da Hata Matrisi Oluşturma

Giriş

Keras, kullanımı kolay ve güçlü bir yapay zeka kütüphanesidir. Python ile birlikte kullanıldığında, hem yeni başlayanlara hem de deneyimli geliştiricilere derin öğrenme modelleri oluşturma imkanı sunar. Derin öğrenme uygulamalarında modelin başarısını değerlendirme yöntemlerinden biri de hata matrisidir (confusion matrix). Bu yazıda, Keras kullanarak bir modelin hata matrisini nasıl oluşturacağımızı ve yorumlayacağımızı öğrenmek için detaylı bir rehber hazırladık.

Hata Matrisi Nedir?

Hata matrisi, sınıflandırma modelinin başarısını değerlendirmek için kullanılan bir araçtır. Bu matris, modelin çeşitli sınıflar üzerindeki tahminlerini gösterir. Temel olarak, gerçek değerler ile modelin tahmin ettiği değerler arasındaki karşılaştırmayı sunar. Hata matrisinin her bir elemanı, belirli bir sınıf için doğru veya yanlış tahmin edilip edilmediğini göstermektedir. Örneğin, ikili sınıflandırma senaryosunda, matrisin 2×2 boyutunda olduğu ve dört tür durumu içerdiği görülmektedir: true positive (TP), false positive (FP), true negative (TN) ve false negative (FN).

Hata matrisinin en büyük avantajlarından biri, modelin hangi sınıfları ne ölçüde karıştırdığını gözler önüne sermesidir. Bu sayede, modelin güçlü ve zayıf yönleri hakkında bilgi sahibi olabilir, ayrıca sınıflar arasındaki dengesizliği değerlendirebiliriz. Örneğin, bir model belirli bir sınıfı çok sık tahmin ederken diğerini göz ardı ediyorsa, bu durum olumsuz bir durumdur ve modelin iyileştirilmesi gerektiğini gösterir.

Keras ile Model Eğitimi

Keras ile bir model oluşturmak için öncelikle gerekli kütüphaneleri yüklememiz gerekiyor. Genellikle veri analizi için Pyhon’un Pandas ve NumPy kütüphaneleri, veri görselleştirme için Matplotlib ve modelleme için Keras kullanılır. İlk olarak, gerekli kütüphaneleri projeye dahil edelim:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from keras.models import Sequential
from keras.layers import Dense

Veri setimizi yükledikten sonra, modelimizi eğitmek için veriyi eğitim ve test olarak ikiye böleceğiz. Bunun için, özellikle belirli bir oran kullanarak train_test_split fonksiyonunu kullanacağız:

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

Bu veriyi kullanarak basit bir yapay sinir ağı oluşturalım. Modelimiz, bir giriş katmanı, bir ya da birden fazla gizli katman ve bir çıkış katmanına sahip olacak:

model = Sequential()
model.add(Dense(12, input_dim=8, activation='relu'))
model.add(Dense(8, activation='relu'))
model.add(Dense(1, activation='sigmoid'))

Modeli Derleme ve Eğitme

Modelimizi oluşturdumuzda, onu derlemeliyiz. Modelin eğitim süreci için optimizer ve kayıp fonksiyonunu seçmeliyiz. İkili sınıflandırma için genellikle ‘binary_crossentropy’ kayıp fonksiyonu ve ‘adam’ optimizer’ı kullanılır:

model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])

Daha sonra modelimizi eğitime alabiliriz. Eğitim sırasında, modelin gelişimini görebileceğimiz bir callback ile eğitimi takip etmeyi öneririm:

history = model.fit(X_train, y_train, epochs=150, batch_size=10, validation_data=(X_test, y_test))

Eğitim tamamlandıktan sonra, modelin ne kadar iyi performans gösterdiğini değerlendirmek için test veri setimizi kullanabiliriz. Modelimizin doğruluğunu görmek için şu şekilde bir kod kullanabiliriz:

scores = model.evaluate(X_test, y_test)
print(f'Doğruluk: {scores[1]*100}')

Hata Matrisi Oluşturma

Modelimizi eğittikten ve doğruluğunu hesapladıktan sonra, artık hata matrisimizi oluşturmaya hazırız. Bunun için, Keras’ın model.predict fonksiyonu ile tahminlerimizi alabiliriz:

y_pred = model.predict(X_test) 

# Tahminleri ikili forma dönüştür
# Eğer tahmin 0.5'ten büyükse 1, küçükse 0 olarak değerlendiriyoruz
threshold = 0.5
y_pred_classes = (y_pred > threshold).astype(int)

Şimdi elde ettiğimiz tahminleri kullanarak hata matrisimizi oluşturalım. Bunu yaparken, sklearn kütüphanesinin confusion_matrix fonksiyonunu kullanabiliriz:

from sklearn.metrics import confusion_matrix
cm = confusion_matrix(y_test, y_pred_classes)

Ve son olarak, hata matrisimizi görselleştirmek için seaborn kütüphanesini kullanabiliriz. Şu şekilde bir fonksiyon tanımlayarak hata matrisimizi daha anlamlı hale getirebiliriz:

import seaborn as sns

def plot_confusion_matrix(cm):
    plt.figure(figsize=(10,7))
    sns.heatmap(cm, annot=True, fmt='d', cmap='Blues')
    plt.ylabel('Gerçek Sınıf')
    plt.xlabel('Tahmin Edilen Sınıf')
    plt.title('Hata Matrisi')
    plt.show()

Hata Matrisinin Yorumlanması

Hata matrisimizi oluşturduktan sonra, elde ettiğimiz sonuçları yorumlamamız gerekecek. Hata matrisinin elemanlarını inceleyerek modelimizin doğru tahminlerini ve hatalı tahminlerini görebiliriz. Örneğin, TP sayısı yüksekse, modelimiz o sınıfı iyi bir şekilde tanıyor demektir. FP sayısı yüksekse, modelimiz bu sınıfı yanlış tahmin etmiş demektir ve bu durum, modelin o sınıf üzerindeki performansını değerlendirmemizde önemli bir noktadır.

Hatalı tahminlerin analizi, modelin daha fazla veriye ihtiyaç duyup duymadığını belirlemede ve model yapısının iyileştirilmesi için üzerinde çalışılması gereken alanları saptamada büyük önem taşır. Örneğin, modelin bir sınıfı sürekli olarak yanlış tahmin ettiğini gözlemleyebiliriz. Bu durumda, o sınıfla ilgili daha fazla eğitim verisi eklemek ve model yapısını gözden geçirmek gerekebilir.

Son olarak, hata matrisinden elde ettiğimiz bilgilerle birlikte diğer ölçümleri de değerlendirebiliriz. Örneğin, F1 skoru, doğruluk ve hata oranı gibi ek metrikler de modelin genel performansını değerlendirmede yardımcı olacaktır.

Özet

Bu yazıda, Keras ile model eğitimi sürecinin yanı sıra, hata matrisinin nasıl oluşturulacağını ve yorumlanacağını ele aldık. Hata matrisi, modelimizin sınıflandırma başarısını analiz etmemize yardımcı olurken, hangi alanlarda iyileştirmeler yapılması gerektiğine dair bilgi de sunmaktadır. Keras ile hata matrisi oluşturma süreci, makine öğrenimi ve derin öğrenme uygulamalarında kritik bir adımdır. Uyguladığınız projelerde bu yöntemleri kullanarak modelinizi daha etkili bir şekilde değerlendirebilir ve geliştirebilirsiniz.

Elde ettiğiniz sonuçları düşünebilir ve kendi projelerinizde bunu deneyimleyebilirsiniz. Hata matrisini analiz ederek modeliniz hakkında daha fazla bilgi sahibi olabilir ve gerektiğinde iyileştirmeler yaparak daha sağlam ve güvenilir sonuçlar elde edebilirsiniz.

Scroll to Top