Materi
Akurasi menyesatkan bila kelasnya tidak seimbang. Pada 100 email dengan 5 spam, model yang selalu menebak "bukan spam" sudah berakurasi 95% tanpa menangkap satu spam pun. Karena itu tebakan dua kelas dipilah menjadi empat kotak confusion matrix.
| Ditebak 0 | Ditebak 1 | |
|---|---|---|
| Sebenarnya 0 | TN (benar negatif) | FP (positif palsu) |
| Sebenarnya 1 | FN (negatif palsu) | TP (benar positif) |
Dokumentasi confusion_matrix menetapkan baris sebagai kelas sebenarnya dan kolom sebagai kelas tebakan, sehingga untuk dua kelas confusion_matrix(y_true, y_pred).ravel() menghasilkan urutan tn, fp, fn, tp. Dari keempatnya: presisi = TP ÷ (TP + FP), yaitu dari semua yang ditebak positif, berapa yang benar. Recall = TP ÷ (TP + FN), yaitu dari semua positif sebenarnya, berapa yang tertangkap. F1 adalah rata-rata harmonik keduanya: 2 × presisi × recall ÷ (presisi + recall).
from sklearn.metrics import confusion_matrix, recall_score
asli = [1, 1, 1, 0, 0, 0]
tebak = [1, 0, 1, 0, 1, 0]
print(confusion_matrix(asli, tebak)) # [[2 1]
# [1 2]]
print(recall_score(asli, tebak)) # 0.666...