Mempelajari sisi data engineering dari AI: akuisisi, cleaning, augmentation, labeling, dan data versioning; serta membangun pipeline data untuk training yang benar — train/validation/test split, normalization, dan feature engineering — untuk mencegah data leakage.

Setelah di episode 8 kalian memahami cara mengevaluasi model dan dimensi etika, episode ini kembali ke tanah: data. Model yang hebat tidak ada artinya tanpa data yang benar. Di dunia kerja, pernyataan "80% waktu engineer AI dihabiskan untuk data" bukan lelucon — ini deskripsi pekerjaan sehari-hari.
Mengapa episode ini penting? Karena hampir semua kegagalan model di produksi bukan karena modelnya, melainkan karena kualitas data: data yang kotor, leakage, distribusi yang berubah, atau label yang salah. Episode ini membangun kebiasaan data engineering yang benar sejak awal — kebiasaan yang akan membedakan kalian dari mereka yang hanya "memanggil model".
Sumber data nyata bermacam-macam:
| Sumber | Contoh | Tantangan Utama |
|---|---|---|
| Internal (database, log) | Transaksi, log server | Query, join, privacy |
| Eksternal | Dataset publik (Kaggle, Hugging Face), scraping | Lisensi, kualitas, legalitas |
| User-generated | Feedback, review | Kuantitas, noise |
| Labeling manual | Anotasi gambar | Biaya, konsistensi |
Data generation adalah tren 2025-2026: memakai LLM untuk membuat data sintetis tambahan (augmentasi, label awal yang lalu di-review manusia). Hemat biaya, tetapi hasilnya harus selalu diaudit — data sintetis bisa menyuntik bias model penghasilnya.
pip install datasets huggingface_hubfrom datasets import load_dataset
ds = load_dataset("tweet_eval", "sentiment")
print(ds["train"][0])Data mentah selalu kotor. Pipeline cleaning standar:
df.drop_duplicates().import pandas as pd
df = pd.read_csv("raw_orders.csv")
df = df.drop_duplicates()
df["price"] = pd.to_numeric(df["price"], errors="coerce")
df = df.dropna(subset=["price"])
df = df[df["price"].between(0, 100000)] # buang outlier tak masuk akal
print(df.info())Aturan penting: selalu simpan versi raw. Jangan pernah menimpa data mentah hasil cleaning — suatu saat kalian butuh kembali ke sumber untuk debugging.
Supervised learning butuh label yang benar. Dua pendekatan:
Metrik penting: inter-annotator agreement (misal Cohen's Kappa) — jika anotator tidak sepakat, label tidak reliabel dan model akan belajar noise.
Augmentation menciptakan variasi data tanpa pengumpulan baru — cara paling efektif melawan overfitting (episode 5):
from torchvision import transforms
train_transform = transforms.Compose([
transforms.RandomHorizontalFlip(p=0.5),
transforms.RandomRotation(10),
transforms.ColorJitter(brightness=0.2),
transforms.ToTensor(),
])Augmentasi menambah robustness: model yang dilatih dengan banyak variasi cenderung tidak terkejut oleh kondisi dunia nyata yang berubah.
Data berubah sepanjang waktu. Tanpa versioning, mustahil mereproduksi training yang sudah lewat. Di episode 11 kita akan melihat experiment tracking; untuk data, ada dua level:
v1-2026-08-10).dvc add data/train.csv
git commit -am "add train data v3"Ini bagian yang paling sering salah di dunia nyata. Data leakage terjadi ketika informasi dari test/validation "bocor" ke training — hasilnya evaluasi terlihat bagus, tetapi model gagal di produksi.
Aturannya: split dulu, baru preprocessing. Kalau kalian menghitung mean untuk normalization dari seluruh dataset lalu baru split, statistik dari data test ikut "diajarkan" ke model.
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import Pipeline
from sklearn.ensemble import RandomForestClassifier
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42
)
pipe = Pipeline([
("scaler", StandardScaler()),
("clf", RandomForestClassifier()),
])
pipe.fit(X_train, y_train) # scaler fit hanya di train
print(pipe.score(X_test, y_test))Pipeline scikit-learn menjamin transformer di-fit hanya pada data training — kebiasaan kecil yang mencegah kesalahan leakage yang mahal.
Warning
Data leakage adalah error paling berbahaya di ML karena tidak menimbulkan error — evaluasi tetap sukses. Tanda-tandanya: performa validasi "terlalu bagus" atau gap akurasi yang tidak masuk akal. Selalu ingat urutan: split → fit → transform, bukan sebaliknya.
Inti yang harus dibawa pulang:
Pipeline agar transformer hanya di-fit di train.Di episode 10 selanjutnya kita akan mengasah Feature Engineering & Model Selection — encoding variabel kategorikal, scaling, feature selection, imputation, memilih baseline vs model lanjutan, dan trade-off interpretability, accuracy, serta cost. Sampai jumpa di episode 10!