Lewati ke konten utama

Precision vs Recall: Panduan Esensial untuk Machine Learning

Akurasi saja tidak cukup. Pelajari perbedaan antara precision dan recall, pahami trade-off-nya, dan pilih metrik yang tepat untuk model Anda.
· 12 mnt Baca

Jelajahi bersama AI

Model machine learning dengan akurasi 98% terdengar mengesankan–tapi benarkah demikian? Saat Anda berurusan dengan kejadian langka seperti penipuan atau penyakit, akurasi sering kali menciptakan rasa aman yang semu.

Di sinilah precision dan recall berperan. Dalam artikel ini, kita akan melihat bagaimana kedua metrik ini melampaui akurasi sederhana untuk mengukur bukan hanya seberapa sering Anda benar, tetapi tepatnya bagaimana Anda salah.

Jika Anda ingin melampaui teori dan menguasai klasifikasi, kursus Fraud Detection in Python adalah langkah lanjutan yang tepat.

Mengapa Akurasi Tidak Cukup

Dalam banyak situasi, akurasi adalah metrik alami untuk mengukur seberapa baik model statistik atau machine learning memprediksi suatu label. Ini dihitung dengan membandingkan jumlah prediksi yang benar dengan total jumlah observasi. 

Secara umum, jika sebuah model secara konsisten mengidentifikasi label yang benar dengan akurasi tinggi, model tersebut bekerja dengan baik. Namun, dataset yang tidak seimbang, di mana satu kelas berisi jauh lebih banyak sampel daripada kelas lainnya, dapat mendistorsi akurasi. Dataset semacam ini lazim dalam deteksi penipuan atau diagnosis penyakit.

Misalkan sebuah model mengklasifikasikan penipuan dengan tingkat akurasi 98%. Sekilas, angka ini tampak fantastis. Namun bagaimana jika penipuan hanya mencakup 2% dari transaksi dalam dataset? Dalam kasus ini, model bisa saja memilih "bukan penipuan" setiap saat dan tetap memperoleh akurasi 98% sambil tidak menangkap satu pun penipuan, yang jelas bukan tujuan kita. 

Jelas, situasi semacam ini membutuhkan metrik yang lebih bernuansa. Dua metrik yang umum digunakan adalah precision dan recall. 

Apa Itu Precision dan Recall?

Versi singkatnya sebagai berikut:

  • Precision (Kualitas): Mengukur seberapa tepercaya prediksi positif Anda. Jika model mengatakan "penipuan", apakah benar-benar penipuan?
  • Recall (Kuantitas): Mengukur seberapa baik Anda menangkap kasus positif yang sebenarnya. Apakah model menangkap semua penipuan, atau ada yang lolos?

Untuk memahami cara menghitung metrik ini, terlebih dahulu kita perlu mendefinisikan terminologi yang digunakan dalam confusion matrix.

True positive, false positive, dan negatif 

Pertimbangkan sebuah perusahaan kartu kredit yang menggunakan model machine learning untuk mendeteksi transaksi kartu kredit yang curang. Misalkan, dari sampel 10.000 transaksi, terdapat 9.800 transaksi sah dan 200 kasus penipuan.

Untuk mengukur efektivitas model, tetapkan salah satu dari "penipuan" atau "bukan penipuan" sebagai kasus positif dan yang lainnya sebagai kasus negatif. Karena kasus penipuan yang menjadi perhatian, beri label ini sebagai kasus "positif". (Ini tentu saja tidak menyiratkan bahwa penipuan itu positif secara etis; label “positif” hanya menandai kasus yang menjadi fokus kita.)

Saat model dijalankan, transaksi dengan skor risiko di atas ambang probabilitas tertentu, misalnya 70%, dianggap sebagai penipuan. Kasus yang diprediksi sebagai penipuan dibandingkan dengan yang benar-benar penipuan.

Untuk merapikan semua data ini, kita gunakan nomenklatur berikut. 

  • True positives (TP): 160 kasus penipuan diprediksi dengan benar sebagai penipuan.
  • True negatives (TN): 9500 kasus diidentifikasi dengan benar sebagai bukan penipuan.
  • False positives (FP): 300 kasus salah ditandai sebagai penipuan.
  • False negatives (FN): 40 kasus salah ditandai sebagai bukan penipuan.

Huruf kedua (P atau N) menunjukkan apakah prediksinya positif atau negatif, dan huruf pertama menunjukkan apakah prediksi tersebut benar (T) atau salah (F). 

"False positive" menunjukkan bahwa sistem memprediksi kasus sebagai positif, padahal sebenarnya negatif. Misalnya, false negative adalah kasus yang diprediksi negatif, namun sebenarnya positif.

