Lompat ke konten
nalar

Final Lab, Evaluasi Proyek & Integrasi Sistem

Panduan menyelesaikan proyek akhir — pipeline end-to-end yang reproducible, validasi silang, interpretasi model, struktur repositori, template laporan, dan rubrik penilaian.

Capaian Pembelajaran

Setelah minggu ini kamu bisa:

  1. Mengintegrasikan seluruh siklus KDD menjadi satu pipeline end-to-end yang dapat diulang.
  2. Mencegah data leakage dengan Pipeline + ColumnTransformer.
  3. Membandingkan beberapa model secara adil memakai validasi silang berstrata.
  4. Menginterpretasikan model (permutation importance) dan menerjemahkannya ke rekomendasi bisnis.
  5. Menyusun repositori kode dan laporan proyek sesuai rubrik.

1. Peta Proyek Akhir

Masalah bisnis ─► Data ─► EDA ─► Preprocessing ─► Model ─► Evaluasi ─► Interpretasi ─► Rekomendasi
  (Minggu 1)            (1–3)      (2)          (4–16)      (8)          (17)           (17–18)

Proyek akhir boleh memakai salah satu tugas berikut (atau kombinasi):

Tugas Contoh topik Metrik utama
Asosiasi Rekomendasi bundling produk minimarket support, confidence, lift
Klasifikasi Prediksi churn, risiko kredit, sentimen ulasan F1, recall, ROC-AUC
Clustering Segmentasi pelanggan RFM silhouette, profil klaster
Anomali Deteksi kerusakan mesin, fraud precision/recall pada label terbatas
Big data Analitik log jutaan baris dengan Spark waktu proses, skalabilitas

2. Pipeline yang Benar: Hindari Data Leakage

Data leakage = informasi dari data uji "bocor" ke proses pelatihan, sehingga skor terlihat bagus padahal model gagal di dunia nyata.

Contoh leakage yang sering terjadi:

Kesalahan Mengapa bocor Perbaikan
StandardScaler().fit(X) sebelum split mean/std memakai data uji fit scaler hanya di data latih (di dalam Pipeline)
Imputasi median seluruh data median dipengaruhi data uji imputer di dalam Pipeline
Fitur dibuat dari target ("total_refund" untuk prediksi churn) fitur hanya ada setelah kejadian audit fitur: apakah tersedia saat prediksi?
Oversampling (SMOTE) sebelum CV sampel sintetis mirip data validasi resampling di dalam fold

Solusi scikit-learn:

prep = ColumnTransformer([
    ("num", Pipeline([("imputer", SimpleImputer(strategy="median")),
                      ("scaler", StandardScaler())]), kolom_numerik),
    ("cat", Pipeline([("imputer", SimpleImputer(strategy="most_frequent")),
                      ("onehot", OneHotEncoder(handle_unknown="ignore"))]), kolom_kategorikal),
])
pipe = Pipeline([("prep", prep), ("model", LogisticRegression(class_weight="balanced"))])
cross_val_score(pipe, X, y, cv=StratifiedKFold(5, shuffle=True, random_state=42), scoring="f1")

Pada setiap fold, prep di-fit hanya dengan data latih fold tersebut. ✔


3. Membandingkan Model Secara Adil

  1. Baseline dulu: model paling sederhana (mis. tebak kelas mayoritas, atau pohon kedalaman 2). Model kompleks harus mengalahkannya.
  2. Gunakan fold yang sama (seed sama) untuk semua model.
  3. Laporkan mean ± std skor CV, bukan satu angka.
  4. Pilih metrik sesuai biaya bisnis: churn → recall/F1; fraud → precision@k; ranking → ROC-AUC.
  5. Data uji (hold-out) disentuh sekali di akhir.

Contoh tabel perbandingan (churn, F1 CV 5-fold):

Model F1 mean F1 std
Logistic Regression (balanced) 0.726 0.02
Random Forest (balanced) 0.694 0.02
Decision Tree (depth 5) 0.636 0.03

Model sederhana bisa menang! Pilih yang paling baik dan mudah dijelaskan.


4. Interpretasi: Permutation Importance

Ide: acak satu kolom fitur di data uji; jika skor turun banyak, fitur itu penting.

