Sınıflandırma Modellerinde Model Performansını ölçen Confusion Matris'i Nedir? Nasıl Analiz edilir? Yüksek Accuracy'e sahip model iyi bir model midir?



Sınıflandırma Modelleri için kullanılan Model Performans Matrisi (Confusion Matrix) nedir? Nasıl Yorumlanır? İyi model seçimi için accuracy'e bakmak yeterli midir? Bu yazımızda bu sorulara cevap arayacağız.

 Matris aşağıdaki şekildedir. Sarı ve kırmızı alanlar bu matrisin en önemli bölgeleridir. Sarı alanın yüksek olmasını isteriz (olacak demişiz olmuş). Kırmızı alanın yüksek olmasınıda istemeyiz(olmayacak demişiz olmuş). Matrisimiz True Positive(TP), False Negative (FN), False Negative (FN), True Negative (TN) değerlerini içerir. Diğer değerler Accuracy, Precision, Sensitivty, Mathews Correlation Coefficient(MCC) F1 Score aşağıda ki matrisden hesaplanır. Formulleride verilmiştir.

In [90]:
from IPython.display import Image, display
import emoji
Image(filename='C:/Analitikmadeni/confusion_matrix/c1.jpg',width=900,height=600)
Out[90]:

 Örnek olarak bir kanser araştırması için model kurmamız gerekiyor. Daha önce kanser yaşamış 740 hasta için 5 yıl içinde kanser tekrarlarmıyı tahmin edeceğiz.Gerçekte 5 yıl içinde 180 hastada kanser tekrar ediyor ve 560 hastada tekrar etmiyor. Farz edelim ki bir karar agacı modeli kurduk ve performans matrisimizin çıktısı aşağıda ki şekilde olsun.

In [82]:
Image(filename='C:/Analitikmadeni/confusion_matrix/kararagacı.jpg',width=900,height=400)
Out[82]:


TP: 120 kişide kanser tekrar edecek demişiz, gerçekte tekrar etmiş(doğru tahmin ve hem model hem tedavi açısından güzel bir şey)
FP: 250 kişide kanser tekrar etmeyecek demişiz, gerçekte tekrar etmemiş
FN: 60 kişide kanser tekrar etmeyecek demişiz, gerçekte kanser tekrar etmiş.(Kötü birşey malesef kanser olacak insanlara olmayacak demek)
TN: 310 kişide kanser tekrar etmeycek demişiz gerçektede kanser tekrar etmemiş.
Bu değerleri kullanarak diğer metrikler Accuracy, Precision, Sensitivity, MCC, F1 score hesaplanabilir. Bu modelin performansı fena değil. Aşağıda ki diğer modellerdede aynı değerleri hesaplayalım. Bir karşılaştıma yapalim.

  Mükemmel model aşağıdadır. 180 kişi kanser tekrar edecek demişiz, gerçekte tekrar etmiş. 560 kişi tekrar etmeyecek demişiz gerçekte tekrar etmemiş.

In [81]:
Image(filename='C:/Analitikmadeni/confusion_matrix/mukemmel.jpg',width=900,height=400)
Out[81]:

  Aşağıda tahmin modeli 1 tane olacak demiş. Güzel bir model mi sizce? 1 hastada kanser tekrar edecek demişiz ama kanser 179 hastada tekrar etmiş. Bu modelin accuracy'si 0.75 olup karar ağacı modelimizden yüksektir. Precisionda 1'dir Bu model karar ağacı modelinden daha iyi bir model midir? Eğer ki MCC ve F1Score değerlerine bakarsak karar ağacı modeli daha iyi bir modeldir diyebiliriz. Bu bir accuracy paradoksudur. Model seçiminde duruma göre hangi metriğin kullanacağı değişebilir. Tartışmali bir konudur.

In [88]:
Image(filename='C:/Analitikmadeni/confusion_matrix/tahmin_0.jpg',width=900,height=400)
Out[88]:

 Aşağıda tahmin modeli 1 tane olmayacak demiş. Güzel bir model mi sizce? 179 hastada kanser geri dönmüş ve model bunu kaçırmış. Metrik değerlere bakacak olusak sensitivity çok yüksek. Diğer değerler çok kötü. Berbat bir model.

In [89]:
Image(filename='C:/Analitikmadeni/confusion_matrix/tahmin_1.jpg',width=900,height=400)
Out[89]:

 Sonuç olarak model performansını ölçerken sadece accuracy veya precision bizi yanıltabilir. Hele ki veri setimiz unbalanced ise yani Actual değerleri örnek olarak (1 oranı:%20 0 oranı: %80) ise MCC bakmak daha doğru olabilir. Bazı istatistikçilere göre MCC unbalanced durumlarda kullanılabilecek bir performans metriğidir. ROC curve'de ve altında ki alan AUC(Area under Curve) 'de unbalanced case'de kullanılabilir. Detaylı bilgi için aşağıda ki linki tıklayabilirsiniz