Dulu dipakai perang, sekarang dipakai modeling🗡️🛡️
Intro to ROC-AUC
.
.
A thread
Minggu pagi 7 Desember 1941, 420 pesawat pengebom milik Kekaisaran Jepang menyerang pangkalan militer Amerika Serikat di Pearl Harbor, Hawaii. Lebih dari 20 kapal, 323 pesawat, dan 3000 tentara AS menjadi korban dalam 'surprise attack' selama 2 jam tersebut.
Peristiwa ini akhirnya menyeret AS untuk bergabung dengan Sekutu dan mengubah peta pertempuran Perang Dunia II setelah esok harinya, 8 Desember 1941, Presiden AS Franklin D. Roosevelt mendeklarasikan perang dengan Jepang.
Tapi ada hal lain yang menarik dari peristiwa ini. Saat itu, militer AS sebenernya sudah memiliki instalasi radar di Oahu, Hawaii. Dan entah kenapa, radar AS 'missed' dalam mendeteksi pesawat Jepang yang notabene bukan cuma satu atau dua pesawat, tapi 420 pesawat!
Nah, dari sini militer AS lalu melakukan riset untuk mengevaluasi dan meningkatkan performa radar. In a nutshell, Radar (Radio Detection and Ranging) bekerja dengan memancarkan sinyal radio ke udara lewat antena ‘transmitter’ yang pantulannya lalu dideteksi oleh ‘receiver’.
Receiver memiliki ‘gain’ yang dapat diatur manual. Jika gain di set nol, receiver tidak akan mendeteksi sinyal apapun. Jika gain di set tinggi, pesawat yang bisa dideteksi akan semakin banyak, namun receiver juga akan semakin sensitif terhadap ‘noise’ akibat burung, misalnya.
Radar dioperasikan oleh seorang ‘operator’ yang terus memonitor tanda adanya pesawat lewat titik-titik kecil pada layar. Operator inilah yang harus membuat keputusan apakah titik yang dilihatnya adalah pesawat musuh atau bukan. And here’s where the fun parts begin!
Dengan memvariasikan gain 'receiver', para peneliti dapat mengevaluasi performa 'operator' dalam mengklasifikasi pesawat musuh serta menentukan besar gain yang optimal. Hasilnya lalu di plot menjadi sebuah kurva yang diberi nama ‘Receiver Operating Characteristics’ (ROC).
Terus kurva ROC itu maksudnya apa min? Nah sebelum ke situ, kita perlu refresh dulu nih sebentar tentang materi yang sebenernya pernah mimin bahas jadi thread tersendiri. Temen-temen masih inget ini apa?
Confusion matrix! Confusion matrix adalah sebuah matriks evaluasi kinerja model secara keseluruhan. Banyak banget metrics klasifikasi yang bisa diturunin dari sini, mulai dari accuracy, precision, dan lain-lain. And yess, kurva ROC juga dibuat memakai confusion matrix.
Nah, untuk bisa lancar memahami ROC, ada dua metrics turunan confusion matrix yang perlu temen-temen kenal.
1) True Positive Rate (TPR) atau yang biasa disebut Recall.
Sesuai namanya, True Positive Rate (TPR) a.k.a Recall adalah metrics yang nunjukkin: Dari seluruh dataset kelas ‘positif’, berapa banyak sih yang ditebak ‘positif’ juga oleh model?
Contoh, misalnya kita membuat model yang memprediksi apakah suatu email spam atau bukan. Saat model kita evaluasi, diperoleh TPR = 45/(45+20) = 69.23%. Itu artinya, 69.23% dari email yang emang beneran spam, terdeteksi sebagai ‘spam’ juga oleh model. Aman?
Okay lanjut! Yang kedua ini ada metrics yang nggak kalah keren, False Positive Rate (FPR)!
False Positive Rate (FPR) itu metrics yang nunjukkin: dari seluruh dataset kelas ‘negatif’, berapa banyak yang SALAH ditebak oleh model? Dan ini unik temen-temen, beda sama metrics lain yang biasanya soal proporsi yang 'benar', FPR justru kebalikannya: ‘Berapa yang salah?’
Nah, dua metrics inilah yang membangun kurva ROC. Pada awalnya, ROC dibuat dengan menghitung TPR dan FPR operator radar dalam mengenali pesawat musuh dengan gain receiver yang diubah-ubah, lalu di plot hingga diperoleh kurva yang 'merangkum' performa keseluruhan operator.
Konsep yang sama digunakan untuk evaluasi model klasifikasi biner. Umumnya, model memakai ‘threshold’ tertentu untuk menentukan apakah suatu data termasuk kelas ‘positif’ atau ‘negatif’. Pada logistic regression misalnya, defaultnya adalah 0.5
Pertanyaannya, apakah 0.5 pasti optimal? Belum tentu. Dalam kasus deteksi penyakit jantung tadi misalnya, kejadian pasien yang sebenernya menderita tapi diprediksi sehat (false negative) jauh lebih fatal dibandingkan kejadian pasien sehat yang diprediksi sakit (false positive).
Itu artinya, bisa jadi model akan lebih optimal kalau nilai threshold dibuat lebih rendah. Tapi seberapa rendah? Nah, layaknya peneliti yang sedang mengevaluasi performa operator radar, kita ukur TPR dan FPR model untuk berbagai nilai threshold A, B, C, ... dan lalu kita plot.
And believe it or not, kita baru aja membuat kurva ROC dari model yang kita bangun! Ada 4 nilai threshold yang kita evaluasi: A, B, C, dan D dengan koordinat pada kurva ROC nya sesuai dengan berapa nilai TPR dan FPR model untuk masing-masing nilai threshold.
Garis diagonal di kurva ROC nunjukkin titik-titik di mana kemungkinan tebakan model akan ‘true’ sama dengan kemungkinan ‘false’ nya. Artinya, jika ROC model kita berhimpit dengan garis tersebut, model kita nggak ada bedanya dengan model yang simply menebak apapun secara random!
Nah, dari kurva ROC ini, kita bisa menentukan nilai threshold mana yang paling optimal untuk model kita. Gimana caranya min?
Pertama, jelas kita nggak pakai threshold A dan D karena kemampuan model menebak dengan benar akan sama dengan yang salahnya. Lalu B atau C? Nah, jika use case kita menganggap false positive SANGAT penting, maka pakai nilai threshold C, karena FPR nya sempurna -- nol.
Tapi kalau kita mau model sebagus mungkin dan false positive masih bisa kita toleransi, maka gunakan threshold B. Meskipun FPR nya menjadi lebih besar, tapi TPR nya sempurna dan kita juga masih bisa mentoleransi kenaikan FPR!
Selain digunakan untuk ‘memandu’ pemilihan threshold, kurva ROC juga bisa dipakai untuk membantu ‘memilih’ model untuk use case yang dihadapi, seperti menentukan model mana yang lebih optimal, apakah naive bayes atau logistic regression, misalnya. Caranya?
Kita bandingkan luas di bawah kurva ROC masing-masing model! Nilai luas di bawah kurva inilah yang disebut dengan Area Under the Curve (AUC). AUC untuk ‘perfect classifier’ adalah 1 dan AUC untuk model yang menebak apapun secara random adalah 0.5
Dengan membandingkan AUC dari kurva ROC setiap model yang ingin kita evaluasi, kita dapat mengetahui model mana yang performanya lebih optimal. Semakin besar AUC -- semakin mendekati nilai 1 -- artinya model semakin baik dalam melakukan klasifikasi.
Selain untuk klasifikasi biner, analisis ROC-AUC sebenernya bisa juga digunakan dalam klasifikasi multi kelas. Namun, dalam implementasinya perlu ‘penyesuaian’ seperti dengan metode One vs All, One vs One, dan lain-lain. Nanti yaa kapan kapan mimin bahas okaay!
Nah, insight apa nih yang bisa kita ambil?
Dari sini, kita belajar bahwa ‘statistics changed the world!’ -- literally. Tanpa kontribusi statistik lewat analisis ROC nya yang memungkinkan AS dan Sekutu 'menguasai' udara, sejarah mungkin akan berbeda. Who knows?
Peran nya pun terus berlanjut hingga kini. Data Science dan Machine Learning misalnya, dengan aplikasinya yang menyentuh hampir seluruh domain knowledge -- baik ekonomi, bisnis, medis, bahkan hingga astrofisika -- itu juga menggunakan statistics sebagai 'core' nya!
Nah, kalau kalian udah punya domain knowledgenya dan ingin belajar menjadi Data Scientist di sana, yuk gabung di non degree program Data Scientist Pacmann.AI! Kalian akan belajar dari basic loh, silahkan cek kurikulumnya di bit.ly/brosurpacmannai yaa. See you!
Share this Scrolly Tale with your friends.
A Scrolly Tale is a new way to read Twitter threads with a more visually immersive experience.
Discover more beautiful Scrolly Tales like this.