Jawaban singkat: Praproses AI adalah serangkaian langkah berulang yang mengubah data mentah dengan variabilitas tinggi menjadi input model yang konsisten, termasuk pembersihan, pengkodean, penskalaan, tokenisasi, dan transformasi gambar. Hal ini penting karena jika input pelatihan dan input produksi berbeda, model dapat gagal tanpa menimbulkan kesalahan. Jika suatu langkah "mempelajari" parameter, terapkan hanya pada data pelatihan untuk menghindari kebocoran data.
Praproses AI adalah semua yang Anda lakukan pada data mentah sebelum (dan terkadang selama) pelatihan atau inferensi sehingga model benar-benar dapat belajar darinya. Bukan hanya “pembersihan”. Ini adalah pembersihan, pembentukan, penskalaan, pengkodean, penambahan, dan pengemasan data ke dalam representasi yang konsisten yang tidak akan secara diam-diam mengganggu model Anda di kemudian hari. [1]
Poin-poin penting:
Definisi: Praproses mengubah tabel mentah, teks, gambar, dan log menjadi fitur yang siap digunakan dalam model.
Konsistensi: Terapkan transformasi yang sama selama pelatihan dan inferensi untuk mencegah kegagalan ketidaksesuaian.
Kebocoran: Sesuaikan scaler, encoder, dan tokeniser hanya pada data pelatihan.
Reproduksibilitas: Bangun pipeline dengan statistik yang dapat diperiksa, bukan urutan sel notebook ad-hoc.
Pemantauan produksi: Melacak penyimpangan dan pergeseran agar input tidak secara bertahap mengikis kinerja.
Artikel-artikel yang mungkin ingin Anda baca setelah ini:
🔗 Cara menguji model AI untuk kinerja di dunia nyata
Metode praktis untuk mengevaluasi akurasi, kekokohan, dan bias dengan cepat.
🔗 Apa itu text-to-speech (kecerdasan buatan) dan bagaimana cara kerjanya?
Menjelaskan dasar-dasar TTS, penggunaan utama, dan keterbatasan umum saat ini.
🔗 Bisakah AI membaca tulisan tangan kursif dengan akurat saat ini?
Membahas tantangan pengenalan, alat terbaik, dan kiat akurasi.
🔗 Seberapa akurat AI dalam tugas-tugas umum?
Menjelaskan faktor akurasi, tolok ukur, dan keandalan di dunia nyata.
Praproses AI dalam bahasa sederhana (dan apa yang bukan praproses AI) 🤝
Praproses AI adalah transformasi input mentah (tabel, teks, gambar, log) menjadi fitur yang siap digunakan model. Jika data mentah diibaratkan garasi yang berantakan, praproses adalah Anda memberi label pada kotak-kotak, membuang barang-barang yang rusak, dan menumpuk barang-barang sehingga Anda dapat berjalan melewatinya tanpa cedera.
Bukan modelnya itu sendiri yang penting. Tapi hal-hal yang memungkinkan model itu ada:
-
mengubah kategori menjadi angka (one-hot, ordinal, dll.) [1]
-
mengubah rentang angka besar menjadi rentang yang masuk akal (standarisasi, min-max, dll.) [1]
-
tokenisasi teks menjadi ID input (dan biasanya mask perhatian) [3]
-
mengubah ukuran/memotong gambar dan menerapkan transformasi deterministik vs acak dengan tepat [4]
-
membangun alur kerja yang dapat diulang sehingga input pelatihan dan “kehidupan nyata” tidak menyimpang secara halus [2]
Satu catatan praktis kecil: "pra-pemrosesan" mencakup apa pun yang terjadi secara konsisten sebelum model melihat input. Beberapa tim membagi ini menjadi "rekayasa fitur" versus "pembersihan data", tetapi dalam kehidupan nyata batasan tersebut menjadi kabur.

