ROC-AUC 0,97, Precision 9%: Matematika Base Rate

Telusuri detektor dengan 1% positif, ubah ambang menjadi titik ROC dan precision-recall, lalu pilih titik operasi untuk anggaran peninjauan 30 alert.

Bagikan artikel ini

Berikut sebuah detektor dengan ROC-AUC 0.97080.9708. Pada set pengujian berisi 1.000 baris dengan 10 positif, ambang recall 90%-nya mengirim 99 alert. Sembilan di antaranya benar. Sembilan puluh salah.

Kedua pernyataan itu menggambarkan pemeringkatan skor yang sama. Pernyataan pertama menghargai seberapa baik contoh positif cenderung berada di atas contoh negatif pada semua ambang. Pernyataan kedua menggambarkan antrean yang benar-benar harus ditinjau orang pada satu ambang. Ketika positif jarang, keduanya dapat menjadi cerita operasional yang sangat berbeda.

Pelajaran ini membangun perbedaan tersebut dari contoh sintetis yang lengkap. Anda akan mengubah hitungan ambang menjadi koordinat ROC dan precision-recall, menghitung ROC-AUC dan average precision, menunjukkan bagaimana prevalensi mengubah precision tanpa mengubah titik ROC, serta memilih ambang yang sesuai dengan anggaran peninjauan 30 alert.

Satu ambang menghasilkan 99 alert

Bayangkan sebuah model yang memberi skor antara 00 dan 11 untuk setiap baris. Set ini berisi 10 positif dan 990 negatif, sehingga prevalensinya adalah

π=101000=0.01.\pi=\frac{10}{1000}=0.01.

Pada ambang 0.550.55, setiap skor yang setidaknya 0.550.55 menjadi alert. Matriks kebingungan yang dihasilkan adalah:

Matriks kebingungan pada ambang 0.55 untuk 1.000 contoh

PrediksiSebenarnya positifSebenarnya negatifTotal
AlertTP = 9FP = 9099
Tanpa alertFN = 1TN = 900901
Total109901.000

Ambang tersebut menangkap sembilan dari sepuluh positif. Itu terdengar kuat sampai antrean peninjauan dihitung: 90 dari 99 alert adalah false positive. Model tidak bertentangan dengan dirinya sendiri. Recall dan precision menjawab pertanyaan yang berbeda.

recall=TPTP+FN=910=0.90,\operatorname{recall} =\frac{TP}{TP+FN} =\frac{9}{10} =0.90, precision=TPTP+FP=9990.0909.\operatorname{precision} =\frac{TP}{TP+FP} =\frac{9}{99} \approx0.0909.

Recall bertanya, “Dari semua positif aktual, berapa bagiannya yang ditangkap sistem alert?” Precision bertanya, “Dari semua alert, berapa bagiannya yang positif?” Pada titik operasi ini, jawabannya adalah 90%90\% dan 9.1%9.1\%.

Matriks kebingungan menyediakan kedua sistem koordinat

Kurva ROC memplot true-positive rate, yaitu recall, terhadap false-positive rate:

TPR=TPTP+FN.\operatorname{TPR}=\frac{TP}{TP+FN}. FPR=FPFP+TN.\operatorname{FPR}=\frac{FP}{FP+TN}.

Kurva precision-recall memplot precision terhadap recall. Untuk ambang 0.550.55, matriks kebingungan yang sama memberikan

FPR=909900.0909\operatorname{FPR}=\frac{90}{990}\approx0.0909

dan TPR=9/10=0.90\operatorname{TPR}=9/10=0.90. Jadi koordinat ROC-nya adalah (0.0909,0.90)(0.0909,0.90). Untuk sudut pandang precision-recall,

precision=9990.0909.\operatorname{precision}=\frac{9}{99}\approx0.0909.

Bersama recall 0.900.90, itu menjadi koordinat precision-recall (0.90,0.0909)(0.90,0.0909).

