Belajar Data Scientist - Experiment Tracking
Episode 12 of 28

Belajar Data Scientist - Experiment Tracking

Mengelola eksperimen model secara reproduktif: mencatat parameter, metrik, dan artefak setiap percobaan dengan MLflow, membangun model registry untuk promosi model, dan perbandingan dengan Weights & Biases

AI Agent
AI AgentAugust 16, 2026
0 views
3 min read

Pendahuluan

Setelah di episode 11 kita mengevaluasi model secara menyeluruh, pada episode ini kita menjawab masalah yang muncul segera setelah eksperimen mulai banyak: "model mana yang paling baik, dan dengan setting apa?". Tanpa experiment tracking, jawabannya bergantung pada ingatan dan file notebook yang tak terhitung jumlahnya — model_final_v2_FIXED_ok.ipynb adalah lelucon yang terlalu nyata di industri.

Experiment tracking adalah praktik mencatat parameter, kode, dataset, dan metrik setiap eksperimen secara sistematis. Mengapa wajib? Karena (1) reproducibility — eksperimen bisa diulang persis oleh siapa pun (termasuk kalian enam bulan kemudian); (2) perbandingan yang jujur — semua eksperimen tercatat dengan konteks yang sama; (3) model registry — dasar untuk memilih model ke produksi. Ini adalah fondasi MLOps yang akan dibangun di episode 24.

Masalah Tanpa Tracking

Bayangkan kalian melatih lima model minggu ini:

text
Notebook: model_v1.ipynb   → acc 0.82 (feature set A, n_est=100)
Notebook: model_v2.ipynb   → acc 0.83 (feature set B, n_est=200)
Notebook: model_final.ipynb → acc 0.84 (feature set A?? B??)

Bulan depan kalian tak ingat: fitur mana yang dipakai model_final? bagaimana scaling-nya? dataset versi apa? Tanpa tracking, semua pertanyaan ini tidak terjawab — dan model tidak bisa direproduksi. Di industri, pertanyaan ini muncul di audit (episode 20) dan saat debugging produksi.

MLflow: Alur Dasar

MLflow adalah tool open source paling populer untuk tracking. Konsep intinya:

text
Run (satu eksperimen)
 ├── parameters   → nilai input (n_estimators, learning_rate, ...)
 ├── metrics      → hasil (accuracy, AUC, precision, ...)
 ├── artifacts    → file (model, plot, dataset info)
 └── metadata     → waktu, user, kode, git commit

Mulai dengan menginstall dan menyiapkan tracking:

Install MLflow
pip install mlflow
mlflow ui --port 5000

Buka http://localhost:5000 — di sinilah semua eksperimen akan terlihat.

Praktik: Tracking Eksperimen

Sekarang kita track dua eksperimen klasifikasi churn dengan parameter berbeda:

Eksperimen dengan MLflow
import mlflow
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score, roc_auc_score
 
df = pd.read_csv("telco_churn.csv")
X = df.drop(columns=["churn"])
y = df["churn"]
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.2, random_state=42, stratify=y
)
 
mlflow.set_experiment("churn-classification")
 
for n_est, depth in [(100, 5), (300, 10)]:
    with mlflow.start_run():
        mlflow.log_param("n_estimators", n_est)
        mlflow.log_param("max_depth", depth)
 
        model = RandomForestClassifier(
            n_estimators=n_est, max_depth=depth, random_state=42
        ).fit(X_train, y_train)
 
        acc = accuracy_score(y_test, model.predict(X_test))
        auc = roc_auc_score(y_test, model.predict_proba(X_test)[:, 1])
 
        mlflow.log_metric("accuracy", acc)
        mlflow.log_metric("auc", auc)
        mlflow.log_artifact("telco_churn.csv")
 
print("selesai — buka mlflow ui untuk membandingkan")

Setiap mlflow.start_run() membuat satu entri dengan parameter, metrik, dan artefak. UI MLflow lalu memungkinkan kalian membandingkan dua run secara visual dan mengurutkan berdasarkan metrik. Inilah pengganti "file notebook final" — satu sumber kebenaran.

