Lensa ML

Data Drift dan Model Monitoring

Langkah 1 dari 6: Data Training vs Data Live

Dunia yang ditemui model bukan dunia yang ia pelajari

Shift rata-rata feature live+1.0
sampel training (1.000)sampel live (1.000, simulasi)-4-2024nilai feature · pita arsir: persentil ke-1 sampai ke-99 training
Rata-rata training
−0.01
Rata-rata live
+1.04
Irisan histogram
60%
Live di luar pita
11.2%

Pada shift +1,0, irisan massanya tinggal 60% dan 11,2% input live jatuh di wilayah yang nyaris tidak punya contoh training bagi model.

Geser Shift rata-rata feature live ke +1,0, lalu baca irisan dan porsi di luar pita. Untuk dua distribusi normal baku yang berjarak δ, irisannya adalah 2Φ(−δ/2), jadi shift satu simpangan baku menyisakan sekitar 62% massa bersama. Porsi di atas persentil ke-99 training (2,33) naik menjadi sekitar 9%. Dalam praktik, shift jarang punya satu penyebab yang rapi: musim, segmen pengguna baru, sensor yang berganti, atau perubahan logging di hulu semuanya terlihat sebagai histogram yang bergeser.

Langkah 2 dari 6: Tiga Jenis Drift

Covariate shift, label shift, dan concept shift

Kekuatan drift0.80
kelas 1kelas 0salah kelasaturan aslimodeldi atas garis: prediksi kelas 1x₁ →x₂ ↑
Akurasi training
91.9%
Akurasi live
72.5%
Porsi kelas 1
39%
Rata-rata x₁
+1.56

Input bergeser ke kanan (rata-rata x₁ +1,56). Aturan aslinya tidak berubah, tetapi garis lurus hanya cocok dengannya di dekat data training, jadi akurasi turun ke 72,5%.

Klik setiap jenis drift, lalu geser Kekuatan drift dari 0 sampai 1. Distribusi gabungan bisa difaktorkan dengan dua cara, P(x, y) = P(y|x)·P(x) = P(x|y)·P(y), dan setiap jenis drift mengubah satu faktor sambil menahan yang lain. Label shift punya perbaikan yang sudah dikenal: beri bobot ulang dengan P_live(y) ÷ P_train(y), yang bisa diperkirakan dari confusion matrix model itu sendiri tanpa label live. Concept drift tidak punya perbaikan seperti itu, karena label lamanya kini salah. Concept drift bisa terjadi mendadak, bertahap, atau berulang, seperti pola penipuan musiman.

Langkah 3 dari 6: KS Test

Selisih terbesar antara dua CDF empiris

Shift rata-rata live+0.20
Ukuran sampel (masing-masing)200
ECDF trainingECDF live (simulasi)D, selisih maks.00.51-3-2-101234D = 0.115nilai feature · sumbu y: porsi sampel yang bernilai ≤ x
Statistik KS D
0.115
p-value
0.13
D kritis pada α = 0.05
0.136
Kesimpulan
Tanpa drift

D = 0.115 masih dalam batas sampling noise: dua sampel berisi 200 titik dari satu distribusi sering berbeda sebesar ini (p = 0.13).

Naikkan Ukuran sampel sampai 2.000, lalu geser Shift rata-rata live perlahan untuk menemukan shift terkecil yang terdeteksi. Statistiknya adalah D = maksimum atas x dari |F_train(x) − F_live(x)|. Pada α = 0.05, nilai kritisnya 1.358·√((n + m) ÷ (n·m)), sekitar 0,061 untuk dua sampel berisi 1.000. Uji ini tidak bergantung pada bentuk distribusi dan tidak butuh bin, tetapi hanya menangani satu feature setiap kali dan mengasumsikan nilai kontinu. Untuk feature kategorikal, uji chi-square pada jumlah tiap kategori memegang peran yang sama.

Langkah 4 dari 6: Population Stability Index

Skor drift per bin dengan rentang patokan praktis

Shift rata-rata live+0.30
Sebaran live1.00×
harapan e (training)aktual a (live, simulasi)0.10.212345678910bin = desil training · merah: suku per bin (a − e)·ln(a/e)suku terbesar: bin 10, 0.032
PSI
0.098
KL(a‖e)
0.049
KL(e‖a)
0.049
Rentang (konvensi)
Stabil

