Pemilihan Model

Eval

Pemilihan Model

まとめ
  • Merapikan strategi validasi utama dan kriteria informasi yang dipakai saat membandingkan model.
  • Menyajikan gambaran lintas validasi silang, kurva validasi/pembelajaran, kriteria informasi, serta penelusuran hiperparameter.
  • Merangkum cara membangun alur evaluasi yang menyeimbangkan keterbatasan data, biaya komputasi, dan kebutuhan pengambilan keputusan.

Bab 1 #

Sekilas tentang pemilihan model #

Memilih model bukan sekadar mengambil skor terbaik dari hold-out. Kita perlu menentukan bagaimana mengestimasi kemampuan generalisasi, metrik mana yang dapat dipercaya, dan bagaimana menjaga biaya komputasi tetap wajar. Bab ini mengumpulkan teknik validasi utama yang berlaku di regresi maupun klasifikasi, sambil memberi panduan kapan setiap teknik paling tepat digunakan.


Teknik kunci #

1. Pembagian data dan validasi silang #

  • K-Fold / Stratified K-Fold (lihat Validasi silang / Stratified K-Fold): pilihan baku ketika data terbatas. Stratifikasi menjaga proporsi label untuk klasifikasi.
  • Validasi silang berlapis (nested) (lihat Nested CV): diperlukan ketika kita menginginkan estimasi tanpa bias yang sudah mencakup pencarian hiperparameter.
  • Split berbasis deret waktu: wajib jika urutan temporal penting; kombinasikan jendela mengembang/geser dengan pengetahuan domain.

2. Kurva untuk diagnosis #

  • Kurva validasi (Validation Curve): menampilkan pengaruh hiperparameter terhadap skor latih/validasi.
  • Kurva pembelajaran (Learning Curve): menggambarkan hubungan ukuran sampel dan kinerja, membantu menilai manfaat menambah data.

3. Kriteria informasi #

  • AIC / BIC (AIC & BIC): memberi penalti kompleksitas pada model linear Gaussian atau GLM.
  • (C_p) Mallows dan statistik serupa: berguna ketika tersedia estimator analitik untuk galat prediksi.

4. Penelusuran hiperparameter #

  • Grid / random search: menyeluruh di ruang kecil, acak untuk mendapat perbaikan cepat di ruang besar.
  • Optimisasi Bayesian / Hyperband: efisien ketika setiap evaluasi mahal.
  • Pipeline AutoML: mengotomatisasi pilihan model, rekayasa fitur, dan penyetelan hiperparameter sebagai baseline end-to-end.

Membandingkan model dengan validasi silang #

import matplotlib.pyplot as plt
import numpy as np
from sklearn.datasets import load_breast_cancer
from sklearn.ensemble import RandomForestClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import StratifiedKFold, cross_val_score
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler

X, y = load_breast_cancer(return_X_y=True)

cv = StratifiedKFold(n_splits=5, shuffle=True, random_state=42)
models = {
    "LogReg (L2)": make_pipeline(
        StandardScaler(),
        LogisticRegression(max_iter=2000, penalty="l2", C=1.0, solver="lbfgs"),
    ),
    "LogReg (ElasticNet)": make_pipeline(
        StandardScaler(),
        LogisticRegression(
            max_iter=2000,
            penalty="elasticnet",
            solver="saga",
            C=1.0,
            l1_ratio=0.4,
        ),
    ),
    "RandomForest": RandomForestClassifier(
        n_estimators=200, max_depth=6, random_state=42
    ),
}

means = []
stds = []
labels = []
for name, model in models.items():
    scores = cross_val_score(model, X, y, cv=cv, scoring="roc_auc")
    means.append(scores.mean())
    stds.append(scores.std())
    labels.append(name)

y_pos = np.arange(len(labels))

fig, ax = plt.subplots(figsize=(6.5, 3.8))
ax.barh(y_pos, means, xerr=stds, color="#2563eb", alpha=0.8)
ax.set_yticks(y_pos)
ax.set_yticklabels(labels)
ax.set_xlabel("ROC-AUC (rata-rata 5-fold ± simpangan baku)")
ax.set_xlim(0.9, 1.0)
ax.set_title("Perbandingan model dengan validasi silang")
ax.grid(axis="x", alpha=0.3)
plt.tight_layout()
Perbandingan model dengan ROC-AUC

Validasi silang menampakkan rata-rata sekaligus variabilitas kinerja. Di sini regularisasi elastic-net sedikit mengungguli model dasar sambil menjaga varians tetap rendah.


Merancang alur evaluasi #

  1. Pahami distribusi data
    Tangani ketidakseimbangan label, dependensi temporal, dan potensi kebocoran sebelum memilih skema split.
  2. Perjelas ruang perbandingan
    Daftarkan model, langkah pra-pemrosesan, dan set fitur yang ingin dievaluasi.
  3. Selaraskan metrik dan ambang
    Sepakati metrik yang mendorong keputusan (ROC-AUC, RMSE, biaya, dll.) bersama pemangku kepentingan.
  4. Pastikan reproduktibilitas
    Catat seed, definisi split, dan versi lingkungan. Otomatiskan proses bila memungkinkan.
  5. Kelola anggaran komputasi
    Perkirakan durasi grid/random search, lalu lanjutkan dengan metode adaptif atau Bayesian setelah menemukan area menjanjikan.

Referensi cepat #

TopikHalaman terkaitCatatan
Dasar validasi silangValidasi silang / Stratified K-FoldRingkasan strategi pembagian data
Validasi berlapisNested CVEstimasi tanpa bias dengan penyetelan hiperparameter
Diagnostik berbasis kurvaLearning Curve / Validation CurveVisualisasi kecukupan data dan efek hiperparameter
Kriteria informasiAIC & BICMembandingkan model parametrik sambil memberi penalti kompleksitas

Daftar periksa #

  • Metode pembagian data (stratifikasi, deret waktu, dll.) sudah terdokumentasi
  • Metrik utama dan format pelaporan sudah ditetapkan
  • Ruang dan tahap pencarian hiperparameter sudah ditentukan
  • Konfigurasi dan kode untuk setiap eksperimen dapat direproduksi bersama tim
  • Batasan operasional seperti waktu inferensi dan ukuran model sudah dipertimbangkan