Memahami ROC dan AUC

Datasans
4 min readMar 17, 2019

--

Hallo people,

Hari ini aku mencoba membuat catatan tentang ROC dan AUC.

Tulisan ini terinspirasi dari videonya StatQuest with Josh Starmer. Josh Starmer adalah seorang Assistant Professor di University of North Carolina. Videonya ngebahas tentang ROC dan AUC, menurutku penjelasannya cukup jelas. Kalo kalian males nonton yauda baca tulisanku aja. Kalo kalian males baca yauda nonton aja, nonton atta halilintar grebek rumah, ashiaap. Tulisan ini dibuat untuk kubaca sendiri juga di lain waktu. Mohon maaf kalo ngga mencerdaskan karna memang bukan buat mencerdaskan kamu, hanya catatan saja. Tapi cmiiw ya di kolom komentar.

Dependency : logistic regression classification & confusion matrix.

ROC (Receiver Operating Characteristics) adalah semacam alat ukur performance untuk classification problem dalam menentukan threshold dari suatu model. Contohnya: pada logistic regression, default dari thresholdnya adalah 0.5. Apakah 0.5 ini threshold terbaik? Well, ya kalo distribusi peluangnya seperti ini:

Atau gini juga sih

Aku ambil contoh dari video, tentang peluang obesitas seekor tikus (kenapa tikus mulu ya).

Masuk akal jika semakin berat seekor tikus, maka semakin tinggi peluang dia obesitas. Karena kita bicara peluang, artinya ada juga tikus yang berat banget tapi ngga obesitas, mungkin dia tikus gym, badannya otot semua. Kalo diplot peluangnya, dan ditambah garis regresi logistic jadinya kaya gini:

Yang biru adalah tikus yang obesitas, yang merah normal.

Kita lihat jika kita tentukan thresholdnya sebesar 0.5 maka untuk sampel tersebut kita punya 3 True Positive, 1 False Positive, 3 True Negative, dan 1 False Negative.

Coba kita ambil threshold yang lain ya, let us say 0.9…

Maka confusion matrixnya jadi gini,

Dengan threshold ini, kita dapat hasil yang lebih baik.

Threshold ini dapat kita set dimana saja, dan kita cari semua kemungkinannya. Trus gimana kita nentuin threshold mana yang paling baik? Inilah gunanya ROC.

Daripada kita mabok karna confusion matrix, mending kita m̶a̶b̶o̶k̶ ̶p̶e̶r̶t̶a̶l̶i̶t̶e̶ plot smua kemungkinan thresholdnya dalam ROC graph,

Sumbu y merepresentasikan True Positive Rate, sumbu x merepresentasikan False Positive Rate. Dimana,

Dan

Dan

Titik-titik di ROC graph itu menggambarkan semua kemungkinan TP dan FP jika kita jalankan thresholdnya dari bawah sampe atas.

Mulai dari threshold paling bawah yaitu 0, dengan kata lain kita klasifikasikan semua tikus adalah obesitas, confusion matrixnya jadi gini nih:

TP dan FP kemudian diplot ke graph jadinya gini:

Titik (1,1) artinya model kita berhasil memprediksi semua tikus yang aktualnya obesitas diprediksi sebagai obesitas, namun juga gagal memprediksi semuja tikus yang aktualnya tidak obesitas, karna semuanya dipetakan menjadi obesitas.

Kalo kita petakan semua threshold dari sampel kita, kita akan dapat ROC graph seperti ini:

Catat bahwa semakin tinggi True Positive Rate dan semakin kecil False Positive Rate maka thresholdnya semakin bagus. Kaya gini:

Sekarang kita bicara tentang AUC (Area Under the Curve).

AUC membuat kita mudah dalam membandingkan model satu dengan yang lainnya. AUC adalah luas area di bawah curve ROC, atau integral dari fungsi ROC (?).

ROC graph dari sampel kita dengan model logistic regression memiliki AUC = 0.9

Misalkan kita petakan ROC dengan model random forest maka grafiknya akan jadi seperti berikut:

Dan kita harus memilih model yang AUCnya paling besar, karena untuk setiap titik dia memiliki TP lebih tinggi dan atau FP lebih rendah.

Note:

- Terkadang untuk data yang imbalance, orang-orang lebih memilih menggunakan Precision daripada False Positive Rate. Karna Precision tidak memiliki variable True Negatives dalam kalkulasinya. Precision = True Positive / (True Positive + False Positive)

  • Konsep ini bersifat general, tidak terbatas pada Logistic Regression.

Akhirnya Datasans meluncurkan Ebook yang bisa menjadi pegangan kamu dalam belajar Data Science!

Ebook Cheatsheet tentang Data Science berbahasa Indonesia yang disusun oleh Tim Datasans didesain agar mudah dipahami dan langsung bisa diaplikasikan dengan contoh-contoh script Python:

  1. Cheatsheet Machine Learning Klasifikasi
  2. Cheatsheet Machine Learning Regresi
  3. Cheatsheet Machine Learning Clustering
  4. Cheatsheet Statistika untuk Data Science dengan Python Script
  5. Cheatsheet Visualisasi data dengan Seaborn
  6. Cheatsheet EDA (Exploratory Data Analysis) — bahasa inggris
  7. 500 Pertanyaan dan Jawaban Interview Data Scientist
  8. Panduan Lengkap Cara Belajar Data Science untuk Fresh Graduate dan Career Switcher

Link Download

--

--

Datasans
Datasans

Written by Datasans

All things about data science that are discussed “sans ae”, data sains? sans lah…