Model Performansını Değerlendirmek — Sınıflandırma

Buse Köseoğlu
BAU Yazılım ve Bilişim Kulübü
4 min readFeb 6, 2021

Bir makine öğrenmesi projesi yaparken veri setini eğitim ve test veri setleri olmak üzere ikiye ayırırız. Bunun nedeni modelimizden aldığımız sonucun ne kadar geçerli olup olmadığını görmektir. Bu yüzden modeli ilk olarak eğitim veri seti ile eğitir ve bu süreçte test veri setini görmesine izin vermeyiz. Daha sonra ise modelimizin eğitiminin ne kadar iyi geçtiğini ölçmek için modele test veri setini veririz ve tahminlerini yapmasını isteriz. Bu yazıda da modelin eğitimi ve testi sonucu aldığımız sonuçları nasıl değerlendirebileceğimizi öğreneceğiz. Bu işlemi sınıflandırma modellerini değerlendirmek için gerçekleştireceğiz.

Python üzerinden örnekleri yapabilmek için breast cancer veri setini kullanacağız. Bu yazı için kısaca KNN modeli oluşturacak kadar çalışma hazırladım. Yorum satırlarından kodların ne için kullanıldığını okuyabilirsiniz. Breast Cancer veri setini incelediğim kodlara buradan ulaşabilirsiniz.

Confusion Matrix (Hata Matrisi)

Sınıflandırmada bir şeyi kaç kere doğru ve yanlış sınıflandırdığımızı sayarız. Hata matrisi bunu görebilmemiz için bize kolaylık sağlar. Hata matrisini iyi anlamak önemlidir çünkü diğer kullanacağımız metrikleri de hata matrisinden türetip kullanacağız. Öncelikle hata matrisinin nasıl gözüktüğüne bakalım.

Hata matrisinde 4 farklı değer vardır. Kullandığımız breast cancer veri seti üzerinden bu değerleri açıklayabiliriz.

  • True Positive — TP (Doğru Pozitif): Gerçekten hasta olan kişiye hasta demek.
  • False Positive — FP (Yablış Pozitif): Hasta olmayan birine hasta demek.
  • False Negative — FN (Yanlış Negatif): Hasta olan birine hasta değil demek.
  • True Negative — TP (Doğru Negatif): Hasta olmayan birine hasta değil demek.

Kullandığımız veri seti üzerinden confusion_matrix() fonksiyonu ile modelimizin tahmin ettiği değerleri inceleyebiliriz. Bu değerlere hem eğitim hem de test seti için bakacağız.

confusion_matrix() fonksiyonunu kullanırken içine parametre olarak gerçek değerleri (y_train veya y_test) ve tahmin edilen değerleri (y_pred_train veya y_pred_test) parametrelerini veriyoruz.

Üstteki matris eğitim veri seti için alttaki matris de test veri seti için oluştu. Matrisleri incelersek:

Accuracy (Doğruluk)

Doğru olarak sınıflandırılan değerlerin yüzdesidir.

Kurduğumuz modelde accuracy değerini incelersek:

Eğitim veri setindeki değerlerin %94’ü, test veri setindeki değerlerin %95’i doğru olarak sınıflandırılmış.

Precision (Kesinlik)

Pozitif olarak tahmin ettiğimiz değerlerin gerçekten kaç adedinin pozitif olduğunu göstermektedir.

Kurduğumuz modelde precision değerini incelersek:

Recall (Duyarlılık)

Pozitif olarak tahmin etmemiz gereken işlemlerin ne kadarını pozitif olarak tahmin ettiğimizi gösteren bir metriktir. “Gerçek pozitiflerin ne kadarı doğru bir şekilde tanımlandı?”

Kurduğumuz modelde recall değerini incelersek:

F1 Skoru

Kesinlik (Precision) ve Duyarlılık (Recall) değerlerinin her ikisi de problem açısından önem taşıyor ise her iki değerin harmonik ortalaması (harmonic mean) olan F1 skor da önemli hale gelecektir. F1 skor harmonik ortalamanın davranışı gereği küçük olan değere yakın sonuç vererek kesinlik ya da duyarlılık skorlarından herhangi biri düşük ise sonucun düşük olmasını sağlayacaktır. Ayrıca tahmin edilcek sınıfların dağılımının eşit olmadığı durumlarda f1 skorunun kullanılması daha iyi olur.

Kurduğumuz modelde f1 skor değerini incelersek:

ROC Eğrisi ve ROC-AUC Skoru

ROC eğrisi yanlış pozitif orana karşılık doğru pozitif oranın eğrisini çizer. Eğrinin altında kalan alana AUC (Area Under Curve) denir. İyi bir ROC eğrisi grafikteki kesikli çizginin uzağında sol üst köşeye doğru kalır.

Bu eğri altında kalan alan ise roc_auc_score() fonksiyonu ile bulunur. Bu alan 1’e ne kadar yakınsa model tahminde o kadar iyi demektir. ROC-AUC skorunu bulmak için:

Okuduğunuz için teşekkür ederim. Bir sonraki yazıda görüşmez üzere.

--

--