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ırEgzersiz talimatları
- Her sınıf için olasılıkları almak üzere
.predict()yöntemini kullan ve sonuçlarıpred_probabilitiesdeğ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_50değişkenine kaydet. - Eşik değeri
0.8olduğunda aynısını yapmak içinnp.argmax()venp.max()fonksiyonlarını kullan. - Tüm metriklerle birlikte
trade_offdeğ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'])
____