Cara Memilih Metrik Evaluasi Model Klasifikasi
Sebuah model mendeteksi transaksi mencurigakan dan melaporkan akurasi 99,2 persen. Tim fraud langsung senang, sampai menyadari model itu menandai semua transaksi sebagai normal. Akurasi memang tinggi karena sebagian besar transaksi memang normal, tapi modelnya tidak menangkap satu pun kasus penipuan. Kejadian seperti ini muncul karena metrik dipilih sebelum orang sempat bertanya: kesalahan mana yang paling mahal di kasus ini?
Mulai dari biaya kesalahan, bukan dari rumus
Setiap model klasifikasi punya dua jenis kesalahan. Pertama, memprediksi positif padahal sebenarnya negatif. Kedua, memprediksi negatif padahal sebenarnya positif. Konsekuensi keduanya berbeda tergantung konteks, dan itulah yang menentukan metrik mana yang layak jadi acuan.
Pada penyaringan email spam, salah menandai email penting sebagai spam lebih merepotkan daripada meloloskan satu email promosi. Di skrining penyakit, melewatkan pasien yang benar-benar sakit jauh lebih berbahaya daripada merujuk pasien sehat untuk pemeriksaan ulang. Dua kasus ini memiliki distribusi kesalahan yang berlawanan, jadi wajar jika metrik utamanya juga berbeda.
Cara praktis memulai: tulis di kertas apa yang terjadi kalau model salah ke arah false positive, dan apa yang terjadi kalau salah ke arah false negative. Dari situ kamu bisa menebak metrik mana yang cocok sebelum menulis satu baris kode evaluasi.
Akurasi dan kapan ia menipu
Akurasi adalah rasio prediksi benar terhadap seluruh data. Angka ini mudah dihitung dan mudah dijelaskan ke orang non-teknis, tapi ia menganggap semua kesalahan sama mahal. Pada data yang seimbang, asumsi itu masuk akal. Pada data yang timpang, tidak.
Bayangkan dataset dengan 950 contoh negatif dan 50 positif. Model yang selalu menebak negatif mendapat akurasi 95 persen tanpa belajar apa pun. Angka itu terlihat bagus di laporan, tapi tidak ada nilainya bagi pengguna. Karena itu, begitu proporsi kelas tidak seimbang, akurasi sebaiknya dipakai sebagai pelengkap, bukan penentu. Sebelum menghitung apa pun, pastikan dulu data sudah bersih dari nilai kosong dengan pendekatan seperti pada cara menangani data hilang sebelum melatih model, karena nilai kosong yang dibiarkan bisa menggeser distribusi kelas secara diam-diam.
Presisi dan recall
Presisi menjawab pertanyaan: dari semua yang diprediksi positif, berapa yang benar-benar positif? Recall menjawab: dari semua yang benar-benar positif, berapa yang berhasil ditemukan model? Keduanya bergerak berlawanan. Menaikkan ambang batas keputusan biasanya menaikkan presisi tapi menurunkan recall, dan sebaliknya.
Presisi jadi prioritas ketika biaya false positive tinggi. Sistem yang memblokir akun otomatis, misalnya, sebaiknya tidak salah blokir akun pengguna sah. Recall jadi prioritas ketika biaya false negative tinggi, seperti deteksi kebocoran sistem atau skrining awal suatu kondisi. Pada kasus seperti ini, menerima beberapa alarm palsu masih lebih baik daripada melewatkan kejadian yang sebenarnya.
Di scikit-learn, keduanya tersedia lewat fungsi yang sama:
from sklearn.metrics import precision_score, recall_score
precision = precision_score(y_true, y_pred)
recall = recall_score(y_true, y_pred)
Perhatikan parameter average saat kelasnya lebih dari dua. Nilai 'macro' menghitung rata-rata per kelas tanpa mempertimbangkan jumlah sampelnya, sedangkan 'weighted' memberi bobot sesuai jumlah sampel tiap kelas. Pilihan ini bisa mengubah kesimpulan, jadi sebutkan mana yang kamu pakai saat melaporkan hasil.
Membaca presisi dan recall berdampingan
Melaporkan salah satu saja hampir selalu menyesatkan. Model dengan presisi 0,95 tapi recall 0,20 hanya menangkap seperlima kasus positif, betapapun bersihnya prediksi yang dihasilkan. Sebaliknya, recall 0,98 dengan presisi 0,15 berarti model menandai terlalu banyak hal sebagai positif. Keduanya perlu ditampilkan bersamaan agar pembaca laporan bisa menimbang.
F1-score sebagai kompromi
F1-score adalah rata-rata harmonik presisi dan recall. Nilainya tinggi hanya jika keduanya cukup tinggi. Rata-rata harmonik dipakai karena lebih menghukum nilai yang rendah dibanding rata-rata biasa. Kalau presisi 1,0 dan recall 0,1, rata-rata aritmetiknya 0,55 tapi F1-nya hanya sekitar 0,18.
F1 cocok ketika kamu tidak bisa memutuskan mana yang lebih penting antara presisi dan recall, atau ketika distribusi kelas sangat timpang dan kamu butuh satu angka ringkas. Keterbatasannya, F1 memperlakukan presisi dan recall sama penting. Kalau salah satu jauh lebih mahal secara nyata, F1 justru menyembunyikan prioritas itu. Dalam kasus seperti itu, gunakan F-beta dengan nilai beta yang mencerminkan bobot masing-masing.
ROC-AUC dan PR-AUC
ROC-AUC mengukur kemampuan model memisahkan kelas positif dan negatif di berbagai ambang batas keputusan. Nilai 0,5 berarti model tidak lebih baik dari tebakan acak, sedangkan 1,0 berarti pemisahan sempurna. Karena menghitung seluruh ambang, ROC-AUC berguna saat kamu belum menentukan ambang final dan ingin membandingkan beberapa model secara umum.
Namun pada data yang sangat timpang, ROC-AUC bisa terlihat tinggi meski performa pada kelas minoritas buruk. Sebabnya, rasio false positive rate dihitung terhadap jumlah negatif yang sangat besar. Precision-Recall AUC lebih sensitif untuk kasus ini karena fokus pada kelas positif. Sebagai aturan praktis, pakai PR-AUC ketika kelas positif jumlahnya di bawah sekitar sepuluh persen dari total data.
Baik ROC-AUC maupun PR-AUC tidak memberi tahu di ambang berapa model sebaiknya dipakai. Setelah memilih model, kamu masih perlu memeriksa kurva presisi-recall dan menentukan ambang sesuai toleransi kesalahan yang bisa diterima.
Matriks konfusi untuk melihat detail
Semua metrik di atas adalah ringkasan. Untuk memahami di mana model keliru, kamu perlu melihat distribusinya per kelas. Matriks konfusi menampilkan jumlah true positive, false positive, true negative, dan false negative dalam satu tabel. Dari sana terlihat apakah kesalahan menumpuk di kelas tertentu atau tersebar merata. Cara membacanya dibahas lebih rinci di cara membaca confusion matrix untuk evaluasi model.
Langkah ini sering melewatkan temuan penting, misalnya satu kelas minoritas yang hampir selalu salah diprediksi. Angka F1 keseluruhan bisa tetap terlihat wajar karena kelas mayoritas menutupi masalah tersebut.
Panduan singkat memilih metrik
Urutan berikut bisa dipakai sebagai titik awal, lalu disesuaikan dengan konteks proyek.
- Kelas seimbang, kesalahan setara: akurasi, lengkapi dengan F1.
- False positive mahal: presisi sebagai metrik utama.
- False negative mahal: recall sebagai metrik utama.
- Butuh satu angka ringkas pada data timpang: F1-score.
- Membandingkan model sebelum menentukan ambang: ROC-AUC.
- Kelas positif sangat langka: PR-AUC.
- Ingin tahu kelas mana yang bermasalah: matriks konfusi per kelas.
Sebelum melatih model, pastikan skala fitur sudah konsisten. Metrik berbasis jarak dan model seperti regresi logistik bisa terpengaruh kalau fitur memiliki rentang yang jauh berbeda, seperti dijelaskan pada cara normalisasi data untuk machine learning.
Melaporkan hasil dengan jujur
Satu angka di slide presentasi hampir selalu menyembunyikan sesuatu. Laporkan setidaknya metrik utama, metrik pendamping, dan interval kepercayaan bila memungkinkan. Sebutkan juga proporsi kelas pada data uji, ambang keputusan yang dipakai, dan cara kamu membagi data. Pembaca yang ingin mereproduksi hasil perlu tahu semua ini.
Hindari memilih metrik setelah melihat hasil. Kalau kamu mencoba sepuluh metrik lalu melaporkan yang paling bagus, angka itu kehilangan makna karena sudah disesuaikan dengan kebetulan pada data uji. Tentukan metrik utama di awal, sebelum model pertama dilatih.
Pertanyaan yang Sering Diajukan
Kalau akurasi sudah 95 persen, apakah modelnya sudah bagus?
Belum tentu. Periksa dulu proporsi kelas pada data uji. Jika kelas mayoritas saja sudah 95 persen, model yang selalu menebak kelas itu akan mendapat angka yang sama. Bandingkan dengan baseline tersebut dan lihat metrik lain seperti recall pada kelas minoritas.
Apakah F1-score selalu lebih baik daripada akurasi?
Tidak. Pada data yang seimbang dan kesalahan yang biayanya setara, akurasi lebih mudah ditafsirkan dan sering cukup. F1 lebih berguna saat kelas timpang atau saat kamu ingin menyeimbangkan presisi dan recall dalam satu angka.
Kapan sebaiknya memakai PR-AUC daripada ROC-AUC?
Saat kelas positif sangat jarang, umumnya di bawah sepuluh persen dari total data. Pada kondisi itu ROC-AUC cenderung terlihat tinggi meski performa pada kelas minoritas kurang baik, sedangkan PR-AUC lebih peka terhadap perubahan di kelas positif.
Memilih metrik adalah keputusan tentang konsekuensi, bukan tentang rumus mana yang paling populer. Tentukan dulu kesalahan mana yang paling merugikan, baru pilih angka yang mewakilinya. Setelah itu, konsistenkan pilihan tersebut di seluruh proses pengembangan dan pelaporan.


