Skrip batch berjalan dan layanan hidup — dan tepat di titik inilah banyak proyek data science menemui kenyataan yang tidak menyenangkan: pekerjaan belum selesai. Model produksi adalah alat yang dipakai terus-menerus oleh orang lain, dan tanpa pengawasan, kerusakannya baru terasa setelah keputusan yang salah sudah diambil. Pemantauan (monitoring) memasang dasbor kesehatan sebelum gejala muncul: berapa cepat layanan menjawab, berapa banyak prediksi yang gagal diproses, dan apakah komposisi prediksinya masih masuk akal. Pada chapter ini kita belajar tiga metrik operasional inti dan menerapkannya pada log mingguan model churn kita.

Tiga Metrik Operasional yang Dikumpulkan #

Metrik pemantauan dibedakan menjadi dua keluarga. Metrik operasional menjawab “apakah layanan sehat?” dan bisa dihitung seketika tanpa label. Metrik performa menjawab “apakah model masih akurat?” dan menuntut data berlabel terbaru. Kita mulai dari keluarga pertama karena inilah yang harus dipasang sejak hari pertama:

MetrikCara menghitungSinyal bahayaTindak lanjut
Latensi p95lama layanan menjawab; 95% permintaan lebih cepat dari nilai iniangka merambat naik mingguanperiksa beban server dan ukuran data masukan
Tingkat prediksi kelasproporsi prediksi kelas positif per periodekeluar dari rentang wajar 0,30-0,50periksa perubahan data masukan (chapter berikutnya)
Error ratejumlah permintaan gagal dibagi total permintaanlonjakan setelah rilis kode baruperiksa log galat dan kembalikan versi bermasalah
Akurasi berkalaskor model pada cuplikan data berlabel terbaruturun di bawah ambang layananjadwalkan pelatihan ulang (chapter pembaruan model)

Latensi p95 layak dijelaskan sebentar. Rata-rata mudah tertipu oleh segelintir jawaban cepat, sedangkan p95 adalah nilai yang hanya dilewati 5% permintaan terlambat — angka yang mewakili pengalaman terburuk yang masih sering dialami pengguna. Di kedai kita, p95 sebesar 15 milidetik berarti hampir semua prediksi selesai dalam sekejap mata; pada layanan yang lebih besar, p95 di atas satu detik sudah terasa lambat.

Satu catatan kejujuran metodologis: di produksi, ketiga metrik ini dicatat oleh jam sungguhan pada setiap permintaan. Agar contoh kita dapat dijalankan ulang dengan hasil yang sama, kita menganalisis log mingguan yang sudah terkumpul — angkanya beku sebagai data, seperti cuplikan hasil ekspor mingguan.

Membaca Log Mingguan Bersama #

Log di bawah ini adalah rekap empat minggu pertama layanan prediksi churn: berapa total prediksi, berapa di antaranya menyebut churn, berapa permintaan gagal, dan berapa latensi p95-nya. Kode berikut menghitung metrik turunannya lalu menandai minggu yang proporsi prediksinya keluar dari rentang wajar.

python
import pandas as pd

log_mingguan = pd.DataFrame({
    "minggu": ["2026-W1", "2026-W2", "2026-W3", "2026-W4"],
    "jumlah_prediksi": [120, 118, 121, 60],
    "prediksi_churn": [42, 44, 61, 39],
    "permintaan_gagal": [1, 0, 2, 1],
    "latensi_p95_ms": [12, 13, 14, 15],
})

log_mingguan["proporsi_churn"] = (log_mingguan["prediksi_churn"] / log_mingguan["jumlah_prediksi"]).round(2)
log_mingguan["error_rate"] = (log_mingguan["permintaan_gagal"] / log_mingguan["jumlah_prediksi"]).round(3)

ambang_bawah, ambang_atas = 0.30, 0.50


def status_distribusi(proporsi):
    if proporsi < ambang_bawah:
        return "PERIKSA: terlalu rendah"
    if proporsi > ambang_atas:
        return "PERIKSA: terlalu tinggi"
    return "normal"


log_mingguan["status_distribusi"] = log_mingguan["proporsi_churn"].map(status_distribusi)
print(log_mingguan.to_string(index=False))

Output yang Dihasilkan:

text
 minggu  jumlah_prediksi  prediksi_churn  permintaan_gagal  latensi_p95_ms  proporsi_churn  error_rate       status_distribusi
