Mengenal Accuracy, Precision, Recall dan Specificity serta yang diprioritaskan dalam Machine Learning

Resika Arthana
4 min readApr 5, 2019

--

Dalam mengevaluasi performance algoritma dari Machine Learning (ML) (khususnya supervised learning), kita menggunakan acuan Confusion Matrix. Confusion Matrix merepresentasikan prediksi dan kondisi sebenarnya(aktual) dari data yang dihasilkan oleh algoritma ML. Berdasarkan Confusion Matrix, kita bisa menentukan Accuracy, Precission, Recall dan Specificity. Dalam tulisan ini, saya berbagi tentang pengukuran performance hasil algoritmaML. Tulisan ini berdasarkan tulisan ini yang kemudian saya tulis dengan bahasa sendiri untuk meningkatkan pemahaman (terutama saya sendiri :-D) serta dilengkapi dengan studi kasus. Saya menggunakan contoh kasus prediksi mahasiswa Drop Out (DO) untuk memudahkan memahami Accuracy, Precision, Recall dan Specificity

sumber : https://towardsdatascience.com/understanding-confusion-matrix-a9ad42dcfd62

Studi Kasus Prediksi Mahasiswa DO

Dalam sebuah project yang menggunakan algoritma ML, memprediksi apakah mahasiswa berpotensi DO atau tidak. Setelah algoritma tersebut dijalankan (dalam bentuk program), hasilnya adalah seperti berikut ini:

Contoh hasil prediksi mahasiswa potensi DO

Dari hasil prediksi di atas, hanya ada kemungkinan 4 kasus yang terjadi:

  • True Positive (TP) : kasus dimana mahasiswa diprediksi (Positif) DO, memang benar(True) DO. Dalam contoh di atas adalah 4 mahasiswa dengan NIM 007, 008, 009, 010. Jadi nilai TP nya adalah 4
  • True Negative (TN) : kasus dimana mahasiswa diprediksi tidak(Negatif) DO dan sebenarnya mahasiswa tersebut memang (True) tidak DO. Dalam contoh di atas terjadi pada mahasiswa 001, 002, dan 003. Jadi TN nya adalah 3
  • False Positve (FP) : kasus dimana mahasiswa yang diprediksi positif DO, ternyata tidak DO. Prediksinya salah (False). Dalam contoh di atas terjadi pada mahasiswa 004 dan 005. Jadi nilai FP adalah 2
  • False Negatif (FN): kasus dimana mahasiswa yang diprediksi tidak DO (Negatif), tetapi ternyata sebenarnya(TRUE) DO. Dalam contoh kasus di atas terjadi pada mahasiswa 010. jadi FN = 1

Cara mudah untuk mengingatnya adalah :

  • Jika diawali dengan TRUE maka prediksinya benar, entah diprediksi terjadi atau tidak terjadi. Dalam kasus di atas, entah diprediksi DO atau Tidak DO, data sebenarnya adalah seperti itu.
  • Jika diawali dengan FALSE maka menyatakan prediksinya salah
  • Positif dan Negatif merupakan hasil prediksi dari program.

Pengukuran Performance

Accuracy
Merupakan rasio prediksi Benar (positif dan negatif) dengan keseluruhan data. Akurasi menjawab pertanyaan “Berapa persen mahasiswa yang benar diprediksi DO dan Tidak DO dari kesuluruhan mahasiswa”

Akurasi = (TP + TN ) / (TP+FP+FN+TN)

pada contoh kasus di atas, Akurasi = (4+3) / (4+2+1+3) = 7/10 = 70%

Precission

Merupakan rasio prediksi benar positif dibandingkan dengan keseluruhan hasil yang diprediksi positf. Precission menjawab pertanyaan “Berapa persen mahasiswa yang benar DO dari keseluruhan mahasiswa yang diprediksi DO?”

Precission = (TP) / (TP+FP)

pada contoh kasus di atas, Precission = 4 / (4+2) = 4/6 = 67%.

Recall (Sensitifitas)

Merupakan rasio prediksi benar positif dibandingkan dengan keseluruhan data yang benar positif. Recall menjawab pertanyaan “Berapa persen mahasiswa yang diprediksi DO dibandingkan keseluruhan mahasiswa yang sebenarnya DO”.

Recall = (TP) / (TP + FN)

pada contoh kasus di atas Recall = 4/(4+1) = 4/5 =80%.

Specificity

Merupakan kebenaran memprediksi negatif dibandingkan dengan keseluruhan data negatif. Specificity menjawab pertanyaan “Berapa persen mahasiswa yang benar diprediksi tidak DO dibandingkan dengan keseluruhan mahasiswa yang sebenarnya tidak DO”.

Specificity = (TN)/ (TN + FP)

F1 Score

F1 Score merupakan perbandingan rata-rata presisi dan recall yang dibobotkan

F1 Score = 2 * (Recall*Precission) / (Recall + Precission)

dalam kasus di atas, F1 Score = 2* (80%*67%) / ( 80% + 67%) = 72,93%

Pemilihan acuan performansi algoritma

Nah, jika kita membandingkan beberapa algoritma ML yang berbeda dengan accuracy, precission, recall dan specificity yang berbeda-beda, algoritma mana yang kita pilih? Apa yang digunakan acuan?

Pilih algoritma yang memiliki Accuracy tinggi jika

Akurasi sangat bagus kita gunakan sebagai acuan performansi algoritma JIKA dataset kita memiliki jumlah data False Negatif dan False Positif yang sangat mendekati (Symmetric). Namun jika jumlahnya tidak mendekati, maka sebaiknya gunakan F1 Score sebagai acuan.

Pada contoh di atas, nilai FP dan FN mendekati, maka accuracy bisa digunakan sebagai acuan ukuran performansi tersebut.

Pilih algoritma yang memiliki Recall tinggi jika

kita lebih memilih False Positif lebih baik terjadi daripada False Negatif.

Dalam contoh di atas, maka kita mempertimbangkan Recall karena lebih baik algoritma kita memprediksi mahasiswa positif DO tetapi sebenarnya tidak DO daripada algoritma salah memprediksi bahwa mahasiwa diprediksi tidak DO padahal sebenarnya dia DO.

Pilih algoritma yang memiliki Precission tinggi jika

kita lebih menginginkan terjadinya True Positif dan sangat tidak menginginkan terjadinya False Positif. Contohnya adalah pada kasus klasifikasi email SPAM atau tidak. Kita lebih memilih jika email yang sebenarnya SPAM namun diprediksi tidak SPAM (sehingga tetap ada pada kotak masuk email kita), daripada email yang sebenarnya bukan SPAM tapi diprediksi SPAM (sehingga tidak ada pada kotak masuk kita)

Pilih algoritma yang memiliki Specificity tinggi jika

kita tidak menginginkan terjadinya false positif. Contohnya pada prediksi apakah seseorang kecanduan narkoba atau tidak maka kita sangat mengharapkan tidak terjadi salah mendeteksi orang yang sebenarnya negatif tapi dinyatakan positif. Kasihan dia masuk penjara padahal tidak kecanduan narkoba :-)

Referensi : https://towardsdatascience.com/accuracy-recall-precision-f-score-specificity-which-to-optimize-on-867d3f11124

--

--