Confusion matrix

Semua informasi ini biasanya ditampilkan dalam confusion matrix, yang melacak seberapa sering model mengacaukan prediksi yang salah dengan hasil sebenarnya (FN, FP). Confusion matrix membantu kita membedakan antara apa yang diprediksi model dan apa yang benar-benar terjadi. Confusion matrix pada contoh kita tampak seperti ini:

 

Penipuan aktual (positif aktual)

Sah aktual (negatif aktual)

Diprediksi penipuan (positif diprediksi)

160 (TP)

300 (FP)

Diprediksi sah (negatif diprediksi)

40 (FN)

9500 (TN)

Sekarang, mari kita lihat total baris dan kolomnya. Jumlah baris menunjukkan total kasus yang diprediksi, dan jumlah kolom menunjukkan total kasus aktual.

 

Penipuan aktual (positif aktual)

Sah aktual (negatif aktual)

 

Diprediksi penipuan (positif diprediksi)

160 (TP)

300 (FP)

460 (TP + FP) Total positif diprediksi

Diprediksi sah (negatif diprediksi)

40 (FN)

9500 (TN)

9540 (FN + TN) Total negatif diprediksi

 

200 (TP + FN) Total positif aktual

9800 (FP + TN) Total negatif aktual

10.000

Apa yang diwakili oleh total ini?

  • Total baris pertama (460) mewakili total jumlah kasus penipuan yang diprediksi (TP + FP).
  • Total baris kedua (9.540) mewakili total jumlah kasus sah yang diprediksi (FN + TN).
  • Total kolom pertama (200) mewakili total jumlah kasus penipuan aktual (TP + FN).
  • Total kolom kedua (9.800) mewakili total jumlah kasus sah aktual (FP + TN).
  • Total keseluruhan (10.000) sama dengan total ukuran sampel kita.

Apa itu precision?

Precision mengukur kualitas prediksi positif Anda. Ini memberi tahu kita berapa banyak kasus yang diprediksi positif yang benar-benar positif. 

Model yang presisi berarti memiliki sangat sedikit alarm palsu. Jika model mengatakan sesuatu itu benar, kemungkinan besar memang benar. Misalnya, jika sebuah gim daring melarang seseorang karena curang, pelanggaran itu harus benar adanya. Terlalu banyak larangan yang tidak pantas akan membuat pengguna sah kecewa dan berujung pada ulasan negatif. 

Dalam terminologi yang dibahas di atas, precision sama dengan rasio true positive terhadap positif yang diprediksi.

Precision.svg

Pada contoh di atas, precision adalah 160/460, atau sekitar 34,8%.

Apa itu recall?

Recall mengukur cakupan. Ini menunjukkan berapa banyak dari positif aktual yang diprediksi sebagai positif. Didefinisikan sebagai rasio true positive terhadap total positif aktual.

Recall.svg

Pertimbangkan diagnosis kanker untuk tindak lanjut awal. Lebih baikkah bersalah karena terlalu mendiagnosis atau kurang mendiagnosis? Kebanyakan orang akan sepakat pada pilihan pertama. 

Untuk skrining dini, menerima alarm palsu bisa mengejutkan. Tetapi akan sangat buruk jika diberi tahu Anda tidak menderita kanker padahal sebenarnya Anda menderita, terutama karena Anda bisa melewatkan pengobatan yang berpotensi menyelamatkan nyawa.

Pada contoh di atas, recall adalah 160/200, atau 80%.

Trade-off antara Precision dan Recall

Ada hubungan tarik-menarik antara precision dan recall. Biasanya, saat precision meningkat, recall menurun, dan sebaliknya.

Untuk melihat alasannya, mari kita tinjau kembali contoh penipuan. 

Sebagian besar penipuan tertangkap, tetapi ada banyak false positive. Misalkan, karena keluhan pelanggan, manajemen memutuskan untuk menaikkan ambang keputusan dari 0,7 menjadi 0,8. Agar suatu transaksi ditandai sebagai penipuan, sekarang harus memiliki skor setidaknya 0,8 alih-alih 0,7.

Ini membuat model lebih konservatif. Model lebih jarang memprediksi penipuan. Lebih sedikit transaksi yang salah ditandai sebagai penipuan, tetapi dengan konsekuensi lebih banyak kasus penipuan yang benar-benar lolos. Setelah mengubah ambang, jumlah false positive turun dari 300 menjadi 60, tetapi jumlah false negative naik dari 40 menjadi 80. 

Confusion matrix dari model baru tampak seperti ini:

 

