Pertukaran Precision-Recall
Saat mengerjakan tugas klasifikasi, istilah Precision-Recall trade-off sering muncul. Dari mana asalnya?
Biasanya, kelas dengan probabilitas tertinggi dipilih untuk menetapkan suatu dokumen. Namun, bagaimana jika probabilitas maksimum bernilai 0.1? Haruskah Anda menganggap dokumen tersebut termasuk ke kelas itu dengan probabilitas hanya 10%?
Jawabannya tergantung pada masalah yang dihadapi. Anda dapat menambahkan ambang minimum untuk menerima hasil klasifikasi, dan ketika ambang ini diubah, nilai precision dan recall akan bergerak berlawanan arah.
Variabel y_true dan model model sudah dimuat. Selain itu, jika probabilitas lebih rendah daripada ambang, dokumen akan ditetapkan ke DEFAULT_CLASS (dipilih sebagai kelas 2).
Latihan ini merupakan bagian dari kursus
Recurrent Neural Networks (RNN) untuk Pemodelan Bahasa dengan Keras
Instruksi latihan
- Gunakan metode
.predict()untuk memperoleh probabilitas tiap kelas dan simpan ke variabelpred_probabilities. - Terima probabilitas maksimum hanya jika nilainya lebih besar atau sama dengan
0.5dan simpan hasilnya ke variabely_pred_50. - Gunakan fungsi
np.argmax()dannp.max()untuk melakukan hal yang sama untuk ambang bernilai0.8. - Cetak variabel
trade_offbeserta seluruh metriknya.
Latihan interaktif langsung praktik
Cobalah latihan ini dengan melengkapi kode contoh ini.
# 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'])
____