Mengapa pra-pemrosesan AI lebih penting daripada yang diakui orang 😬
Sebuah model adalah pencocok pola, bukan pembaca pikiran. Jika input Anda tidak konsisten, model akan mempelajari aturan yang tidak konsisten. Itu bukan filosofis, itu sangat harfiah.
Praproses membantu Anda:
-
Meningkatkan stabilitas pembelajaran dengan menempatkan fitur ke dalam representasi yang dapat digunakan oleh estimator secara andal (terutama ketika penskalaan/pengkodean terlibat). [1]
-
Kurangi kebisingan dengan membuat realitas yang berantakan terlihat seperti sesuatu yang dapat digeneralisasikan oleh model (alih-alih menghafal artefak aneh).
-
Mencegah mode kegagalan senyap seperti kebocoran dan ketidaksesuaian kereta/pelayanan (jenis yang terlihat “luar biasa” dalam validasi dan kemudian gagal total di produksi). [2]
-
Percepat iterasi karena transformasi yang berulang jauh lebih baik daripada kode yang berantakan di notebook setiap saat.
Selain itu, di sinilah sebenarnya banyak "kinerja model" berasal. Bahkan... sangat banyak. Terkadang terasa tidak adil, tapi itulah kenyataan 🙃
Apa yang membuat pipeline pra-pemrosesan AI yang baik ✅
“Versi praproses yang baik” biasanya memiliki kualitas-kualitas berikut:
-
Dapat direproduksi: input yang sama → output yang sama (tidak ada keacakan misterius kecuali jika itu adalah penambahan yang disengaja).
-
Konsistensi pelatihan dan penyajian: apa pun yang Anda lakukan pada waktu pelatihan diterapkan dengan cara yang sama pada waktu inferensi (parameter yang sama, peta kategori yang sama, konfigurasi tokenizer yang sama, dll.). [2]
-
Aman dari kebocoran: tidak ada dalam evaluasi/pengujian yang memengaruhi
penyesuaian. (Lebih lanjut tentang jebakan ini nanti.) [2] -
Teramati: Anda dapat memeriksa apa yang berubah (statistik fitur, data yang hilang, jumlah kategori) sehingga proses debugging tidak lagi berdasarkan intuisi semata.
Jika praproses Anda berupa tumpukan sel notebook bernama final_v7_really_final_ok… Anda pasti tahu bagaimana rasanya. Ia berfungsi sampai akhirnya tidak berfungsi lagi 😬
Blok bangunan inti dari pra-pemrosesan AI 🧱
Anggaplah pra-pemrosesan sebagai sekumpulan blok bangunan yang Anda gabungkan menjadi sebuah alur kerja.
1) Pembersihan dan validasi 🧼
Tugas-tugas umum:
-
hapus duplikat
-
menangani nilai yang hilang (menghapus, mengisi, atau menyatakan nilai yang hilang secara eksplisit)
-
menegakkan tipe, satuan, dan rentang
-
mendeteksi input yang salah format
-
menstandarkan format teks (spasi, aturan huruf besar/kecil, kekhasan Unicode)
Bagian ini memang tidak glamor, tetapi ini mencegah kesalahan-kesalahan yang sangat bodoh. Saya mengatakan itu dengan penuh kasih sayang.
2) Pengkodean data kategorikal 🔤
Sebagian besar model tidak dapat langsung menggunakan string mentah seperti "red" atau "premium_user".
Pendekatan umum:
-
Pengkodean satu panas (kategori → kolom biner) [1]
-
Pengkodean ordinal (kategori → ID bilangan bulat) [1]
Hal terpenting bukanlah mana yang Anda pilih, melainkan pemetaannya tetap konsisten dan tidak “berubah bentuk” antara pelatihan dan inferensi. Itulah mengapa Anda mendapatkan model yang terlihat baik secara offline dan berperilaku buruk secara online. [2]
3) Penskalaan dan normalisasi fitur 📏
Skala menjadi penting ketika fitur-fitur tersebut berada pada rentang yang sangat berbeda.
Dua karya klasik:
-
Standardisasi: menghilangkan rata-rata dan menskalakan ke varians unit [1]
-
Penskalaan min-max: menskalakan setiap fitur ke dalam rentang yang ditentukan [1]
Bahkan ketika Anda menggunakan model yang "cukup memadai," penskalaan sering kali membuat alur kerja lebih mudah dipahami—dan lebih sulit untuk rusak secara tidak sengaja.
4) Rekayasa fitur (alias kecurangan yang bermanfaat) 🧪
Di sinilah Anda mempermudah pekerjaan model dengan membuat sinyal yang lebih baik:
-
rasio (klik / tayangan)
-
jendela bergulir (N hari terakhir)
-
jumlah (kejadian per pengguna)
-
transformasi logaritma untuk distribusi berekor tebal
Ada seninya di sini. Terkadang Anda membuat sebuah fitur, merasa bangga… dan ternyata tidak menghasilkan apa-apa. Atau lebih buruk lagi, malah merugikan. Itu normal. Jangan terlalu terikat secara emosional pada fitur-fitur tersebut - fitur-fitur itu tidak akan membalas cinta Anda 😅
5) Memisahkan data dengan cara yang tepat ✂️
Ini terdengar jelas sampai akhirnya tidak lagi:
-
pembagian acak untuk data iid
-
pemisahan berdasarkan waktu untuk deret waktu
-
pemisahan berkelompok ketika entitas berulang (pengguna, perangkat, pasien)
Dan yang terpenting: pisahkan sebelum melakukan praproses yang belajar dari data. Jika langkah praproses Anda “mempelajari” parameter (seperti rata-rata, kosakata, peta kategori), maka parameter tersebut harus dipelajari hanya dari pelatihan. [2]
Praproses AI berdasarkan tipe data: tabel, teks, gambar 🎛️
Praproses berubah bentuk tergantung pada apa yang Anda masukkan ke dalam model.
Data tabular (lembar kerja, log, basis data) 📊
Langkah-langkah umum:
-
strategi nilai yang hilang
-
pengkodean kategorikal [1]
-
penskalaan kolom numerik [1]
-
penanganan outlier (aturan domain mengalahkan "pemotongan acak" hampir setiap saat)
-
fitur turunan (agregasi, lag, statistik bergulir)
Saran praktis: definisikan grup kolom secara eksplisit (numerik vs kategorikal vs pengidentifikasi). Diri Anda di masa depan akan berterima kasih.
Data teks (NLP) 📝
Praproses teks sering meliputi:
-
tokenisasi menjadi token/subkata
-
konversi ke ID input
-
penambahan/pemotongan
-
membangun masker perhatian untuk pengelompokan [3]
Aturan kecil yang menyelamatkan Anda dari kesulitan: untuk pengaturan berbasis transformer, ikuti pengaturan tokenizer yang diharapkan dari model dan jangan berkreasi tanpa aturan kecuali Anda punya alasan. Berkreasi tanpa aturan hanya akan menghasilkan hasil "modelnya bisa dilatih tetapi hasilnya aneh."
Gambar (penglihatan komputer) 🖼️
Praproses tipikal:
-
mengubah ukuran/memotong agar bentuknya konsisten
-
transformasi deterministik untuk evaluasi
-
transformasi acak untuk augmentasi pelatihan (misalnya, pemotongan acak) [4]
Satu detail yang terlewatkan oleh orang-orang: “transformasi acak” bukan hanya sekadar suasana hati—transformasi ini benar-benar mengambil sampel parameter setiap kali dipanggil. Bagus untuk keragaman pelatihan, buruk untuk evaluasi jika Anda lupa mematikan keacakan. [4]
Jebakan yang sering menjebak semua orang: kebocoran data 🕳️🐍
Kebocoran terjadi ketika informasi dari data evaluasi menyelinap ke dalam data pelatihan—seringkali melalui pra-pemrosesan. Hal ini dapat membuat model Anda tampak luar biasa selama validasi, tetapi kemudian mengecewakan Anda di dunia nyata.
Pola kebocoran umum:
-
penskalaan menggunakan statistik seluruh dataset (bukan hanya pelatihan) [2]
-
membangun peta kategori menggunakan pelatihan+pengujian bersama [2]
-
apa pun
fit()ataufit_transform()yang “melihat” set uji [2]
Aturan praktis (sederhana, brutal, efektif):
-
Segala sesuatu yang memiliki yang pas seharusnya hanya pas saat pelatihan.
-
Kemudian Anda melakukan transformasi validasi/pengujian menggunakan transformer yang telah disesuaikan. [2]
Dan jika Anda menginginkan pemeriksaan “seberapa buruknya?”: dokumentasi scikit-learn sendiri menunjukkan contoh kebocoran di mana urutan praproses yang salah menghasilkan akurasi sekitar 0,76 pada target acak—kemudian turun kembali menjadi ~0,5 setelah kebocoran diperbaiki. Begitulah meyakinkannya kesalahan yang terlihat akibat kebocoran. [2]
Membawa pra-pemrosesan ke produksi tanpa kekacauan 🏗️
Banyak model gagal dalam produksi bukan karena modelnya "buruk", tetapi karena realitas input berubah—atau alur kerja Anda berubah.
Praproses yang berorientasi pada produksi biasanya meliputi:
-
Artefak yang disimpan (pemetaan encoder, parameter scaler, konfigurasi tokenizer) sehingga inferensi menggunakan transformasi yang dipelajari persis sama [2]
-
Kontrak input yang ketat (kolom/tipe/rentang yang diharapkan)
-
Pemantauan terhadap kemiringan dan pergeseran, karena data produksi akan berubah-ubah [5]
Jika Anda menginginkan definisi konkret: Pemantauan Model AI Vertex Google membedakan antara penyimpangan pelatihan dan penyajian (distribusi produksi menyimpang dari pelatihan) dan pergeseran inferensi (distribusi produksi berubah seiring waktu), dan mendukung pemantauan baik untuk fitur kategorikal maupun numerik. [5]
Karena kejutan itu mahal. Dan bukan kejutan yang menyenangkan.
Tabel perbandingan: alat pra-pemrosesan + pemantauan umum (dan untuk siapa alat tersebut) 🧰
| Alat/perpustakaan | Terbaik untuk | Harga | Mengapa ini berhasil (dan sedikit kejujuran) |
|---|---|---|---|
| praproses scikit-learn | Pipeline ML tabular | Bebas | Encoder dan scaler yang solid (OneHotEncoder, StandardScaler, dll.) dan perilaku yang dapat diprediksi [1] |
| Tokenisasi Wajah Berpelukan | persiapan input NLP | Bebas | Menghasilkan ID input + mask perhatian secara konsisten di seluruh run/model [3] |
| torchvision mengubah | Transformasi visi + peningkatan | Bebas | Cara bersih untuk mencampur transformasi deterministik dan acak dalam satu pipeline [4] |
| Pemantauan Model AI Vertex | Deteksi penyimpangan/kemiringan pada produksi | Berbayar (cloud) | Monitor memiliki fitur kemiringan/penyimpangan dan peringatan ketika ambang batas terlampaui [5] |
(Ya, tabel ini masih memuat opini. Tapi setidaknya opininya jujur 😅)
Daftar periksa pra-pemrosesan praktis yang benar-benar dapat Anda gunakan 📌
Sebelum pelatihan
-
Tetapkan skema input (tipe, satuan, rentang yang diizinkan)
-
Audit nilai yang hilang dan duplikat
-
Pisahkan data dengan cara yang tepat (acak / berdasarkan waktu / dikelompokkan)
-
Lakukan praproses pada pelatihan saja (
fit/fit_transformtetap pada pelatihan) [2] -
Simpan artefak praproses agar inferensi dapat menggunakannya kembali [2]
Selama pelatihan
-
Terapkan augmentasi acak hanya jika sesuai (biasanya hanya pembagian pelatihan) [4]
-
Pertahankan praproses evaluasi deterministik [4]
-
Lacak perubahan pra-pemrosesan seperti perubahan model (karena memang demikian adanya)
Sebelum penempatan
-
Pastikan inferensi menggunakan jalur praproses dan artefak yang identik [2]
-
Siapkan pemantauan pergeseran/kemiringan (bahkan pemeriksaan distribusi fitur dasar pun sangat membantu) [5]
Analisis mendalam: kesalahan umum dalam pra-pemrosesan (dan cara menghindarinya) 🧯
Kesalahan 1: “Saya akan menormalkan semuanya dengan cepat saja” 😵
Jika Anda menghitung parameter penskalaan pada seluruh dataset, Anda membocorkan informasi evaluasi. Lakukan fitting pada data pelatihan, transformasikan sisanya. [2]
Kesalahan 2: kategori yang berantakan 🧩
Jika pemetaan kategori Anda bergeser antara pelatihan dan inferensi, model Anda dapat secara diam-diam salah membaca dunia. Pertahankan pemetaan tetap melalui artefak yang tersimpan. [2]
Kesalahan 3: penambahan acak yang menyelinap ke dalam evaluasi 🎲
Transformasi acak sangat bagus dalam pelatihan, tetapi tidak boleh “diam-diam diaktifkan” ketika Anda mencoba mengukur kinerja. (Acak berarti acak.) [4]
Kesimpulan Akhir 🧠✨
Praproses AI adalah seni yang terstruktur untuk mengubah realitas yang berantakan menjadi input model yang konsisten. Ini mencakup pembersihan, pengkodean, penskalaan, tokenisasi, transformasi gambar, dan—yang terpenting—alur kerja dan artefak yang dapat diulang.
-
Lakukan praproses dengan sengaja, bukan secara sembarangan. [2]
-
Pisahkan terlebih dahulu, terapkan transformasi hanya pada pelatihan, hindari kebocoran. [2]
-
Gunakan praproses yang sesuai dengan modalitas (tokenisasi untuk teks, transformasi untuk gambar). [3][4]
-
Pantau penyimpangan/pergeseran produksi agar model Anda tidak perlahan-lahan melenceng ke arah yang tidak masuk akal. [5]
Dan jika Anda menemui kesulitan, tanyakan pada diri sendiri:
“Apakah langkah pra-pemrosesan ini masih masuk akal jika saya menjalankannya besok pada data yang benar-benar baru?”
Jika jawabannya “uhh… mungkin?”, itu petunjuknya 😬
Contoh nyata: Membangun pipeline pra-pemrosesan yang aman dari kebocoran data untuk prediksi pelanggan yang berhenti berlangganan
Skenario
Bayangkan sebuah tim SaaS kecil yang mencoba memprediksi pelanggan mana yang kemungkinan akan membatalkan langganan dalam 30 hari ke depan. Data mentah mereka tersimpan di tiga tempat: ekspor tagihan, log penggunaan produk, dan tiket dukungan.
Versi pertama model terlihat sangat baik dalam validasi, tetapi berkinerja buruk saat diuji pada data pelanggan selama satu bulan baru. Masalahnya bukan pada arsitektur model, melainkan pada pra-pemrosesan.
Tim tersebut secara tidak sengaja menskalakan fitur numerik menggunakan dataset lengkap, membangun pemetaan kategori dari data pelatihan dan pengujian bersama-sama, dan menyertakan tag tiket dukungan yang ditambahkan hanya setelah pembatalan. Kebocoran klasik. Menyakitkan, tetapi dapat diperbaiki. [2]
Apa yang dibutuhkan oleh saluran pipa tersebut
Pengaturan praktisnya akan mencakup:
-
Skema input tetap: customer_id, plan_type, account_age_days, logins_30d, tickets_30d, last_payment_status, region
-
Pembagian berdasarkan waktu, seperti pelatihan pada bulan Januari–September dan pengujian pada bulan Oktober
-
Penskalaan numerik hanya diterapkan pada pembagian data pelatihan
-
Encoder kategorikal hanya dipasang pada pembagian data pelatihan
-
Pipeline pra-pemrosesan yang tersimpan sehingga produksi menggunakan pemetaan dan nilai skala yang sama
-
Pemantauan dasar untuk kolom yang hilang, kategori yang tidak terlihat, dan perubahan distribusi setelah penerapan
Aturan intinya sederhana: pisahkan terlebih dahulu, kemudian lakukan pra-pemrosesan. Apa pun yang belajar dari data seharusnya hanya belajar dari periode pelatihan. [2]
Contoh instruksi
Gunakan ini sebagai panduan kerja untuk langkah pra-pemrosesan:
Bangun pipeline pra-pemrosesan untuk model prediksi churn menggunakan data penagihan pelanggan, penggunaan, dan dukungan. Pisahkan data berdasarkan waktu sebelum menerapkan transformer apa pun. Terapkan scaler numerik dan encoder kategorikal hanya pada data pelatihan, kemudian terapkan transformasi yang telah diterapkan tersebut ke data validasi dan pengujian. Simpan semua artefak pra-pemrosesan sehingga model produksi menggunakan skema, pemetaan kategori, dan parameter penskalaan yang sama. Tandai kolom yang hilang, tipe data yang tidak terduga, kategori yang tidak terlihat, dan pergeseran distribusi utama sebelum prediksi.
Bagaimana cara mengujinya?
Sebelum mempercayai model tersebut, uji alur pra-pemrosesan dengan beberapa data yang sengaja dibuat sulit:
-
Pelanggan dengan tipe paket yang tidak tercantum dalam pelatihan
-
Baris dengan wilayah atau status pembayaran terakhir yang hilang
-
Pelanggan dengan penggunaan yang luar biasa tinggi, seperti 10.000 kali login dalam 30 hari
-
Berkas bergaya produksi dengan kolom yang urutannya salah
-
Satu set data uji untuk bulan mendatang yang tidak pernah digunakan selama proses pemasangan
Kemudian periksa tiga hal:
-
Apakah pipeline berjalan tanpa mengubah urutan fitur?
-
Apakah kategori yang tidak dikenal ditangani secara konsisten?
-
Apakah kinerja validasi menurun ke tingkat yang lebih dapat dipercaya setelah kebocoran dihilangkan?
Poin terakhir itu penting. Skor validasi yang mencurigakan tinggi seringkali merupakan indikasi kesalahan pra-pemrosesan, bukan keajaiban.
Hasil
Hasil ilustratif, berdasarkan pengukuran waktu lima kali proses pra-pemrosesan sebelum dan sesudah mengkonversi langkah-langkah notebook ke dalam pipeline yang tersimpan:
-
Waktu pra-pemrosesan manual turun dari 55 menit per pembaruan dataset menjadi 8 menit.
-
Kesalahan urutan fitur menurun dari 3 kesalahan dalam 5 kali penyegaran pengujian menjadi 0 kesalahan dalam 5 kali penyegaran.
-
Akurasi validasi turun dari 91% menjadi 74% setelah kebocoran dihilangkan, tetapi akurasi pengujian bulan baru meningkat dari 62% menjadi 71%.
-
Tim tersebut menambahkan 6 pemeriksaan otomatis: kolom yang hilang, tipe yang tidak valid, kategori yang belum pernah dilihat, perubahan tingkat null, perubahan rentang numerik, dan ketidaksesuaian skema penyajian pelatihan.
Angka-angka ini bukanlah tolok ukur universal. Ini adalah jenis pengukuran sederhana sebelum dan sesudah yang dapat direproduksi oleh tim dengan mengatur waktu pembaruan, menghitung kegagalan pengujian, dan membandingkan hasil validasi dengan bulan mendatang yang belum ditentukan.
Apa yang bisa salah?
Risiko terbesar adalah membuat alur kerja terlihat bersih sementara secara diam-diam tetap ada kebocoran informasi. Misalnya, "jumlah hari sejak email peringatan pembatalan terakhir" mungkin tampak berharga, tetapi jika email tersebut hanya dikirim setelah tinjauan internal terhadap pelanggan yang berhenti berlangganan, hal itu dapat membocorkan informasi di masa mendatang.
Jebakan umum lainnya:
-
Memasang ulang encoder dalam produksi alih-alih memuat pemetaan yang tersimpan
-
Membiarkan kategori baru secara diam-diam menggeser posisi fitur
-
Pengujian pada pembagian acak ketika tugas sebenarnya berbasis waktu
-
Menghapus baris dengan nilai yang hilang dalam pelatihan tetapi tidak menanganinya pada saat inferensi
-
Memantau akurasi model sambil mengabaikan pergeseran input
Kesimpulan praktis
Pipeline pra-pemrosesan yang baik tidak hanya merapikan data mentah. Ia melindungi model dari evaluasi yang buruk, input produksi yang rusak, dan pergeseran diam-diam yang lambat. Untuk model churn, perbedaan antara pra-pemrosesan yang cerdas dan pra-pemrosesan yang andal seringkali bergantung pada apakah transformasi yang sama digunakan kembali setiap kali, terutama ketika data berasal dari bulan yang belum pernah dilihat model sebelumnya.
Pertanyaan yang Sering Diajukan (FAQ)
Secara sederhana, apa itu pra-pemrosesan AI?
Praproses AI adalah serangkaian langkah berulang yang mengubah data mentah yang bising dan memiliki varians tinggi menjadi input yang konsisten yang dapat dipelajari oleh model. Ini dapat mencakup pembersihan, validasi, pengkodean kategori, penskalaan nilai numerik, tokenisasi teks, dan penerapan transformasi gambar. Tujuannya adalah untuk memastikan pelatihan dan inferensi produksi melihat input yang "sama jenisnya", sehingga model tidak menyimpang ke perilaku yang tidak dapat diprediksi di kemudian hari.
Mengapa pra-pemrosesan AI sangat penting dalam produksi?
Praproses sangat penting karena model sensitif terhadap representasi input. Jika data pelatihan diskalakan, dienkode, ditokenisasi, atau ditransformasikan secara berbeda dari data produksi, Anda dapat mengalami kegagalan ketidaksesuaian antara data pelatihan dan data yang disajikan, yang tampak baik secara offline tetapi gagal secara diam-diam saat online. Pipeline praproses yang kuat juga mengurangi noise, meningkatkan stabilitas pembelajaran, dan mempercepat iterasi karena Anda tidak perlu lagi mengurai kekacauan kode dalam notebook.
Bagaimana cara menghindari kebocoran data saat melakukan pra-pemrosesan?
Aturan sederhana berlaku: apa pun yang memiliki penyesuaian (fit step) harus disesuaikan hanya pada data pelatihan. Itu termasuk scaler, encoder, dan tokeniser yang mempelajari parameter seperti rata-rata, peta kategori, atau kosakata. Anda membagi data terlebih dahulu, menyesuaikannya pada data pelatihan, lalu mentransformasi data validasi/pengujian menggunakan transformer yang telah disesuaikan. Kebocoran data dapat membuat validasi terlihat "ajaib" bagus dan kemudian gagal dalam penggunaan produksi.
Apa saja langkah-langkah pra-pemrosesan yang paling umum untuk data tabular?
Untuk data tabular, alur kerja standar mencakup pembersihan dan validasi (tipe, rentang, nilai yang hilang), pengkodean kategorikal (one-hot atau ordinal), dan penskalaan numerik (standardisasi atau min-max). Banyak alur kerja menambahkan rekayasa fitur berbasis domain seperti rasio, jendela bergulir, atau penghitungan. Kebiasaan praktisnya adalah mendefinisikan grup kolom secara eksplisit (numerik vs kategorikal vs pengidentifikasi) agar transformasi Anda tetap konsisten.
Bagaimana cara kerja pra-pemrosesan untuk model teks?
Praproses teks biasanya berarti tokenisasi menjadi token/subkata, mengubahnya menjadi ID input, dan menangani padding/pemotongan untuk pengelompokan. Banyak alur kerja transformer juga membuat mask perhatian bersamaan dengan ID. Pendekatan umum adalah menggunakan konfigurasi tokenizer yang diharapkan dari model daripada berimprovisasi, karena perbedaan kecil dalam pengaturan tokenizer dapat menyebabkan hasil "model berhasil dilatih tetapi berperilaku tidak terduga".
Apa yang berbeda dari pra-pemrosesan gambar untuk pembelajaran mesin?
Praproses gambar biasanya memastikan bentuk dan penanganan piksel yang konsisten: pengubahan ukuran/pemotongan, normalisasi, dan pemisahan yang jelas antara transformasi deterministik dan acak. Untuk evaluasi, transformasi harus deterministik agar metrik dapat dibandingkan. Untuk pelatihan, augmentasi acak (seperti pemotongan acak) dapat meningkatkan ketahanan, tetapi keacakan harus sengaja dibatasi pada bagian pelatihan, bukan dibiarkan secara tidak sengaja selama evaluasi.
Apa yang membuat alur kerja pra-pemrosesan menjadi "baik" dan bukan rapuh?
Pipeline pra-pemrosesan AI yang baik bersifat dapat direproduksi, aman dari kebocoran data, dan dapat diamati. Dapat direproduksi berarti input yang sama menghasilkan output yang sama kecuali jika keacakan merupakan penambahan yang disengaja. Aman dari kebocoran data berarti langkah-langkah penyesuaian tidak pernah menyentuh validasi/pengujian. Dapat diamati berarti Anda dapat memeriksa statistik seperti data yang hilang, jumlah kategori, dan distribusi fitur sehingga proses debugging didasarkan pada bukti, bukan intuisi. Pipeline selalu lebih baik daripada rangkaian notebook ad-hoc.
Bagaimana cara menjaga konsistensi antara pra-pemrosesan pelatihan dan inferensi?
Kuncinya adalah menggunakan kembali artefak yang telah dipelajari secara persis pada saat inferensi: parameter scaler, pemetaan encoder, dan konfigurasi tokenizer. Anda juga memerlukan kontrak input (kolom, tipe, dan rentang yang diharapkan) agar data produksi tidak secara diam-diam berubah menjadi bentuk yang tidak valid. Konsistensi bukan hanya "lakukan langkah-langkah yang sama" - tetapi "lakukan langkah-langkah yang sama dengan parameter dan pemetaan yang telah disesuaikan yang sama."
Bagaimana cara saya memantau masalah pra-pemrosesan seperti pergeseran dan kemiringan dari waktu ke waktu?
Meskipun dengan alur kerja yang solid, data produksi tetap berubah. Pendekatan umum adalah memantau perubahan distribusi fitur dan memberikan peringatan jika terjadi penyimpangan antara data pelatihan dan data yang disajikan (produksi menyimpang dari data pelatihan) dan pergeseran inferensi (produksi berubah seiring waktu). Pemantauan dapat dilakukan secara ringan (pemeriksaan distribusi dasar) atau terkelola (seperti Vertex AI Model Monitoring). Tujuannya adalah untuk mendeteksi pergeseran input sejak dini - sebelum pergeseran tersebut secara perlahan mengikis kinerja model.
Referensi
[1] API scikit-learn: sklearn.preprocessing (encoder, scaler, normalisasi)
[2] scikit-learn: Kesalahan umum - Kebocoran data dan cara menghindarinya
[3] Dokumentasi Hugging Face Transformers: Tokenizer (ID input, mask perhatian)
[4] Dokumentasi PyTorch Torchvision: Transformasi (Ubah Ukuran/Normalisasi + transformasi acak)
[5] Dokumentasi Google Cloud Vertex AI: Gambaran umum Pemantauan Model (kemiringan & pergeseran fitur)