C2 · Machine Learning Engineering
Membangun model prediktif yang benar-benar bekerja di luar notebook: algoritma klasik yang diturunkan dan ditulis sendiri, validasi yang jujur, keputusan bisnis dari peluang, lalu pipeline, API, dan pemantauan, dengan AI sebagai rekan yang setiap klaimnya diuji.
- 16 modul
- 111 latihan
- 108 istilah
Daftar modul
- 01Peran ML engineer dan siklus MLGratis7 latihan
- 02Data, fitur, dan pemisahan yang jujurGratis7 latihan
- 03Regresi linear dan gradient descentCoding Studio7 latihan
- 04Regresi logistik dan klasifikasiCoding Studio7 latihan
- 05Evaluasi klasifikasi dan keputusanCoding Studio7 latihan
- 06Validasi silang dan bias–variansCoding Studio6 latihan
- 07RegularisasiCoding Studio7 latihan
- 08k-NN dan Naive BayesCoding Studio7 latihan
- 09Pohon keputusanCoding Studio7 latihan
- 10Bagging dan hutan acakCoding Studio7 latihan
- 11Gradient boostingCoding Studio7 latihan
- 12Belajar tanpa labelCoding Studio7 latihan
- 13Data tak seimbang, keadilan, dan interpretabilitasCoding Studio7 latihan
- 14Pipeline, reproduktibilitas, dan pelacakan eksperimenCoding Studio7 latihan
- 15Penyajian dan pemantauan modelCoding Studio7 latihan
- 16Proyek akhir: Model MakmurCoding Studio7 latihan
Modul 01–02 gratis; modul bergembok terbuka dengan Coding Studio. Lihat paket
Ada contoh atau latihan bertanda “Kerjakan di laptop”? Paket dan data C2 untuk menjalankannya di komputermu ada di panduan menjalankan kode di komputermu.
Tentang course ini
Membangun model prediktif yang benar-benar bekerja di luar notebook: algoritma klasik yang diturunkan dan ditulis sendiri, validasi yang jujur, keputusan bisnis dari peluang, lalu pipeline, API, dan pemantauan, dengan AI sebagai rekan yang setiap klaimnya diuji.
Course inti jalur Data & AI (titik keluar Data Scientist dan ML Engineer), course kedua jalur ini sesudah C1. Ditulis Oktober 2026; latihan Python di setiap modul diperiksa otomatis.
Posisi course
Kenapa course ini ada
Melatih model kini hanya butuh tiga baris scikit-learn, dan agen AI bisa menulis seluruh notebook dalam semenit. Kegagalan ML di dunia nyata hampir tidak pernah karena kurang algoritma; penyebabnya:
- kebocoran data: fitur yang baru diketahui sesudah kejadian (AUC 0,99 di notebook, tidak berguna di produksi);
- validasi acak pada data yang berurutan waktu, sehingga skor terlalu optimis;
- metrik yang tidak cocok dengan keputusan (akurasi 88% dengan menebak "tidak churn" untuk semua);
- peluang yang tidak terkalibrasi, sehingga ambang keputusan salah;
- model yang adil di rata-rata tetapi salah sasaran untuk satu kelompok;
- model yang diam-diam memburuk karena dunia berubah dan tidak ada yang memantau.
Cara klasik di course ini: regresi linear dan logistik diturunkan lalu
dilatih dengan gradient descent yang ditulis sendiri (NumPy), evaluasi dan
validasi silang dari prinsip, bias–varians lewat simulasi, regularisasi
(ridge bentuk tertutup, lasso dengan coordinate descent), Naive Bayes, pohon
keputusan CART, hutan acak, dan gradient boosting ditulis sendiri, k-means
dan PCA lewat SVD. Cara modern: scikit-learn 1.8 (Pipeline,
ColumnTransformer, HistGradientBoosting), LightGBM, pelacakan eksperimen,
kartu model, penyajian dengan FastAPI, pemantauan pergeseran data, dan AI
sebagai rekan yang setiap klaim metriknya diulang dan diuji.
Setiap algoritma yang ditulis sendiri dibandingkan dengan padanan pustakanya (hasil harus sama atau perbedaannya dijelaskan): turunkan dan implementasikan dengan NumPy, lalu pakai pustaka.
Untuk siapa
- Course wajib: F1 Python dari Nol dan C1 Data Science dan Analitik (C1 Modul 10–11 tentang regresi sebagai alat inferensi dianggap sudah dikuasai; cara melatih regresi logistik, termasuk IRLS, dan ridge diajarkan di C2 Modul 04 dan 07, bukan di C1).
- Matematika wajib:
- Aljabar Linear: perkalian matriks, matriks simetris, QR, nilai dan vektor eigen, SVD (dipakai langsung di Modul 03, 07, dan 12);
- Kalkulus I dan II: turunan, aturan rantai, turunan parsial dan gradien (Modul 03–04 dan 11);
- Statistika dan Probabilitas: peluang bersyarat, teorema Bayes, distribusi, ekspektasi dan varians (Modul 05, 06, 08, 13).
- Untuk perkakas rilis: F5 Rilis (FastAPI, Docker, GitHub Actions) dianjurkan sebelum Modul 15 dan wajib bila kamu mengejar lencana Tayang di Modul 16.
- Dianjurkan: F2 SQL dan K1 Struktur Data dan Algoritma (rekursi, pengurutan, notasi O untuk Modul 09).
Lingkungan lab
| Bagian | Di mana | Diperiksa |
|---|---|---|
| Latihan Python dengan numpy, pandas, scikit-learn, LightGBM | Peramban (Pyodide, Python 3.14) | Otomatis |
Latihan API FastAPI dengan TestClient (memakai thread, tidak jalan di peramban) | GitHub Codespaces | Otomatis |
| Notebook, penyajian sungguhan, data lebih besar | GitHub Codespaces atau Google Colab (gratis) | Lab "Selesai bila:" |
Peramban menjalankan Python 3.14, sedangkan pemeriksa otomatis memakai
Python 3.12 dan 3.13 dengan versi paket yang sama (_kerangka/requirements.txt).
Perilaku yang dipakai course ini sama di ketiga versi; bila kamu melihat
perbedaan, laporkan.
Versi dipatok sama dengan Pyodide 314.0.7: numpy 2.4.6, pandas 3.0.2, scipy
1.18.0, scikit-learn 1.8.0, LightGBM 4.6.0, FastAPI 0.136.1, Pydantic 2.12.5,
httpx 0.28.1 (dicek 22 Oktober 2026; perilaku yang bergantung versi ditandai
"perlu dicek ulang" di modulnya). XGBoost, SHAP, dan ONNX hanya muncul
sebagai kode statis dan Lab.
Satu kali menjalankan kode dibatasi 15 detik (latihan pelatihan model boleh
batas=N sampai 120 detik, tetapi peserta menjalankannya di peramban, jadi
data latihan dibuat kecil).
Waktu: ±6 jam per modul, total ±95 jam.
Silabus (16 modul)
| # | Modul | Klasik | Modern | Proyek Model Makmur |
|---|---|---|---|---|
| 01 | Peran ML engineer dan siklus ML | Masalah → metrik → baseline → data → model → evaluasi → rilis → pantau; kapan tidak memakai ML; definisi belajar (Mitchell 1997) | Model kecil khusus vs LLM (biaya, latensi, privasi); kesalahan khas kode ML buatan agen | MASALAH.md: tiga masalah pemilik warung, metrik bisnis, baseline |
| 02 | Data, fitur, dan pemisahan yang jujur | Latih/validasi/uji, pemisahan berbasis waktu, kebocoran target dan kontaminasi, baseline, rekayasa fitur | pandas + scikit-learn ColumnTransformer, datasheet data | bagi_waktu; menemukan fitur bocor poin_hangus |
| 03 | Regresi linear dan gradient descent | Kerugian kuadrat, gradien diturunkan, GD batch/stokastik/mini-batch, laju belajar, standardisasi, konvergensi; dibandingkan dengan persamaan normal C1 | SGDRegressor, LinearRegression; autodiff dan SGD lanjut ada di C9 | Model permintaan linear pertama |
| 04 | Regresi logistik dan klasifikasi | Log-loss diturunkan dari likelihood, gradiennya, sigmoid stabil numerik, softmax multikelas, batas keputusan | LogisticRegression (lbfgs), peluang vs label | Model churn pertama |
| 05 | Evaluasi klasifikasi dan keputusan | Matriks kebingungan, presisi/recall/F1, ROC-AUC sebagai peluang peringkat (Mann–Whitney), PR-AUC, kalibrasi (Brier, diagram reliabilitas), ambang dari biaya | sklearn.metrics, CalibratedClassifierCV | Ambang kupon churn dari untung kampanye |
| 06 | Validasi silang dan bias–varians | k-fold, berstrata, GroupKFold, deret waktu, validasi bersarang, kurva belajar, dekomposisi bias–varians lewat simulasi | cross_validate, GridSearchCV/RandomizedSearchCV, HalvingGridSearchCV | Validasi mundur model permintaan |
| 07 | Regularisasi | Ridge bentuk tertutup, lasso dengan coordinate descent (soft-thresholding), elastic net, jalur regularisasi, penskalaan | Ridge, Lasso, LogisticRegression(C=…), ElasticNetCV | Fitur churn yang bertahan di lasso |
| 08 | k-NN dan Naive Bayes | Jarak dan kutukan dimensi, Naive Bayes multinomial dengan pemulusan Laplace di ruang log, tokenisasi | TfidfVectorizer + LogisticRegression, embedding (jembatan ke C3) | Pengklasifikasi ulasan pelanggan |
| 09 | Pohon keputusan | CART ditulis sendiri: Gini/entropi, pencarian pemisah O(n log n) dengan pengurutan, kriteria berhenti, pemangkasan biaya-kompleksitas | DecisionTreeClassifier, export_text, ccp_alpha | Pohon churn yang bisa dijelaskan ke pemilik |
| 10 | Bagging dan hutan acak | Bootstrap, bagging mengurangi varians (simulasi), subset fitur, galat out-of-bag, kepentingan impuritas vs permutasi | RandomForestClassifier, permutation_importance | Hutan acak churn dan permintaan |
| 11 | Gradient boosting | Boosting sebagai penurunan gradien di ruang fungsi (Friedman 2001), ditulis sendiri untuk kerugian kuadrat dan log-loss, shrinkage, early stopping | HistGradientBoosting*, LightGBM, XGBoost sekilas | Model permintaan terbaik vs naif musiman |
| 12 | Belajar tanpa label | k-means (Lloyd, k-means++) dan PCA lewat SVD ditulis sendiri, siluet, deteksi anomali | KMeans, PCA, IsolationForest | Segmentasi pelanggan |
| 13 | Data tak seimbang, keadilan, interpretabilitas | Bobot kelas, ambang, metrik keadilan (paritas demografis, kesetaraan peluang) dihitung sendiri, kepentingan permutasi, partial dependence | class_weight, PartialDependenceDisplay, SHAP sekilas | Audit keadilan model churn per kelompok usia |
| 14 | Pipeline, reproduktibilitas, pelacakan eksperimen | Kontrak fit/transform, transformer buatan sendiri, kebocoran di dalam validasi silang, benih dan versi, serialisasi (bahaya pickle), kartu model | Pipeline, set_output, skops sekilas; MLflow dan registry di C10 | Pipeline churn utuh + kartu model minimal |
| 15 | Penyajian dan pemantauan model | Inferensi batch vs online, validasi masukan, versi model, pergeseran data (PSI ditulis sendiri) vs pergeseran konsep, label terlambat | FastAPI + Pydantic + TestClient (diperiksa), ONNX sekilas; canary dan pemantauan berskala di C10 | API prediksi churn + laporan pergeseran September |
| 16 | Proyek akhir: Model Makmur | Menyatukan: masalah, data, validasi, model, keputusan, rilis, pemantauan | Repo reproduktif, kartu model, API; lencana Tayang opsional | Laporan dan API utuh |
Proyek: Model Makmur
Pemilik Warung Makmur (F2, C1) kini punya tiga permintaan: siapa pelanggan
yang mungkin tidak kembali bulan depan (agar kupon tepat sasaran), berapa
stok yang perlu disiapkan besok, dan bisakah pesan pelanggan dipilah
otomatis? Peserta membangun modelnya selangkah demi selangkah dengan data di
data/ (dibuat deterministik oleh data/buat_data.py): panel bulanan
pelanggan dengan label churn, penjualan harian enam produk, ulasan berlabel,
dan profil pelanggan untuk segmentasi. Data sintetis punya "kebenaran" yang
diketahui (fungsi peluang churn, mekanisme permintaan, segmen tersembunyi,
derau label), sehingga tes memeriksa apakah metode menemukan pola yang
benar dan menghindari jebakan (kebocoran, validasi acak, pergeseran),
bukan sekadar menjalankan kode. Kontrak: proyek-model.md.
Kerangka setiap modul
# Modul NN · Judul
> **Hasil belajar:** 3–5 kemampuan yang bisa diamati
> **Prasyarat:** modul sebelumnya / pengetahuan
> **Waktu:** ± X jam
> **Hasil lab:** apa yang dihasilkan untuk Model Makmur
## Intinya (3–5 butir)
## 1. Masalah nyata
## 2. Konsep inti
### 2.N Di balik layar: … (wajib, minimal satu: matematika/algoritma di balik fungsi pustaka)
### 2.N Di balik layar (opsional): … (pendalaman; tidak diuji di kuis)
## 3. Bekerja dengan agen
### Tugas tanpa AI (cara klasik)
### Tugas dengan AI (cara modern)
### Bandingkan
## 4. Lab
### Latihan terperiksa (≥ 6; label **Tingkat:**, minimal 2 tantangan)
### Lab proyek (diakhiri "Selesai bila:")
## 5. Daftar periksa review
## 6. Red flag model dan kode agen
## 7. Studi kasus
## 8. Di skala enterprise
## 9. Kuis (8–10 soal, kunci + alasan)
## Sumber (dokumentasi resmi + rujukan klasik, "dicek 18 Oktober 2026")
Aturan isi:
- Tulis sendiri dulu, lalu pustaka. Di modul tempat algoritma diajarkan, latihan intinya ditulis dengan NumPy dan melarang padanan pustakanya (disebut di perintah, diperiksa hemat lewat teks kode); bagian modern lalu membandingkan hasilnya dengan scikit-learn dalam toleransi.
- Angka dari kode, bukan dari ingatan. Setiap metrik di prosa diambil dari
contoh yang diperiksa mesin (
python+text keluaran). - Tes memeriksa kebenaran ML, bukan hanya bentuk: model tanpa fitur bocor
harus lebih baik dari baseline di data uji berbasis waktu, gradien buatan
sendiri harus cocok dengan selisih hingga, lasso harus sama dengan
scikit-learn, klaster harus memulihkan segmen tersembunyi, ramalan harus
mengalahkan naif musiman, kode awal yang naif (misalnya memakai
poin_hangusatau pemisahan acak) harus gagal. - Keacakan selalu berbenih (
np.random.default_rng(42),random_state=0); hasil dibandingkan dengan toleransi yang disebut di perintah. Latihan yang melatih model memakai potongan data kecil agar selesai dalam batas waktu peramban. - Studi kasus memakai skenario umum (penaut artikel bantuan, persentil ujian daring, corong aktivasi aplikasi, endpoint prediksi publik), tanpa data pengguna sungguhan.
- Bagian opsional ("Di balik layar (opsional)" dan latihan bertingkat "tantangan (opsional)") memperdalam materi; kuis tidak mengujinya.
- Sumber klasik bergantian: Hastie, Tibshirani & Friedman The Elements of Statistical Learning (ed. 2); James, Witten, Hastie, Tibshirani & Taylor An Introduction to Statistical Learning (ed. Python 2023); Bishop Pattern Recognition and Machine Learning (2006); Murphy Probabilistic Machine Learning: An Introduction (2022); Breiman dkk. Classification and Regression Trees (1984); Breiman (2001) "Random Forests"; Friedman (2001) "Greedy Function Approximation"; Tibshirani (1996) lasso; Kohavi (1995) validasi silang; Lloyd (1982); Arthur & Vassilvitskii (2007) k-means++; Sculley dkk. (2015) "Hidden Technical Debt in Machine Learning Systems"; Mitchell dkk. (2019) "Model Cards"; Kaufman dkk. (2012) kebocoran. Edisi dan bab diverifikasi.
- Patokan CS2023: knowledge area Artificial Intelligence (Machine Learning) dan Society, Ethics, and the Profession untuk keadilan.
Hubungan dengan course lain
| Course | Hubungan |
|---|---|
| F1, C1 | Prasyarat. Inferensi (interval, uji, bootstrap, regresi sebagai alat inferensi, QR) ada di C1; C2 memakainya untuk prediksi. Ridge dan metrik keadilan berumah di C2 (Modul 07 dan 13) |
| F5 Rilis | Perkakas rilis (FastAPI, Docker, GitHub Actions, tayang) yang dipakai Modul 15–16 |
| K1 | Rekursi, pengurutan, dan notasi O untuk pencarian pemisah pohon (Modul 09) |
| C9 Deep Learning dari Dasar | Autodiff, SGD lanjut, dan jaringan saraf; C2 berhenti di gradient descent yang ditulis sendiri |
| C10 MLOps dan Platform ML | Pelacakan eksperimen, registry, penyajian berskala, canary, dan pemantauan pergeseran dimiliki C10; Modul 14–15 C2 hanya memberi pandangan ML engineer dan menautkannya |
| C3 AI Engineering | Kapan model klasik kecil lebih tepat dari LLM; embedding dan pencarian sparse/dense |
| C4 Data Engineering | Sumber fitur, kualitas data, pipeline batch |
Yang tidak dibahas
SVM dan metode kernel, sistem rekomendasi, stacking secara mendalam, optimasi hiperparameter Bayesian (hanya disebut di Modul 06), klaster hierarkis, DBSCAN, dan Gaussian mixture, UMAP (hanya disebut batasnya di Modul 12), serta prediksi konformal (hanya disebut di Modul 11). Rujukan ESL dan ISLP di bagian Sumber cocok untuk melanjutkan.
Istilah
- Fitur (feature): kolom masukan model. Di statistika C1 disebut prediktor atau kovariat; maknanya sama.
- Target atau label: yang diprediksi (di C1: variabel respons).