Mempelajari cara menyiapkan fitur agar model bisa belajar dengan baik: encoding variabel kategorikal, scaling, feature selection, dan imputation; serta memilih model dengan benar antara baseline dan model lanjutan, menimbang interpretability, accuracy, dan biaya operasional.

Setelah di episode 9 kalian membangun pipeline data yang benar dan bebas leakage, episode ini naik satu lapisan: menyiapkan fitur agar model benar-benar bisa belajar, dan memilih model yang tepat untuk masalah yang dihadapi. Dua keterampilan inilah yang membedakan engineer AI senior — yang modelnya jadi di produksi — dari pemula yang hanya mencoba-coba algoritma.
Mengapa episode ini penting? Karena "model yang tepat" bukan selalu model paling canggih. Model yang sedikit lebih buruk tapi murah, cepat, dan bisa dijelaskan sering menjadi pilihan yang lebih bijak di dunia nyata. Episode ini mengajarkan kerangka berpikir untuk membuat keputusan itu.
Feature engineering adalah seni mengubah data mentah menjadi representasi yang bisa dipelajari model dengan baik. Model tidak memahami "merah", "laki-laki", atau "2026-08-16" — semua harus diterjemahkan ke angka.
| Teknik | Cara Kerja | Kapan Dipakai |
|---|---|---|
| Label encoding | Setiap kategori → satu angka (0, 1, 2, ...) | Kategori ordinal (rendah/sedang/tinggi) |
| One-hot encoding | Setiap kategori → kolom biner 0/1 | Kategori nominal tanpa urutan |
import pandas as pd
df = pd.DataFrame({"city": ["jakarta", "bandung", "jakarta"]})
encoded = pd.get_dummies(df, columns=["city"], prefix="city")
print(encoded)Perangkap one-hot: terlalu banyak kategori → terlalu banyak kolom (curse of dimensionality). Untuk kardinalitas tinggi, pertimbangkan encoding berbasis target atau embedding.
Model berbasis jarak/gradient (regresi logistik, SVM, neural network) sangat sensitif terhadap skala fitur — fitur dengan rentang besar akan mendominasi. Standardization (mean 0, std 1) adalah pilihan paling umum:
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X_train)Catatan: model berbasis tree (random forest, gradient boosting, XGBoost) tidak butuh scaling — keputusan splitnya berbasis threshold, bukan jarak.
Strategi, dari yang paling sederhana: hapus baris → isi dengan median/modus/mean → isi dengan nilai paling sering → prediksi dari kolom lain. Imputasi dengan median lebih tahan terhadap outlier daripada mean.
from sklearn.impute import SimpleImputer
imputer = SimpleImputer(strategy="median")
X_train = imputer.fit_transform(X_train)
X_test = imputer.transform(X_test)Tidak semua fitur berguna. Fitur yang tidak relevan atau redundan menambah noise, biaya komputasi, dan risiko overfitting. Tiga pendekatan:
feature_importances_ di random forest).from sklearn.ensemble import RandomForestClassifier
model = RandomForestClassifier()
model.fit(X_train, y_train)
importance = pd.Series(model.feature_importances_, index=X_train.columns)
print(importance.sort_values(ascending=False))Aturan praktis: mulai dengan sedikit fitur yang bermakna. Model sederhana dengan fitur tepat biasanya mengungguli model kompleks dengan fitur berantakan.
Pola paling umum kegagalan proyek ML: langsung memakai model kompleks tanpa baseline. Baseline adalah tebakan sederhana untuk mengukur "apakah model kita lebih baik dari tebakan naif?"
| Level | Contoh | Tujuan |
|---|---|---|
| Naif | Prediksi kelas mayoritas, median | Batas bawah yang realistis |
| Baseline ML | Logistic regression, decision tree | Referensi performa |
| Lanjutan | Gradient boosting, deep learning | Mencari performa maksimal |
Jika gradient boosting tidak jauh lebih baik dari logistic regression, pertanyaannya bukan "algoritma apa lagi?" melainkan "fitur dan data apa yang kurang?" — arah perbaikan yang jauh lebih berdampak.
| Trade-off | Contoh Nyata |
|---|---|
| Interpretability vs accuracy | Kredit banking: model yang bisa dijelaskan (logistic regression) wajib untuk keputusan kredit yang diaudit — meski kalah akurat dari XGBoost |
| Cost vs accuracy | LLM kecil vs besar: tugas sederhana cukup pakai model kecil yang murah |
| Latency vs accuracy | Rekomendasi real-time butuh model cepat; analisis offline boleh lambat |
Interpretability sering diabaikan, padahal di industri berregulasi (finansial, kesehatan, asuransi) ia bisa menjadi syarat hukum. Jika stakeholder harus menjelaskan mengapa sistem menolak permohonan, "karena neural network bilang begitu" tidak diterima.
Tip
Tuliskan kriteria sukses sebelum memilih model: akurasi minimum yang bisa diterima, budget latency, dan apakah hasil harus bisa dijelaskan. Kriteria ini menentukan pilihan model lebih kuat daripada tren "model terbaru".
scaler.transform(X_test) tanpa fit — atau fit_transform pada test.Inti yang harus dibawa pulang:
Di episode 11 selanjutnya kita masuk ke dapur training: Model Training & Experiment Tracking — hyperparameter tuning, cross-validation, early stopping, dan pengelolaan eksperimen dengan Weights & Biases dan MLflow agar setiap training bisa direproduksi. Sampai jumpa di episode 11!