importance(f) = skor_asli − skor_setelah_kolom_f_diacak   (rata-rata beberapa ulangan)

Kelebihan: berlaku untuk model apa pun, dihitung pada nama kolom asli (sebelum one-hot).

Terjemahkan ke bisnis:

Temuan Rekomendasi
Kontrak bulanan → churn tinggi Promo upgrade ke kontrak tahunan
Lama langganan pendek → churn tinggi Program onboarding 3 bulan pertama
Banyak keluhan → churn tinggi Prioritas CS untuk pelanggan dengan ≥ 3 keluhan

5. Reproducibility & Struktur Repositori

proyek-akhir-kelompok-X/
├── README.md              ← masalah, cara menjalankan, ringkasan hasil
├── requirements.txt       ← versi library
├── data/
│   ├── raw/               ← data asli (jangan diubah)
│   └── processed/         ← hasil preprocessing
├── notebooks/
│   ├── 01_eda.ipynb
│   ├── 02_preprocessing.ipynb
│   └── 03_modeling.ipynb
├── src/
│   ├── data.py            ← fungsi load & clean
│   ├── features.py        ← rekayasa fitur
│   └── model.py           ← pipeline, training, evaluasi
├── tests/                 ← test fungsi penting (pytest)
└── reports/
    ├── laporan.pdf
    └── figures/

Checklist reproducibility:

  • Semua random_state/seed ditetapkan.
  • requirements.txt berisi versi library.
  • Notebook bisa dijalankan ulang dari atas ke bawah (Restart & Run All) tanpa error.
  • Data mentah tidak pernah ditimpa.
  • Logika penting dipindah ke src/ dan diuji.

6. Template Laporan Proyek

  1. Ringkasan eksekutif (½ halaman, untuk manajer — tanpa jargon).
  2. Latar belakang & rumusan masalah bisnis.
  3. Data: sumber, ukuran, deskripsi atribut, masalah kualitas.
  4. Metodologi: tahapan KDD, preprocessing, algoritma & alasan pemilihan.
  5. Hasil: tabel perbandingan model (mean ± std), metrik data uji, visualisasi.
  6. Interpretasi & rekomendasi bisnis (minimal 3, dapat ditindaklanjuti).
  7. Keterbatasan & pekerjaan lanjutan (bias data, skalabilitas, drift).
  8. Lampiran: link repositori, pembagian tugas anggota.

7. Rubrik Penilaian Proyek

Komponen Bobot Sangat baik (A)
Pemahaman masalah bisnis 10% Masalah jelas, metrik dikaitkan dengan biaya bisnis
Kualitas data & preprocessing 20% Masalah data teridentifikasi & ditangani tanpa leakage
Pemodelan & eksperimen 25% ≥ 3 model dibandingkan dengan CV, ada baseline, tuning wajar
Evaluasi & interpretasi 20% Metrik tepat, analisis error, importance dijelaskan
Rekomendasi bisnis 10% Konkret, realistis, berbasis temuan
Kode & reproducibility 10% Repo rapi, Run All lancar, ada test
Presentasi 5% Jelas, tepat waktu, menjawab pertanyaan dengan baik

Ringkasan

  • Satukan preprocessing + model dalam Pipeline untuk mencegah leakage.
  • Bandingkan model dengan CV berstrata, seed sama, laporkan mean ± std, mulai dari baseline.
  • Interpretasi dengan permutation importance → rekomendasi bisnis.
  • Repositori terstruktur + seed tetap + requirements = hasil dapat diulang.

Bacaan

  • Dokumentasi scikit-learn: Pipelines and composite estimators, Common pitfalls and recommended practices.
  • Kaufman dkk. (2012) — Leakage in Data Mining: Formulation, Detection, and Avoidance, ACM TKDD.
  • Chapman dkk. — CRISP-DM 1.0 Step-by-step Data Mining Guide.

Tugas Minggu Ini

  1. Kerjakan lab.ipynb (template pipeline end-to-end) lalu adaptasikan ke data proyekmu.
  2. Kerjakan kuis (di web, atau baca quiz.json).
  3. Isi exercise.py, lalu cek: python check.py 17
  4. Kumpulkan laporan + link repositori proyek.

Sudah paham materinya?

Tandai selesai, lalu uji pemahamanmu.

Kerjakan kuis