Penipuan aktual (positif aktual)

Sah aktual (negatif aktual)

 

Diprediksi penipuan (positif diprediksi)

120 (TP)

60 (FP)

180 (TP + FP) Total positif diprediksi

Diprediksi sah (negatif diprediksi)

80 (FN)

9740 (TN)

9820 (FN + TN) Total negatif diprediksi

 

200 (TP + FN) Total positif aktual

9800 (FP + TN) Total negatif aktual

10.000

Seperti yang kita lihat, 120 dari 180 kasus penipuan yang diprediksi ternyata benar-benar penipuan, sehingga precision meningkat dari 34,8% menjadi 66,7%. 

Harga untuk peningkatan precision ini adalah penurunan recall: 120 dari 200 kasus penipuan diprediksi sebagai penipuan, yang berarti recall turun dari semula 80% menjadi hanya 60%.

Model sekarang menangkap lebih sedikit kasus penipuan secara keseluruhan, tetapi saat menandai penipuan, model jauh lebih yakin. Ini menunjukkan pentingnya menyeimbangkan kedua metrik, yang akan kita bahas nanti. 

Kurva precision-recall

Untuk memvisualisasikan trade-off antara precision dan recall, data scientist menggunakan kurva Precision-Recall (PR). 

Grafik ini memplot precision pada sumbu y dan recall pada sumbu x untuk setiap kemungkinan ambang keputusan (dari 0 hingga 1). Saat Anda menurunkan ambang untuk menangkap lebih banyak kasus positif (meningkatkan recall), Anda tak terelakkan akan menandai lebih banyak alarm palsu (menurunkan precision). 

Model yang "sempurna" akan mencapai sudut kanan atas (precision dan recall 100%), tetapi pada kenyataannya, Anda harus memilih satu titik pada kurva ini yang memenuhi kebutuhan bisnis spesifik Anda.

Dalam contoh penipuan kita, kita memiliki model yang menghasilkan skor penipuan untuk setiap transaksi. Jika skor suatu transaksi setidaknya sama dengan ambang, maka transaksi tersebut ditandai sebagai penipuan. Saat kita menurunkan ambang, kita mendapatkan lebih banyak positif yang diprediksi, yang biasanya menangkap lebih banyak true positive (meningkatkan recall) tetapi juga lebih banyak alarm palsu (menurunkan precision).

Mari kita lihat seperti apa semua ini dalam praktik. Misalkan perusahaan Anda memproses 10.000 transaksi per hari. Karena tingkat penipuan diperkirakan 2%, Anda memperkirakan 200 transaksi penipuan per hari. Juga, misalkan tim operasi penipuan dapat meninjau 200 transaksi yang ditandai (positif diprediksi) per hari.

Anda mengevaluasi beberapa ambang dan menemukan hasil berikut:

  • Pada ambang 0,9, terdapat 100 positif diprediksi, dengan precision 0,8 (80 penipuan aktual, 20 alarm palsu), dan recall 0,4 (Anda menangkap 80 dari 200 kasus penipuan). Anda kurang memanfaatkan kapasitas karena hanya menandai 100 per hari padahal Anda bisa meninjau 200 per hari. 
  • Pada ambang 0,5, terdapat 500 positif diprediksi, dengan precision 0,35 (175 penipuan aktual, 325 alarm palsu), dan recall 0,875 (Anda menangkap 175 dari 200 kasus penipuan). Pada ambang ini, Anda melebihi kapasitas, karena Anda tidak dapat meninjau 500 kasus yang ditandai.
  • Pada ambang 0,7, terdapat 200 positif diprediksi, dengan precision 0,6 (120 penipuan aktual, 80 alarm palsu), dan recall 0,6 (Anda menangkap 120 dari 200 kasus penipuan). Ini kemungkinan ambang yang akan Anda gunakan, karena Anda dapat menggunakan kapasitas penuh sambil tetap mendapatkan recall yang cukup layak sebesar 0,6.

Kurva precision-recall

Kurva ini memberi tahu Anda precision apa yang bisa "dibeli" pada tingkat recall tertentu (atau sebaliknya).

Kapan Menggunakan Precision vs. Recall

Karena hubungan trade-off antara precision dan recall, metrik yang benar bergantung pada kasus penggunaan Anda.

Kapan menggunakan precision

Ada hubungan terbalik antara precision dan false positive. Oleh karena itu, model yang presisi adalah model yang dengan benar membedakan antara true positive dan false positive. Model tersebut tepercaya.

