Lompat ke konten
nalar

Evaluasi Komprehensif Model & Proposal Proyek Akhir

Confusion matrix, accuracy, precision, recall, F1-score, kurva ROC & AUC, k-fold cross-validation, threshold tuning, serta panduan proposal proyek akhir.

Capaian Pembelajaran

Setelah minggu ini kamu bisa:

  1. Menyusun confusion matrix dan menghitung accuracy, precision, recall, specificity, F1.
  2. Memilih metrik yang tepat sesuai biaya kesalahan bisnis.
  3. Membuat kurva ROC dan menghitung AUC secara manual.
  4. Melakukan k-fold cross-validation dan memahami data leakage.
  5. Menentukan threshold keputusan yang optimal.
  6. 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 n tidak habis dibagi k, n mod k fold 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: Pipeline sklearn, fit hanya pada data latih.
  • Fitur yang "bocor" dari masa depan (mis. tanggal_berhenti untuk 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):

  1. Latar belakang & pertanyaan bisnis — masalah apa, siapa yang diuntungkan?
  2. Dataset — sumber, ukuran, atribut, lisensi. (Boleh memakai dataset sintetis dari common/datasets.py.)
  3. Tugas data mining — asosiasi / klasifikasi / clustering / anomali / big data.
  4. Rencana preprocessing — masalah kualitas data yang diantisipasi.
  5. Metode & baseline — minimal 2 algoritma + baseline sederhana.
  6. Metrik evaluasi — dan alasan pemilihannya berdasarkan biaya bisnis.
  7. 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

  1. Kerjakan lab.ipynb sampai selesai.
  2. Kerjakan kuis (di web, atau baca quiz.json).
  3. Isi exercise.py, lalu cek: python check.py 8
  4. Kumpulkan proposal proyek akhir.

Sudah paham materinya?

Tandai selesai, lalu uji pemahamanmu.

Kerjakan kuis