Sekarang sapu enam ambang melalui skor yang sama dan sudah diurutkan. Hitungannya kumulatif: menurunkan ambang menambahkan contoh positif dan negatif sekaligus ke set alert.

Penyapuan ambang untuk 1.000 contoh dengan 10 positif dan 990 negatif

AmbangTPFPAlertRecallFPRPrecision
0000.00.0

1.000*

0.954150.40.00100.800
0.75820280.80.02020.286
0.55990990.90.09090.091
0.35102903001.00.29290.033
0.10109901.0001.01.00.010

^* Tanpa prediksi positif, precision tidak terdefinisi. Nilai 1 adalah titik awal konvensional yang digunakan untuk menggambar kurva ini; itu bukan bukti bahwa pengklasifikasi berguna.

Dokumentasi kurva precision-recall scikit-learn menggunakan definisi yang sama dan menyertakan endpoint untuk kurva lengkap. Ambangnya adalah nilai skor yang berbeda; dataset nyata biasanya menyediakan jauh lebih banyak titik daripada contoh ringkas ini.

Tampilan ROC dan precision-recall dari penyapuan ambang yang samaDua grafik memetakan enam titik operasi untuk pengklasifikasi sintetis pada seribu contoh dengan sepuluh positif. Ambang 0,75 disorot pada false-positive rate 2 persen dan recall 80 persen di grafik ROC, serta precision 29 persen dan recall 80 persen di grafik precision-recall.Satu penyapuan ambang, dua sistem koordinat1.000 contoh · 10 positif · 990 negatifRuang ROCRecall terhadap tingkat positif palsuambang 0,75FPR 2,0% · recall 80%00.20.40.60.81.000.20.40.60.81.0Tingkat positif palsuRecall (tingkat positif benar)Ruang precision-recallHanya titik operasi; tanpa interpolasi linearBaseline prevalensi 1%ambang 0,75recall 80% · precision 29%00.20.40.60.81.000.20.40.60.81.0RecallPrecision

Titik oranye adalah ambang 0.75 di kedua panel. Koordinat berubah, sementara matriks kebingungan yang mendasarinya tetap terdiri dari 8 true positive, 20 false positive, 2 false negative, dan 970 true negative.

ROC memadatkan 90 false alarm menjadi 9,1%

Pada ambang 0.550.55, penyebut FPR mencakup semua 990 negatif. Sembilan puluh false positive menjadi FPR hanya 9.1%9.1\%. Precision justru menempatkan 90 false positive yang sama di samping sembilan true positive yang akan dilihat peninjau. Hasilnya adalah precision 9.1%9.1\%.

Inilah efek base rate dalam aritmetika. Sebagian kecil dari kelas negatif yang sangat besar dapat melebihi sebagian besar kelas positif yang sangat kecil. Titik ROC valid dan tidak memuat kemurnian alert ataupun ukuran antrean.

ROC-AUC merangkum seluruh kurva ROC, bukan satu ambang tertentu. Menerapkan aturan trapesium pada keenam titik menghasilkan

ROC-AUC=0.9708.\operatorname{ROC\text{-}AUC}=0.9708.

scikit-learn mendefinisikan ROC-AUC sebagai luas di bawah kurva ROC yang dihitung dari skor prediksi. Untuk pengklasifikasi biner, metrik ini juga dapat dibaca sebagai probabilitas bahwa positif yang dipilih secara acak menerima skor lebih tinggi daripada negatif yang dipilih secara acak, dengan penanganan ties seperti biasa. Interpretasi pemeringkatan itu tidak menetapkan ambang, jumlah alert, atau biaya peninjauan.

Analisis ICML 2006 oleh Jesse Davis dan Mark Goadrich menunjukkan mengapa perbedaan ini makin tajam dalam ketidakseimbangan kelas. ROC dan kurva precision-recall terhubung secara matematis untuk dataset tetap, tetapi penyebut negatif yang besar dapat membuat plot ROC tampak optimistis secara visual. Mereka juga menunjukkan bahwa interpolasi garis lurus dalam ruang precision-recall umumnya keliru; kurva di antara titik operasi yang diamati bukan sekadar segmen garis dekoratif.

