Doğruluk (Accuracy) oranı neden bazen yanıltır? Karışıklı Matrisi (Confision Matrix) neden önemlidir?

Sınıflandırma (Clustering) algoritmalarını kullanırken farklı başarı kriterlerini değerlendirmemiz gerekebilir. Genel olarak kullanılan doğruluk (accuracy) oranları, bazı datasetlerinde anlamlı olmayabilir. Özellikle de elinizde dengesiz dağılmış bir veri seti varsa (imbalanced data-set) daha dikkatli davranmalısınız.

Örneğin siz bir bankada çalışıyorsunuz ve elinizde kredi kartı kullanımına dair 10.000 satırlık datasetiniz var. Bu datasetini kullanarak dolandırıcılıkla yapılan kredi kart işlemlerini tespit etmeye çalışıyorsunuz. Bu datanın içerisinde sadece 10 adet işlem dolandırıcılığa ait olsun.

Bu durumda model yazmadan, bütün işlemlere “güvenli işlemdir” derseniz bile doğruluk oranınız:

Oldukça yüksek. Fakat bu doğruluk oranı hiç bir işe yaramayacaktır, çünkü kart işlemleri içerisindeki dolandırıcılığa ait olan 10 adet işlemi bulamamışsınızdır.

Bu durumda sizin başarı kriteriniz biraz daha farklı olmalıdır.

Mesela;
- Bu işlem kullanıcının kendisine aittir dediklerinizin kaç tanesi dolandırıcılara ait çıkmış
- Dolandırıcılara iattir dediğiniz işlemlerden kaç tanesi gerçekten kart sahibine aitmiş.

Yani hayatınıza duyarlılık (recall) ve kesinlik (precision) olmak üzere iki metriği koymanız gerekiyor. Bu konuların temelinde Confusion Matrix yapısı var.

Örneğin, kanserli hastaları tespit etmeye çalıştığınız bir datasetiniz olsun. 1000 tane sağlıklı insan içerisinden 5 tane kanser olan kişiyi tahmin etmeye çalışıyorsunuz. Yine accuruacy sizi yanıltacaktır

TP (True positive: Doğru Pozitif): Hastaya hasta demek.
FP (False positive: Yanlış Pozitif): Hasta olmayana hasta demek.
TN (True negative: Doğru Negatif): Hasta olmayana hasta değil demek.
FN (False negative: Yanlış Negatif): Hasta olana hasta değil demek.

Açıklamalar uzun sure sonra karıştırılabilir. Bu yuzden aklımda tutabilmek için ben şu şekilde düşünüyorum; Pozitif veya negatif olma durumu hasta ve ya hasta olmama durumudur. True veya False olmasını da bu durumun doğruluğu veya yanlışlığıdır.

Duyarılık (Recall) : True Positive True postive false negative
Gerçekten hasta olanların kaç tanesine hasta dedin, doğru bildin oranıdır.

Kesinlik (Precision): Hasta dediklerinden kaçı gerçekten hasta?

Bunları Python ile yazmak istersek, sklearn kütüphanesini kullanabilirsiniz.

from sklearn.metrics import precision_score, recall_score

Skore hesaplarken parantezin içine önce gerçek sonuçları, sonra tahmin ettiklerinizin setini koymalısınız.

precision_score(y_true, y_prediction)
recall_score(y_true, y_prediction)

Data Science and all related topics..

Data Science and all related topics..