PSI = 0.098, di bawah garis 0,1 yang biasanya dibaca stabil. Setiap bin berisi mendekati 10% yang diharapkan.

Geser Shift rata-rata live ke 0,5 dengan Sebaran live di 1,00, lalu kembalikan shift-nya dan regangkan sebarannya. PSI sama dengan KL(a‖e) + KL(e‖a), yaitu Jeffreys divergence yang simetris, dan kedua kartu KL menjumlahkan nilai itu. Untuk dua distribusi normal, shift sebesar δ simpangan baku menghasilkan Jeffreys divergence δ², jadi 0,5 jatuh di dekat 0,25; sepuluh bin melaporkan nilai yang sedikit lebih kecil. Indeks ini berasal dari credit scoring, tempat rentang 0,1 dan 0,25 menjadi kebiasaan, bukan threshold hasil penurunan. Bin kosong butuh nilai minimum kecil, karena tanpa itu ln(a/e) menjadi tak hingga.

Langkah 5 dari 6: Alert Tanpa Noise

Banyak feature, banyak pengecekan, banyak alarm palsu

Feature yang dipantau200
Tingkat signifikansi α0.05
Pengecekan per hari24
Satu pengecekan atas 200 feature, tidak ada yang mengalami drift (simulasi p-value)9 alarm palsu pada threshold 0.05
Perkiraan per pengecekan
10.0
P(ada alarm palsu)
100.0%
Perkiraan per hari
240
Alarm pengecekan ini
9

200 feature stabil yang masing-masing diuji pada α = 0.05 menghasilkan 10,0 alarm palsu per pengecekan, dan 24 pengecekan sehari menghasilkan sekitar 240. Alert yang sesering ini akan diabaikan.

Atur Feature yang dipantau ke 200 dan α ke 0,05, lalu klik Pengecekan baru beberapa kali. Peluang minimal satu alarm palsu adalah 1 − (1 − α)^k, di sini 99,996%. Bonferroni menjaga family-wise rate itu di bawah α, tetapi power-nya hilang seiring k membesar. Prosedur Benjamini–Hochberg justru mengendalikan porsi alarm palsu yang diharapkan di antara semua alert, dan ini cocok untuk kumpulan feature yang besar. Banyak tim juga hanya mengirim alert ketika sebuah feature terus mengalami drift selama beberapa jendela waktu, atau ketika effect size-nya, seperti PSI, melewati level tertentu.

Langkah 6 dari 6: Merespons Drift

Proxy, jeda label, dan perbaikannya

Jeda label10 hari
Simulasi pemantauan, hari 0 dari 59PSI input (tanpa label)Akurasi (butuh label)00.250.560%80%100%0204059
Hari
0
PSI hari ini
0.03
Alert PSI
belum ada
Alert akurasi
belum ada

Hari 0: PSI bertahan di sekitar 0,04 dan akurasi di sekitar 91%. Akurasi baru diketahui sampai hari 0, tertinggal 10 hari.

Pilih sebuah kejadian, atur Jeda label, lalu tekan Putar atau Langkah sepanjang 60 hari. Jeda label sungguhan sering jauh lebih lama: chargeback bisa butuh berminggu-minggu untuk memastikan penipuan, dan gagal bayar pinjaman bisa butuh berbulan-bulan. Sebelum label tiba, tim memantau proxy seperti drift pada input, tingkat prediksi positif, dan rata-rata confidence model. Model hasil retrain biasanya dijalankan dulu dalam shadow mode atau dibandingkan dengan model saat ini pada data terbaru sebelum menerima traffic, supaya perbaikan drift tidak membawa bug baru.

Apa itu data drift dalam machine learning?

Data drift adalah perubahan pada data yang diterima model di produksi dibandingkan dengan data training-nya. Model mempelajari pola dari satu sampel dunia. Ketika input, komposisi kelas, atau hubungan antara input dan label bergeser, prediksinya bisa memburuk tanpa ada error yang muncul. Model monitoring adalah praktik mengukur perubahan itu di produksi dan bertindak berdasarkan hasilnya.

