BaşlayınÜcretsiz Başlayın

Kesinlik-Duyarlılık dengesi

Sınıflandırma görevlerinde sıkça karşına çıkan bir terim var: Precision-Recall trade-off. Bu nereden geliyor?

Genelde, belgeyi atamak için en yüksek olasılığa sahip sınıf seçilir. Peki ya maksimum olasılık 0.1 ise? Yalnızca %10 olasılıkla bu belgenin o sınıfa ait olduğunu kabul etmeli misin?

Yanıt, eldeki probleme göre değişir. Sınıflandırmayı kabul etmek için minimum bir eşik belirlemek mümkündür ve eşiği değiştirerek precision ve recall değerleri zıt yönlerde hareket eder.

y_true değişkeni ve model modeli yüklüdür. Ayrıca, olasılık eşikten düşükse belge DEFAULT_CLASS'a (sınıf 2 olarak seçildi) atanacaktır.

Bu egzersiz

Keras ile Dil Modellemesi için Yinelenen Sinir Ağları (RNN)

kursunun bir parçasıdır
Kursu Görüntüle

Egzersiz talimatları

  • Her sınıf için olasılıkları almak üzere .predict() yöntemini kullan ve sonuçları pred_probabilities değişkenine kaydet.
  • Maksimum olasılığı yalnızca 0.5’ten büyük veya ona eşitse kabul et ve sonuçları y_pred_50 değişkenine kaydet.
  • Eşik değeri 0.8 olduğunda aynısını yapmak için np.argmax() ve np.max() fonksiyonlarını kullan.
  • Tüm metriklerle birlikte trade_off değişkenini yazdır.

Uygulamalı interaktif egzersiz

Bu örnek kodu tamamlayarak bu egzersizi bitirin.

# Get probabilities for each class
pred_probabilities = model.____(X_test)

# Thresholds at 0.5 and 0.8
y_pred_50 = [np.argmax(x) if np.max(x) >= ____ else DEFAULT_CLASS for x in pred_probabilities]
y_pred_80 = [np.____(x) if np.____(x) >= 0.8 else DEFAULT_CLASS for x in pred_probabilities]

trade_off = pd.DataFrame({
    'Precision_50': precision_score(y_true, y_pred_50, average=None), 
    'Precision_80': precision_score(y_true, y_pred_80, average=None), 
    'Recall_50': recall_score(y_true, y_pred_50, average=None), 
    'Recall_80': recall_score(y_true, y_pred_80, average=None)}, 
  index=['Class 1', 'Class 2', 'Class 3'])

____
Kodu Düzenle ve Çalıştır