Untuk penyapuan diskret ini, average precision tanpa interpolasi adalah

AP=n(RnRn1)Pn=0.4467.\operatorname{AP} =\sum_n(R_n-R_{n-1})P_n =0.4467.

Nilai itu jauh di atas precision 1%1\% dari pemeringkatan tanpa informasi pada prevalensi ini. AP tetap merangkum pemeringkatan; keputusan penempatan staf memerlukan titik operasi. Dokumentasi average precision scikit-learn menggunakan penjumlahan berbobot recall di atas dan memperingatkan bahwa interpolasi trapesium dapat bersifat optimistis.

Prevalensi mengubah precision tanpa mengubah titik ROC

Tuliskan prevalensi sebagai π=Pr(Y=1)\pi=\Pr(Y=1). Jika suatu titik operasi memiliki true-positive rate tt dan false-positive rate ff, maka dalam populasi besar:

  • bagian alert positif yang diharapkan adalah tπt\pi;
  • bagian false alert yang diharapkan adalah f(1π)f(1-\pi).

Precision diperoleh dengan membagi bagian alert positif dengan seluruh alert:

precision=tπtπ+f(1π).\operatorname{precision} =\frac{t\pi}{t\pi+f(1-\pi)}.

Gunakan ambang 0.750.75, dengan t=0.80t=0.80 dan f=20/9900.0202f=20/990\approx0.0202. Dengan mempertahankan rate bersyarat tersebut, diperoleh:

Precision yang diharapkan pada TPR 80 persen dan FPR 2,02 persen tetap di tiga tingkat prevalensi

PrevalensiPrecision yang diharapkan
0,1%3,8%
1%28,6%
10%81,5%

Koordinat ROC tetap dekat (0.0202,0.80)(0.0202,0.80) pada ketiga baris karena TPR dikondisikan pada positif dan FPR pada negatif. Koordinat precision berubah drastis karena penyebutnya mencampur true alert dan false alert.

Perhitungan ini mengasumsikan TPR dan FPR berpindah tanpa perubahan ke populasi baru. Transfer harus diuji: pergeseran distribusi skor, label, atau kualitas data dapat menggeser kedua rate. Estimasikan titik operasi pada data yang mewakili penggunaan yang dimaksudkan, dan pisahkan pemilihan ambang dari sampel tak tersentuh yang digunakan untuk laporan performa final. Disiplin populasi yang sama penting ketika mengalibrasi probabilitas prediksi.

Tiga puluh slot peninjauan memilih ambang

Misalkan tim dapat meninjau paling banyak 30 alert per 1.000 baris dan memerlukan recall sedikitnya 75%75\%. Aturan keputusannya kini eksplisit:

TP+FP30.TP+FP\le30.

Syarat recall adalah

TPTP+FN0.75.\frac{TP}{TP+FN}\ge0.75.

Ambang 0.950.95 cocok dengan antrean dengan lima alert, tetapi recall 40%40\%-nya tidak memenuhi syarat. Ambang 0.750.75 menghasilkan 28 alert dan mencapai recall 80%80\%, jadi memenuhi syarat. Ambang 0.550.55 mencapai recall 90%90\%, tetapi menghasilkan 99 alert, lebih dari tiga kali kapasitas yang tersedia.

Jadi titik operasi yang dipilih adalah 0.750.75 untuk baris dan kendala ini. Precision-nya adalah 8/28=28.6%8/28=28.6\%: peninjau seharusnya mengharapkan sekitar 20 false alert di antara 28 alert, bukan rasa nyaman yang tersirat ketika hanya mengutip ROC-AUC 0.97080.9708.