Setiap model di produksi perlu dipantau. Model penipuan menghadapi penyerang yang mengganti taktik, peramalan permintaan bertemu musim dan produk baru, model kredit melihat kondisi ekonomi yang berbeda, dan pipeline hulu yang rusak bisa memberi model nilai dengan satuan yang salah dalam semalam. Tim memantau statistik input seperti KS test dan population stability index, mengamati distribusi prediksi, dan membandingkan akurasi setelah label tiba, lalu memutuskan apakah perlu retrain, kalibrasi ulang, atau roll back.

Ide utama

  • Data drift adalah perubahan apa pun antara distribusi training dan data yang dilihat model di produksi.
  • Covariate shift mengubah P(x), label shift mengubah P(y), dan concept drift mengubah P(y|x), yaitu aturannya sendiri.
  • Concept drift merusak model walaupun input tampak tidak berubah, jadi pemantauan input saja tidak bisa menangkapnya.
  • KS test mengukur selisih terbesar antara dua CDF empiris dan pada ukuran sampel besar menandai shift yang sangat kecil sekalipun.
  • PSI menjumlahkan (a − e)·ln(a/e) atas semua bin dan sama dengan KL divergence simetris antara kedua distribusi yang sudah di-bin.
  • Menguji banyak feature pada setiap pengecekan menghasilkan alarm palsu kecuali threshold-nya dikoreksi, misalnya dengan Bonferroni.

Ulasan singkat tentang topik ini

Pertanyaan umum

Seberapa sering model perlu di-retrain?

Tidak ada jadwal tetap yang cocok untuk semua model. Sebagian tim melakukan retrain menurut kalender, misalnya mingguan atau bulanan, dan sebagian lain melakukannya ketika pemantauan menunjukkan drift atau penurunan akurasi. Retrain menurut kalender itu sederhana tetapi bisa melewatkan perubahan mendadak, sedangkan retrain berbasis pemicu bergantung pada alert yang bisa dipercaya. Banyak sistem menggabungkan keduanya.

Sebaiknya pakai KS test, PSI, atau metrik drift lain?

KS test menghasilkan p-value dan tidak butuh bin, jadi cocok untuk feature kontinu, tetapi pada sampel besar ia menandai shift yang terlalu kecil untuk berdampak. PSI dan ukuran jarak lain seperti Wasserstein atau Jensen-Shannon memberikan effect size, yang lebih mudah diberi threshold. Uji chi-square menangani feature kategorikal. Banyak tim melaporkan satu uji dan satu ukuran jarak untuk setiap feature.

Apa itu training-serving skew?

Training-serving skew adalah perbedaan antara feature yang dihitung untuk training dan feature yang dihitung saat serving untuk contoh yang sama. Penyebabnya biasanya jalur kode yang terpisah, seperti batch job dan layanan online yang membulatkan, menggabungkan, atau mengisi nilai kosong dengan cara berbeda. Gejalanya mirip drift sejak hari pertama deployment, dan perbaikannya ada di pipeline, bukan di retrain.

Bagaimana cara mendeteksi drift pada gambar, teks, atau embedding?

Pixel dan token mentah berdimensi terlalu tinggi untuk uji per feature. Pendekatan yang umum adalah meringkas setiap input menjadi beberapa angka, seperti output softmax model itu sendiri atau proyeksi embedding berdimensi rendah, lalu menguji angka-angka itu. Rabanser dkk. menemukan bahwa uji pada output classifier yang sudah dilatih mendeteksi banyak jenis shift dengan baik. Domain classifier, yang dilatih untuk membedakan input training dari input live, adalah pilihan lain: kalau hasilnya lebih baik daripada menebak acak, distribusinya berbeda.

Penjelasan terkait

Referensi

  1. Rabanser, Günnemann & Lipton (2019), "Failing Loudly: An Empirical Study of Methods for Detecting Dataset Shift"
  2. Gama et al. (2014), "A Survey on Concept Drift Adaptation", ACM Computing Surveys
  3. Lipton, Wang & Smola (2018), "Detecting and Correcting for Label Shift with Black Box Predictors"

Terakhir diperbarui