2026-W1              120              42                 1              12            0.35       0.008                  normal
2026-W2              118              44                 0              13            0.37       0.000                  normal
2026-W3              121              61                 2              14            0.50       0.017                  normal
2026-W4               60              39                 1              15            0.65       0.017 PERIKSA: terlalu tinggi

Mari kita telaah bagian-bagian pentingnya:

  1. Baris 3-9 (log sebagai data): empat baris rekap ini adalah bentuk paling sederhana dari tabel pemantauan — satu baris per periode, satu kolom per metrik mentah. Di produksi tabel ini terisi otomatis setiap minggu.
  2. Baris 11-12 (metrik turunan): proporsi kelas positif dan error rate dihitung dari kolom mentah, bukan dicatat tangan — angka yang dihitung ulang dari sumbernya tidak bisa salah salin.
  3. Baris 14 dan 17-22 (ambang sebagai kebijakan): rentang 0,30-0,50 ditulis sebagai variabel bernama, bukan magic number yang tersembunyi di dalam perbandingan; siapa pun yang membaca kode tahu ini kebijakan tim yang bisa dinegosiasikan ulang.
  4. Baris 25-26 (status per minggu): map menerapkan fungsi status ke tiap baris, menghasilkan kolom yang langsung memandu mata pembaca ke minggu bermasalah.

Pembacaan tabelnya sebagai petugas pemantau: minggu pertama dan kedua sehat (proporsi 0,35 dan 0,37, error rate nyaris nol). Minggu ketiga berada tepat di batas atas 0,50 — belum menyalakan alarm, tetapi layak dicatat. Minggu keempat melompat ke 0,65 dengan jumlah prediksi anjlok menjadi 60: dua pertiga pelanggan yang datang diprediksi akan pergi. Ketika proporsi prediksi berubah sebesar itu, penjelasannya hampir selalu ada di data masukan, bukan di dalam model — dan itulah penyelidikan chapter berikutnya.

Metrik Performa Berkala pada Golden Set #

Baris keempam tabel di atas menuntut sesuatu yang tidak dimiliki log operasional: label kebenaran. Untuk mengukur apakah model masih akurat, kita menyisihkan cuplikan data terbaru yang sudah berlabel — disebut golden set — lalu mencetak skor model pada cuplikan itu secara berkala, misalnya setiap bulan. Golden set berfungsi seperti alat ukur kalibrasi: ukurannya kecil (cukup 20-30 baris terbaru), asal-usulnya jelas, dan tidak pernah ikut pelatihan.

Hasil ukur inilah yang menentukan tindakan besar. Bila akurasi pada golden set masih di atas ambang layanan — katakanlah 0,75 untuk churn kita — model dibiarkan bekerja dan pemantauan operasional berjalan seperti biasa. Bila skornya turun, prosedur pembaruan model menyusul. Alat pelacakan eksperimen seperti MLflow lazim dipakai tim untuk menyimpan kedua keluarga metrik ini berdampingan — setiap prediksi mingguan dan setiap skor golden set tercatat sebagai deret waktu yang bisa diplot dan dibandingkan antar versi model.

Rangkuman #

  • Pemantauan model terbagi dua keluarga: metrik operasional (latensi p95, tingkat prediksi kelas, error rate) yang bisa dihitung seketika, dan metrik performa berkala yang menuntut label terbaru.
  • Tabel pemantauan mingguan — satu baris per periode, satu kolom per metrik — adalah bentuk dasar yang terbaca semua orang; ambang batas ditulis sebagai kebijakan bernama.
  • Pada log kita, proporsi prediksi churn merambat 0,35 → 0,37 → 0,50 → 0,65: sinyal perubahan yang kuat meski error rate dan latensi masih sehat.
  • Golden set kecil berlabel menjaga metrik performa tetap terukur; hasilnya menentukan kapan model cukup dipantau dan kapan ia perlu diperbarui.

Alarm minggu keempat telah berbunyi: dua pertiga prediksi menyebut churn, jauh di luar kebiasaan. Langkah berikutnya adalah forensik — membandingkan distribusi data masukan terhadap masa ketika model dilatih untuk menemukan apa yang berubah. Kita kerjakan pada chapter berikutnya: Mendeteksi Perubahan Data .

Referensi: