Capaian Pembelajaran
Setelah minggu ini kamu bisa:
- Menyusun confusion matrix dan menghitung accuracy, precision, recall, specificity, F1.
- Memilih metrik yang tepat sesuai biaya kesalahan bisnis.
- Membuat kurva ROC dan menghitung AUC secara manual.
- Melakukan k-fold cross-validation dan memahami data leakage.
- Menentukan threshold keputusan yang optimal.
- Menyusun proposal proyek akhir.
1. Mengapa Akurasi Saja Tidak Cukup?
Data churn: 950 pelanggan bertahan, 50 churn. Model "malas" yang selalu menebak tidak churn memperoleh akurasi 95% — tetapi tidak menemukan satu pun pelanggan churn! Pada data tidak seimbang (imbalanced), akurasi menyesatkan.
2. Confusion Matrix (biner)
| Prediksi Positif | Prediksi Negatif | |
|---|---|---|
| Aktual Positif | TP (true positive) | FN (false negative) — Error tipe II |
| Aktual Negatif | FP (false positive) — Error tipe I | TN (true negative) |
"Positif" = kelas yang ingin dideteksi (churn, fraud, mesin rusak).
Metrik turunan
| Metrik | Rumus | Pertanyaan yang dijawab |
|---|---|---|
| Accuracy | (TP + TN) / total |
Berapa persen tebakan benar? |
| Precision | TP / (TP + FP) |
Dari yang diprediksi positif, berapa yang benar? |
| Recall / Sensitivity / TPR | TP / (TP + FN) |
Dari yang benar-benar positif, berapa yang tertangkap? |
| Specificity / TNR | TN / (TN + FP) |
Dari yang negatif, berapa yang benar dikenali? |
| FPR | FP / (FP + TN) = 1 − specificity |
Berapa negatif yang salah dialarmkan? |
| F1-score | 2 · P · R / (P + R) |
Rata-rata harmonik precision & recall |
Contoh hitung
200 pelanggan: TP = 40, FP = 10, FN = 20, TN = 130.
Accuracy = (40 + 130) / 200 = 0.850
Precision = 40 / (40 + 10) = 0.800
Recall = 40 / (40 + 20) = 0.667
Specificity = 130 / (130 + 10) = 0.929
F1 = 2·0.8·0.667/(0.8+0.667) = 0.727
Memilih metrik berdasarkan biaya bisnis
| Kasus | Kesalahan paling mahal | Fokus |
|---|---|---|
| Deteksi kanker / mesin hampir rusak | FN (kasus terlewat) | Recall |
| Filter spam (email penting masuk spam) | FP | Precision |
| Kampanye retensi churn (voucher terbatas) | keduanya | F1 / precision@k |
| Deteksi fraud kartu kredit | FN mahal, FP mengganggu nasabah | Recall + precision, PR-AUC |
Multikelas
Hitung metrik per kelas (one-vs-rest) lalu rata-ratakan:
- Macro: rata-rata biasa → setiap kelas sama penting.
- Weighted: dibobot jumlah sampel kelas.
- Micro: hitung TP/FP/FN total → sama dengan akurasi untuk klasifikasi single-label.
3. Kurva ROC dan AUC
Banyak model menghasilkan skor/peluang, bukan label. Label didapat lewat threshold t: prediksi positif jika skor ≥ t. Mengubah t mengubah TPR & FPR.
Kurva ROC = plot TPR (sumbu y) terhadap FPR (sumbu x) untuk semua threshold.
TPR 1 ┤ ●───────● model bagus (melengkung ke kiri atas)
│ ●
│ ● . · garis diagonal = tebakan acak (AUC 0.5)
│ ● .·
│●.·
0 ┼──────────────── FPR
0 1
AUC (Area Under the Curve):
- 1.0 = sempurna, 0.5 = acak, < 0.5 = lebih buruk dari acak (label terbalik?).
- Interpretasi: peluang model memberi skor lebih tinggi kepada positif acak dibanding negatif acak.
Contoh manual
| Data | 1 | 2 | 3 | 4 | 5 | 6 |
|---|---|---|---|---|---|---|
| Aktual | 1 | 1 | 0 | 1 | 0 | 0 |
| Skor | 0.9 | 0.8 | 0.7 | 0.6 | 0.4 | 0.2 |
Urutkan skor menurun, turunkan threshold satu per satu (P = 3 positif, N = 3 negatif):
| Threshold | TP | FP | TPR | FPR |
|---|---|---|---|---|
| ∞ | 0 | 0 | 0 | 0 |
| 0.9 | 1 | 0 | 0.333 | 0 |
| 0.8 | 2 | 0 | 0.667 | 0 |
| 0.7 | 2 | 1 | 0.667 | 0.333 |
| 0.6 | 3 | 1 | 1 | 0.333 |
| 0.4 | 3 | 2 | 1 | 0.667 |
| 0.2 | 3 | 3 | 1 | 1 |
Luas dengan aturan trapesium: AUC = Σ (FPR_i − FPR_{i−1}) · (TPR_i + TPR_{i−1}) / 2.
Hanya segmen yang FPR-nya bertambah yang menyumbang luas:
(0 → 0.333) · (0.667 + 0.667)/2 = 0.222
(0.333 → 0.667) · (1 + 1)/2 = 0.333
(0.667 → 1) · (1 + 1)/2 = 0.333
AUC = 0.889
Cara pasangan: dari 3×3 = 9 pasangan (positif, negatif), positif berskor lebih tinggi pada 8 pasangan → 8/9 = 0.889. ✔
Untuk data sangat tidak seimbang, kurva Precision–Recall dan PR-AUC sering lebih informatif daripada ROC.
4. Threshold Tuning
Default threshold 0.5 tidak selalu terbaik. Pilih t yang:
- memaksimalkan F1, atau
- mencapai recall minimal tertentu (mis. ≥ 0.8) dengan precision setinggi mungkin, atau
- meminimalkan biaya total
= c_FP · FP + c_FN · FN.
Contoh bisnis: biaya voucher retensi Rp 50rb (FP), kehilangan pelanggan Rp 600rb (FN). Karena FN 12× lebih mahal, turunkan threshold agar recall naik.
⚠️ Threshold dipilih pada data validasi, bukan data uji, agar evaluasi akhir tetap jujur.
5. Validasi: Hold-out & K-Fold Cross-Validation
5.1 Hold-out
Bagi data: latih (60–80%) / (validasi) / uji (20–30%). Gunakan stratify=y agar proporsi kelas terjaga.
5.2 K-fold cross-validation
Data dibagi k lipatan (fold), mis. k = 5
Iterasi 1: [UJI][latih][latih][latih][latih]
Iterasi 2: [latih][UJI][latih][latih][latih]
...
Iterasi 5: [latih][latih][latih][latih][UJI]
Skor akhir = rata-rata (± std) 5 skor
- Setiap data tepat sekali menjadi data uji.
- Jika
ntidak habis dibagik,n mod kfold pertama mendapat 1 data lebih banyak (konvensi scikit-learn). - Stratified k-fold: proporsi kelas tiap fold sama → wajib untuk data tidak seimbang.
- Leave-One-Out (LOO): k = n, mahal tapi hampir tak bias.
- Data deret waktu: gunakan
TimeSeriesSplit(latih selalu di masa lalu).
5.3 Data leakage
Kebocoran informasi dari data uji ke pelatihan → skor terlalu optimis. Contoh:
- Normalisasi/imputasi dihitung pada seluruh data sebelum split. ✅ Solusi:
Pipelinesklearn, fit hanya pada data latih. - Fitur yang "bocor" dari masa depan (mis.
tanggal_berhentiuntuk prediksi churn).
6. Overfitting vs Underfitting
| Gejala | Skor latih | Skor uji | Solusi |
|---|---|---|---|
| Underfitting | rendah | rendah | model lebih kompleks, fitur lebih baik |
| Pas | tinggi | tinggi (dekat latih) | — |
| Overfitting | sangat tinggi | jauh lebih rendah | regularisasi, pruning, data lebih banyak, k lebih besar (KNN) |
7. Proposal Proyek Akhir (Milestone)
Proyek tim mengikuti siklus KDD dan digunakan hingga Minggu 17–18. Struktur proposal (maks. 3 halaman):
- Latar belakang & pertanyaan bisnis — masalah apa, siapa yang diuntungkan?
- Dataset — sumber, ukuran, atribut, lisensi. (Boleh memakai dataset sintetis dari
common/datasets.py.) - Tugas data mining — asosiasi / klasifikasi / clustering / anomali / big data.
- Rencana preprocessing — masalah kualitas data yang diantisipasi.
- Metode & baseline — minimal 2 algoritma + baseline sederhana.
- Metrik evaluasi — dan alasan pemilihannya berdasarkan biaya bisnis.
- Jadwal & pembagian tugas.
Ringkasan
- Gunakan confusion matrix; akurasi menyesatkan pada data tidak seimbang.
- Precision = ketepatan alarm; recall = kemampuan menangkap positif; F1 = kompromi.
- ROC-AUC mengukur kualitas peringkingan skor di semua threshold.
- K-fold CV memberi estimasi performa yang lebih stabil; hindari data leakage dengan Pipeline.
- Threshold dipilih berdasarkan biaya bisnis pada data validasi.
Bacaan
- Han, Kamber & Pei — Bab 8.5 Model Evaluation and Selection.
- Dokumentasi scikit-learn: Model evaluation dan Cross-validation.
Tugas Minggu Ini
- Kerjakan
lab.ipynbsampai selesai. - Kerjakan kuis (di web, atau baca
quiz.json). - Isi
exercise.py, lalu cek:python check.py 8 - Kumpulkan proposal proyek akhir.