Kapasitas juga dapat ditulis sebagai kelonggaran false positive. Setelah jumlah minimum true positive ditetapkan, anggaran BB mengizinkan paling banyak

FPmax=BTP.FP_{\max}=B-TP.

Dengan B=30B=30 dan delapan true positive, kelonggarannya adalah 22 false positive. Ambang 0.750.75 menghasilkan 20. Terjemahan ini menghubungkan metrik model dengan kendala sumber daya yang sebenarnya, alih-alih menetapkan kepentingan universal pada satu kurva.

Reproduksi penyapuan dan gerbang anggaran

Program NumPy berikut menghitung kedua kurva, ROC-AUC, average precision tanpa interpolasi, dan ambang yang memenuhi syarat. Array menyimpan hitungan kumulatif pada setiap ambang yang menurun.

import numpy as np

thresholds = np.array([np.inf, 0.95, 0.75, 0.55, 0.35, 0.10])
tp = np.array([0, 4, 8, 9, 10, 10])
fp = np.array([0, 1, 20, 90, 290, 990])
positives, negatives = 10, 990

recall = tp / positives
fpr = fp / negatives
precision = np.divide(
    tp,
    tp + fp,
    out=np.ones_like(tp, dtype=float),
    where=(tp + fp) > 0,
)

roc_auc = np.trapezoid(recall, fpr)
average_precision = np.sum(np.diff(recall) * precision[1:])

budget = 30
recall_floor = 0.75
alerts = tp + fp
eligible = (alerts <= budget) & (recall >= recall_floor)

print(f"ROC-AUC: {roc_auc:.6f}")
print(f"average precision: {average_precision:.6f}")
print("eligible thresholds:", thresholds[eligible])

Outputnya adalah:

ROC-AUC: 0.970808
average precision: 0.446710
eligible thresholds: [0.75]

Jika beberapa ambang memenuhi syarat, pilih berdasarkan tujuan sekunder yang telah dinyatakan—misalnya recall tertinggi dalam anggaran atau biaya yang diharapkan paling rendah—bukan berdasarkan titik yang membuat grafik tampak paling bagus. Jika skor memiliki ties, semua baris pada ambang itu bergerak bersama; target kapasitas mungkin tidak dapat dicapai secara tepat.

Ketika tidak ada ambang yang cocok

Perketat anggaran yang sama menjadi 25 alert sambil mensyaratkan recall 80%80\%. Ambang 0.750.75 menangkap delapan positif tetapi menghasilkan 28 alert. Ambang yang lebih tinggi cocok dengan antrean tetapi hanya menangkap empat positif. Tidak ada baris dalam penyapuan yang memenuhi kedua kendala.

Hasil itu dapat ditindaklanjuti. Memindahkan ambang tidak dapat menciptakan titik operasi yang hilang. Tim harus memperbaiki pemeringkatan, menambahkan filter tahap kedua, meningkatkan kapasitas peninjauan, atau menerima syarat recall yang berbeda. Dalam sistem nyata, biaya false positive dan false negative juga dapat berbeda, sehingga fungsi biaya atau analisis keputusan dapat menggantikan batas antrean sederhana.

Prinsip pengukuran yang lebih luas ini bersifat kekinian sekaligus matematis. NIST AI 800-3 menekankan bahwa evaluator harus memilih besaran performa dan metode ketidakpastian yang sesuai dengan tujuan dan data; tidak ada satu rumus untuk setiap evaluasi. Di sini, besaran yang relevan bukan “AUC” secara abstrak, melainkan recall, precision, dan volume alert pada suatu ambang untuk prevalensi yang disebutkan dan anggaran peninjauan yang nyata.

Sumber

  1. The Relationship Between Precision-Recall and ROC Curves
  2. scikit-learn precision-recall curve documentation
  3. scikit-learn ROC AUC documentation
  4. scikit-learn average precision documentation
  5. NIST AI 800-3 expands the AI evaluation toolbox