İmbalansız Veri Setlerinde Accuracy Tuzağı: Doğru Metrik Seçimi
# İmbalansız Veri Setlerinde Accuracy Tuzağı: Doğru Metrik Seçimi
Bir kredi kartı dolandırıcılık tespiti modeliniz %99 accuracy gösteriyor. Harika, değil mi? Aslında hayır. Eğer veri setinizde 10.000 işlemden 9.900'ü meşru, sadece 100'ü dolandırıcılıksa, model hiçbir dolandırıcılığı tespit etmese bile %99 accuracy elde eder. Çünkü meşru işlemleri doğru sınıflandırmak yeterlidir.
Bu, imbalansız veri setlerinde accuracy'nin tuzağıdır.
Accuracy = (Doğru Pozitif + Doğru Negatif) / Toplam
Fakat imbalansız veriler için şunlar daha değerlidir:
Precision = Doğru Pozitif / (Doğru Pozitif + Yanlış Pozitif)
"Pozitif dediğim kaç tanesinin gerçekten pozitif?"
Recall = Doğru Pozitif / (Doğru Pozitif + Yanlış Negatif)
"Tüm pozitiflerden kaç tanesini yakaladım?"
F1-Score = 2 × (Precision × Recall) / (Precision + Recall)
Precision ve recall'un dengeli ortalaması
Kredi kartı dolandırıcılığı tespiti üzerinde çalışalım:
1import numpy as np2from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score, confusion_matrix34# Gerçek etiketler (1 = dolandırıcılık, 0 = meşru)5y_true = np.array([0]*9900 + [1]*100)67# Model tahminleri (hiçbir dolandırıcılığı tespit etmiyor)8y_pred = np.array([0]*10000)910print(f"Accuracy: {accuracy_score(y_true, y_pred):.4f}") # 0.990011print(f"Precision: {precision_score(y_true, y_pred, zero_division=0):.4f}") # 0.000012print(f"Recall: {recall_score(y_true, y_pred, zero_division=0):.4f}") # 0.000013print(f"F1-Score: {f1_score(y_true, y_pred, zero_division=0):.4f}") # 0.00001415print("\nConfusion Matrix:")16print(confusion_matrix(y_true, y_pred))Çıktı:
1Accuracy: 0.99002Precision: 0.00003Recall: 0.00004F1-Score: 0.000056Confusion Matrix:7[[9900 0]8[ 100 0]]Akkurat görünen model, tüm dolandırıcılıkları kaçırdı! Precision ve F1-Score bunu hemen gösteriyor.
1. Veri imbalansını kontrol et:
1from collections import Counter2print(Counter(y_true))3# Counter({0: 9900, 1: 100})2. Doğru metriği seç:
- Yanlış negatif pahalıysa (hastalık tespiti, dolandırıcılık): Recall önemliyse
- Yanlış pozitif pahalıysa (spam filtresi): Precision önemliyse
- İkisi de önemliyse: F1-Score kullan
3. Confusion matrix'i oku:
1Tahmin: Negatif Tahmin: Pozitif2Gerçek: Negatif TN FP3Gerçek: Pozitif FN TPİmbalansız verilerle çalışırken accuracy'ye güvenme. Confusion matrix, precision, recall ve F1-score kullan. Doğru metrik seçimi, modelinizin gerçek performansını gösterir.
bknz: Multiclass Sınıflandırmada Performans Metrikleri: Confusion Matrix Ötesi
0 yorum