Optimalkan untuk precision ketika biaya false positive tinggi. Contoh kasus meliputi:

  • Tindakan yang tidak dapat dibatalkan: Sistem peradilan otomatis atau pelarangan akun. Menuduh orang yang tidak bersalah atau menghapus akun pengguna secara permanen akibat kesalahan model (False Positive) menimbulkan kerusakan yang tak dapat diperbaiki.
  • Intervensi berbiaya tinggi: Pengeboran minyak atau penghentian lini perakitan pabrik. Jika bertindak berdasarkan prediksi positif menghabiskan biaya jutaan dolar, Anda harus yakin prediksi tersebut benar sebelum melanjutkan.
  • Penyaringan spam: Inbox email. Melihat email spam (False Negative) memang mengganggu, tetapi tidak dapat diterima jika tawaran pekerjaan penting masuk ke folder junk (False Positive).

Kapan menggunakan recall

Demikian pula, ada hubungan terbalik antara recall dan false negative. Banyak false negative menghasilkan recall yang rendah. Dengan demikian, model dengan recall tinggi dengan benar membedakan antara true positive dan false negative. Model tersebut aman.

Jika lebih penting untuk tidak melewatkan kasus nyata daripada menerima alarm palsu, Anda harus memprioritaskan metrik recall dibanding precision. Contoh kasus penggunaan meliputi:

  • Keamanan medis: Skrining penyakit (misalnya, kanker atau sepsis). Melewatkan pasien yang sakit bisa berakibat fatal, sedangkan alarm palsu mengarah pada pemeriksaan lanjutan, yang merupakan biaya yang dapat ditoleransi.
  • Keamanan siber: Deteksi malware atau intrusi jaringan. Lebih baik menandai beberapa login yang tidak bersalah sebagai mencurigakan daripada membiarkan satu peretas menembus sistem tanpa terdeteksi.
  • Kualitas manufaktur: Deteksi cacat. Mengirim produk cacat (False Negative) menimbulkan tanggung jawab keselamatan dan merusak reputasi, sehingga lebih baik membuang beberapa item borderline daripada membiarkan yang buruk lolos.

Skor F1 untuk Menyeimbangkan Precision dan Recall

Jika Anda tidak yakin apakah akan mengoptimalkan model untuk precision atau recall, atau sekadar ingin mempertimbangkan keduanya, Anda dapat merujuk pada skor F1. 

Skor F1 didefinisikan sebagai mean harmonik dari precision dan recall, dan digunakan ketika Anda ingin menargetkan keseimbangan antara kedua metrik tersebut. 

F1.svg

Jika precision dan recall sama, skor F1 sama dengan nilai tersebut. Namun, jika salah satunya mendekati nol, F1 juga akan sangat rendah.

Pada contoh di atas, precision adalah 66,7% dan recall 60%. Menggunakan rumus yang disebutkan di atas, kita memperoleh skor F1 sekitar 63,2%:

Contoh F1.svg

Tabel berikut membandingkan skor F1 dengan akurasi, precision, dan recall.

Metrik

Pertanyaan yang dijawab

Kapan mengoptimalkan metrik ini

Contoh

Akurasi

"Seberapa sering kita benar secara keseluruhan?"

Kelas seimbang, dan biaya FP serta FN serupa.

Klasifikasi digit.

Precision

"Dari semua positif yang diprediksi, seberapa sering kita benar?"

Ketika FP mahal, bersifat menghukum, atau menimbulkan beban bagi pelanggan.

Blokir penipuan, pelarangan pengguna, dan tindakan medis invasif.

Recall

"Dari semua positif aktual, berapa banyak yang kita tandai?"

False negative tidak dapat diterima.

Skrining medis, deteksi intrusi.

F1

"Bagaimana keseimbangan antara precision dan recall?"

Anda peduli pada keduanya: positif dan alarm palsu.

Seleksi model awal untuk masalah ketidakseimbangan.

Menghitung Precision dan Recall di Python

Ada banyak cara untuk menghitung precision, recall, dan F1-score di Python. Berikut dua pendekatan: menerapkan rumus secara langsung dan menggunakan rumus yang tersedia pada paket scikit-learn.

Menghitung precision dan recall menggunakan rumus

Jika Anda mengetahui angka pada confusion matrix, Anda dapat dengan mudah menghitung metrik menggunakan rumus yang dipaparkan di atas.

# Confusion matrix numbers
TP = 120
FP = 60
FN = 80
TN = 9740

# Formulas
precision = TP / (TP + FP)
recall = TP / (TP + FN)
f1 = 2 * precision * recall / (precision + recall)

