Belajar Machine Learning - Pipeline ML & Tooling
Episode 2 of 25

Belajar Machine Learning - Pipeline ML & Tooling

Mengurai alur lengkap pipeline machine learning dari data mentah hingga deployment, memahami pembagian train/validation/test yang benar, API konsisten scikit-learn (fit, predict, transform), serta pentingnya reproducibility lewat random seed dan environment yang terkontrol.

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

Pendahuluan

Setelah di episode 1 kita memahami definisi dan jenis-jenis ML — supervised, unsupervised, hingga reinforcement learning — pada episode ini kita membangun pola kerja yang akan menemani kita sepanjang series: pipeline dan tooling.

Mengapa memahami pipeline di awal itu penting? Karena sebagian besar kegagalan proyek ML bukan di model, melainkan di tahap sebelum dan sesudahnya: data kotor, split yang salah, dan eksperimen yang tidak bisa diulang. Kalian boleh saja memakai model tercanggih, tetapi jika prosesnya berantakan, hasilnya tidak akan dipercaya.

Gambaran Utuh Pipeline

Pipeline ML standar 2026 terlihat seperti ini:

100%

Setiap tahap punya tanggung jawab sendiri dan saling bergantung. Mari bedah satu per satu.

Data → Preprocessing

Data mentah hampir tidak pernah siap dipakai langsung: ada nilai hilang, skala yang sangat berbeda antar kolom, dan kategori yang harus di-encode. Preprocessing menormalkan semuanya sehingga model bisa belajar dengan baik. Detail lengkapnya ada di episode 4.

Split Train/Validation/Test

Kita tidak boleh mengevaluasi model dengan data yang sama yang dipakai untuk belajar — model akan "hafal" (overfit) dan nilainya menipu. Karena itu data dipecah menjadi tiga bagian:

SplitFungsiPorsi umum
TrainTempat model belajar pola60-80%
ValidationMenyempurnakan hyperparameter10-20%
TestEvaluasi final yang jujur10-20%

Aturan emasnya: test set hanya disentuh sekali di akhir. Jika kalian mengubah model berdasarkan hasil test, maka test bukan lagi test — ia telah "bocor" menjadi validation.

Split yang benar
from sklearn.model_selection import train_test_split
 
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.2, random_state=42, stratify=y
)

Parameter random_state=42 membuat pembagian deterministik — kapan pun dijalankan, hasilnya sama. Ini bagian dari reproducibility yang kita bahas lebih jauh di bawah.

Training → Evaluation → Tuning

Model dilatih di train set, dievaluasi di validation set, lalu hyperparameter disesuaikan. Proses ini berulang (lihat loop pada diagram) sampai performa validation memuaskan. Baru setelah itu kita uji sekali di test set. Episode 10 akan membahas evaluasi dan tuning secara mendalam.

Deployment dan Setelahnya

Model yang sudah dianggap baik di-export dan disajikan sebagai API atau batch job. Setelah berjalan di produksi, performanya harus terus dipantau karena data di dunia nyata berubah seiring waktu (drift) — ini topik episode 17 dan 18.

API Konsisten scikit-learn

Salah satu alasan scikit-learn mudah dipelajari: seluruh estimator memakai API yang sama. Tiga metode utama:

  • fit(X, y) — belajar dari data.
  • predict(X) — menghasilkan prediksi.
  • transform(X) — mengubah data (khusus transformer seperti scaler dan encoder).

Konsistensi ini membuat pipeline mudah disusun: sebuah transformer bisa dipasang di depan estimator dan semuanya mengalir.

Pola fit/predict/transform
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
 
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X_train)   # belajar skala + ubah train
 
clf = LogisticRegression()
clf.fit(X_scaled, y_train)                 # belajar dari data ter-scaled
 
# Data test harus ditransform dengan scaler yang SAMA (bukan refit!)
X_test_scaled = scaler.transform(X_test)
preds = clf.predict(X_test_scaled)

Warning

Perhatikan bahwa fit_transform hanya dipanggil pada data train. Untuk data test kita memanggil transform saja — me-refit scaler pada test set adalah data leakage yang membuat evaluasi jadi tidak jujur.

Pipeline Object

Daripada menulis langkah demi langkah manual seperti di atas (yang rawan salah urut), scikit-learn menyediakan objek Pipeline:

Pipeline objek
from sklearn.pipeline import Pipeline
 
pipeline = Pipeline([
    ("scaler", StandardScaler()),
    ("clf", LogisticRegression()),
])
 
pipeline.fit(X_train, y_train)
score = pipeline.score(X_test, y_test)

Kelebihannya: satu objek mengingat seluruh urutan transformasi, sehingga risiko leakage berkurang dan kode lebih bersih. Pipeline akan menjadi kebiasaan yang sangat berguna mulai episode 4.

Reproducibility dan Seed

Reproducibility berarti orang lain (atau kalian sendiri tiga bulan lagi) bisa menjalankan kode dan mendapatkan hasil yang sama. Sumber acak utama di ML adalah:

  • Split data (train_test_split).
  • Inisialisasi bobot model.
  • Sampling (misalnya dalam boosting atau SMOTE).

Untuk mengendalikannya, set seed secara konsisten:

Set seed global
import random
import numpy as np
 
random.seed(42)
np.random.seed(42)
 
# Model tertentu juga punya parameter random_state sendiri
clf = LogisticRegression(random_state=42)

Di episode 11 kita akan membahas reproducibility tingkat lanjut: hashing data, pencatatan environment, dan experiment tracking dengan MLflow.

Tooling Workflow

Workflow standar yang akan kita pakai sepanjang series:

TahapTool
Eksplorasi dataJupyter Notebook
Manipulasi dataPandas
Preprocessing & modelingscikit-learn
VisualisasiMatplotlib, Seaborn
Tracking (episode 11)MLflow
Deployment (episode 18)FastAPI, Docker

Jupyter sangat ideal untuk iterasi cepat di tahap eksplorasi; untuk otomasi produksi kita pindah ke script Python murni di episode 17 dan 18.

Penutup

Pada episode 2 ini, kalian telah memahami pola kerja yang akan dipakai sepanjang series.

Inti yang harus dibawa pulang:

  • Pipeline ML: data → preprocessing → split → training → evaluation → tuning → deployment → monitoring.
  • Split train/validation/test dengan test set hanya disentuh sekali.
  • API scikit-learn: fit, predict, transform — konsisten untuk semua estimator.
  • Gunakan Pipeline untuk menghindari data leakage.
  • Set random_state dan seed agar eksperimen reproducible.

Di episode 3 selanjutnya kita akan membahas matematika dasar untuk ML — aljabar linear (vektor, matriks, dot product), kalkulus intuitif (turunan dan gradient), serta probabilitas dan statistik (distribusi, mean/variance, korelasi) yang menjadi bahasa di balik setiap model. Pastikan venv kalian aktif, karena episode 3 penuh dengan contoh NumPy. Sampai jumpa di episode 3!