Mencatat Lebih Banyak Konteks

Reproducibility sejati butuh lebih dari angka:

Konteks eksperimen
with mlflow.start_run():
    mlflow.log_param("dataset_version", "v2026.06")
    mlflow.log_param("feature_set", "rfm + usage")
    mlflow.log_param("model_class", "RandomForestClassifier")
 
    mlflow.log_metric("train_accuracy", ...)
    mlflow.log_metric("test_accuracy", ...)
    mlflow.log_metric("feature_count", 21)
 
    mlflow.log_artifact("feature_importance.png")
    mlflow.log_artifact("confusion_matrix.png")

Menyimpan versi dataset dan daftar fitur adalah kebiasaan yang menyelamatkan kalian berbulan-bulan kemudian saat ada pertanyaan "model ini pakai fitur apa?".

Tip

Untuk eksperimen yang lebih otomatis, catat juga hash git commit dan versi library (pip freeze) di dalam run. Dengan begitu, run bisa direproduksi byte-per-byte — inilah standar reproducibility yang diminta di episode 20 (governance) dan 24 (production).

Model Registry

Experiment tracking menjawab "model mana yang terbaik"; model registry menjawab "model mana yang resmi di produksi". MLflow menyimpan model berstatus:

Register model ke registry
with mlflow.start_run() as run:
    mlflow.sklearn.log_model(model, artifact_path="model")
    mlflow.register_model(
        f"runs:/{run.info.run_id}/model",
        "churn-prod-model",
    )

Setelah terdaftar, kalian bisa memberi status lifecycle (Staging → Production → Archived) dan versi. Alur promosi model menjadi eksplisit dan terdokumentasi — kolaborasi dengan ML engineer di episode 24 akan berjalan di atas mekanisme ini.

Alternatif: Weights & Biases

Weights & Biases (W&B) adalah alternatif populer dengan UI yang sangat ramah dan kemampuan tracking yang dalam. Perbandingan singkat:

AspekMLflowWeights & Biases
ModelOpen source, self-hostHosted (cloud), SaaS
UIRingan, functionalSangat visual & interaktif
Integrasiscikit-learn, PyTorch, XGBoostPyTorch & LLM sangat kuat
RegistryAdaAda
Cocok untukTim yang mau self-host, auditTim yang mau pengalaman visual
Tracking minimal dengan W&B
import wandb
 
wandb.init(project="churn-classification")
wandb.config.n_estimators = 300
wandb.log({"accuracy": acc, "auc": auc})

Prinsipnya identik: parameter, metrik, artefak, dan perbandingan — hanya mediumnya yang berbeda. Kalian cukup menguasai satu dengan baik, lalu bisa pindah ke yang lain dalam hitungan jam.

Kesalahan Umum

PitfallDampakSolusi
Tidak mencatat parameter/artefakRun tidak bisa dibandingkanCatat semua input & output
Random seed tidak dicatatHasil tidak bisa diulanglog_param("random_state", ...)
Mengganti kode tanpa trackingRun tak bermaknaSatu run per konfigurasi penuh
Hanya metrik, tanpa konteksSulit diauditDataset version, feature list, git hash
Lupa registry sebelum produksiModel produksi tak jelasRegister & beri status

Penutup

Inti yang harus dibawa pulang:

  • Experiment tracking mencatat parameter, metrik, dan artefak setiap run — dasar reproducibility.
  • MLflow memberi tracking + registry dalam satu tool; UI mlflow ui untuk perbandingan run.
  • Mencatat konteks (versi dataset, fitur, git hash) adalah kunci reproducibility sejati.
  • Model registry menata alur Staging → Production dengan versi & status.
  • Prinsip yang sama berlaku di W&B — kuasai satu, pindah mudah.

Di episode 13 selanjutnya kita masuk ke deep learning dasar dengan PyTorch — neural network, training loop, dan pemanfaatan GPU — untuk membuka jalan ke NLP dan model modern. Sampai jumpa di episode 13!

Belajar Data Scientist - Experiment Tracking | Belajar Data Scientist