# Output
print(f"{'Precision':<10} {precision:.1%}")
print(f"{'Recall':<10} {recall:.1%}")
print(f"{'F1':<10} {f1:.1%}")
Precision	66.7%
Recall		60.0%
F1		63.2%

Output kode ini sesuai dengan perhitungan kita sebelumnya.

Menghitung precision dan recall menggunakan scikit-learn

Anda juga dapat memanfaatkan pustaka scikit-learn untuk menghitung metrik langsung dari data. Pada contoh berikut, kita mensimulasikan y_true dan y_predicted. Lalu kita menghitung precision menggunakan metode precision_score(y_true, y_false). Kita menghitung recall dan skor F1 dengan cara serupa. Terakhir, kita akan menampilkan hasilnya.

import numpy as np
from sklearn.metrics import precision_score, recall_score, f1_score

# Simulate Data (y_true and y_pred)
TP, FP, FN, TN = 120, 60, 80, 9740
y_true = np.array(TP * [1] + FP * [0] + FN * [1] + TN * [0])
y_pred = np.array(TP * [1] + FP * [1] + FN * [0] + TN * [0])

# Compute metrics with scikit-learn
precision = precision_score(y_true, y_pred, zero_division=0)
recall = recall_score(y_true, y_pred, zero_division=0)
f1 = f1_score(y_true, y_pred, zero_division=0)

# Print aligned output using f-strings (no manual spaces, no colon)
print(f"{'Precision':<10} {precision:.1%}")
print(f"{'Recall':<10} {recall:.1%}")
print(f"{'F1':<10} {f1:.1%}")
Precision	66.7%
Recall		60.0%
F1		63.2%

Seperti yang diharapkan, angka-angka ini sesuai dengan perhitungan kita sebelumnya.

Kesimpulan

Walau akurasi adalah titik awal yang membantu, sering kali ia menyembunyikan detail yang Anda butuhkan untuk memahami mengapa sebuah model gagal. Precision dan recall memberi gambaran yang lebih jelas dengan memaksa Anda menimbang trade-off antara alarm palsu dan deteksi yang terlewat. 

Pada akhirnya, memilih metrik yang tepat bukan sekadar persoalan matematika; ini adalah keputusan praktis tentang jenis kesalahan mana yang masih dapat ditoleransi oleh sistem Anda.

Siap membangun model machine learning Anda sendiri? Mulailah dengan Machine Learning Fundamentals in Python hari ini!

Precision vs Recall FAQs

Apa perbedaan antara recall dan precision?

Precision mengukur kualitas prediksi positif Anda. Ini memberi tahu kita berapa banyak kasus yang diprediksi sebagai positif yang benar-benar positif dan didefinisikan sebagai rasio antara true positive terhadap positif yang diprediksi.

Recall mengukur cakupan. Ini menunjukkan berapa banyak dari positif aktual yang diprediksi sebagai positif. Didefinisikan sebagai rasio antara true positive terhadap total positif aktual.

Metrik mana yang harus saya optimalkan untuk mengurangi false positive?

Precision. Precision yang rendah menunjukkan model menandai terlalu banyak item sebagai positif padahal bukan.

Metrik mana yang harus saya optimalkan untuk mengurangi false negative?

Recall. Recall yang rendah menunjukkan kasus positif nyata lolos.

Metrik mana yang lebih penting dalam diagnosis medis?

Recall. Beberapa alarm palsu dapat ditoleransi jika berarti lebih sedikit diagnosis yang terlewat.

Metrik mana yang lebih penting dalam filter spam?

Precision. Salah mengklasifikasikan email spam memang mengganggu, tetapi kehilangan email penting tidak dapat diterima.

Mark Pedigo

Penulis

Mark Pedigo

Mark Pedigo, PhD, adalah seorang data scientist terkemuka dengan keahlian dalam data science kesehatan, pemrograman, dan pendidikan. Dengan gelar PhD di bidang Matematika, B.S. di bidang Ilmu Komputer, serta Sertifikat Profesional di bidang AI, Mark memadukan pengetahuan teknis dengan pemecahan masalah praktis. Kariernya mencakup peran dalam deteksi kecurangan, prediksi kematian bayi, dan peramalan keuangan, serta kontribusi pada perangkat lunak estimasi biaya NASA. Sebagai pendidik, ia telah mengajar di DataCamp dan Washington University in St. Louis serta membimbing programmer junior. Di waktu luang, Mark menikmati alam Minnesota bersama istrinya, Mandy, dan anjingnya, Harley, serta bermain piano jazz.

Topik

Terkait

blogs

Tutorial Korelasi di R

blogs

Spaghetti Plot dan Jalur Badai

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026