Keuntungan:
- Kemampuan untuk menyiapkan pipeline data (pengumpulan, validasi, pembersihan, transformasi, pemisahan, pembuatan versi) dan menempatkan validasi skema di awal pipeline
- Kemampuan untuk membuat keputusan nilai dan pelabelan yang hilang berdasarkan makna dan pembagian lapangan untuk mencegah kebocoran data (kelompok dan temporal)
- Kemampuan untuk membuat basis data yang dapat direproduksi dengan memperbaiki versi data dan benih keacakan
Kekuatan sebenarnya dari setiap sistem pembelajaran mesin terletak pada datanya, bukan modelnya. Insinyur berpengalaman tahu: “sampah masuk, sampah keluar” — bahkan model paling canggih yang memasukkan data buruk pun akan memberikan hasil yang buruk. Di unit ini, kami membangun jalur data (pipa data: rangkaian langkah yang membuat data mentah siap untuk pelatihan model) secara menyeluruh dan mempelajari pada langkah mana dari jalur ini kami dapat menggunakan kecerdasan buatan dengan aman.
Langkah-langkah jalur data
Jalur data biasanya melewati perhentian berikut:
- Pengumpulan (penyerapan): Menarik data dari sumber (database, API, file log, aliran peristiwa).
- Validasi: Memeriksa apakah data sesuai dengan skema, jenis, dan rentang yang diharapkan.
- Pembersihan: Menangani nilai yang hilang, catatan duplikat, outlier, dan inkonsistensi.
- Transformasi: Mengubah data mentah menjadi atribut — seperti mengubah variabel kategori menjadi angka, menghasilkan "hari dalam seminggu" dari sebuah tanggal.
- Pemisahan: Memisahkan menjadi set pelatihan, validasi, dan pengujian.
- Pembuatan Versi: Mencatat model mana yang dilatih dengan data apa.
Kecerdasan buatan menghemat waktu dengan menghasilkan rancangan kode dan ide, terutama pada langkah 2, 3, dan 4. Namun keputusan seperti catatan mana yang harus dibuang, nilai hilang mana yang harus diisi, dan bagaimana caranya, berada di tangan insinyur yang mengetahui data tersebut; karena pembersihan yang tidak tepat dapat menimbulkan bias tersembunyi pada model.
Verifikasi data: pertahanan awal garis
Kesalahan yang paling mahal dimulai bukan pada produksi, tetapi ketika langkah verifikasi dilewati. Validasi skema secara otomatis memeriksa apakah setiap kumpulan data yang masuk sesuai dengan struktur yang diharapkan. Misalnya kolom umur apakah antara 0-120, apakah kolom email kosong, apakah jumlah kolomnya berubah?
Tip: Letakkan verifikasi di awal baris. Semakin cepat data yang rusak terdeteksi, semakin murah biaya perbaikannya. Kesalahan skema yang terjadi pada tahap produksi jauh lebih mahal dibandingkan kesalahan skema yang terjadi pada tahap pelatihan.
Tulis skema validasi dengan pandera (atau Great Expectations) untuk skema data berikut. Kolom dan aturan:- user_id: bilangan bulat, tidak boleh nol, unik- usia: bilangan bulat, tidak boleh dari 0-120- tanggal_pendaftaran: tanggal, tidak boleh di masa depan- negara: kategorikal, dari himpunan {TR, DE, US, UK}- saldo: desimal, tidak boleh negatif Menghasilkan pesan kesalahan yang berarti untuk setiap pelanggaran aturan. Tunjukkan pengujian dengan contoh garis putus-putus di akhir kode.
Membersihkan: manusialah yang memutuskan
Nilai yang hilang adalah kenyataan di setiap kumpulan data. Cara penanganannya:
- Penghapusan: Membuang baris/kolom yang tingkat kehilangannya sangat tinggi. Namun ada risiko kehilangan informasi dan bias.
- Imputasi: Imputasi dengan mean, median, nilai paling sering, atau prediksi berbasis model.
- Tandai: Menyimpan informasi “yang hilang” di kolom tanda yang terpisah — terkadang informasi yang hilang itu sendiri adalah sinyalnya.
Mana yang benar tergantung masalahnya. Dalam kumpulan data medis, informasi "nilai darah tidak diukur" harus disimpan daripada dihapus; Karena penolakan dokter untuk melakukan pengukuran pun merupakan sebuah sinyal. AI dapat memberi Anda opsi dan kode; Anda pilih mana yang sesuai dengan realitas lapangan.
Perintah lemah / Perintah kuat
Prompt lemah: "Isi nilai yang hilang."
Perintah yang kuat: "Ada nilai yang hilang di kolom berikut: pendapatan (12% hilang, distribusi miring ke kanan), last_login (30% hilang). Sarankan untuk mengisi pendapatan dengan median, tetapi jelaskan alasannya median dan bukan berarti. Untuk last_login, asumsikan nilai yang hilang mungkin signifikan (pengguna mungkin belum pernah masuk); pertimbangkan untuk membuat tanda never_logged_in alih-alih menghapus. Tuliskan bias yang akan ditambahkan oleh pendekatan mana pun ke dalam model."
Perbedaan: prompt kuat memberikan informasi distribusi dan makna area; kecerdasan buatan menghasilkan dukungan keputusan, bukan pengisian mekanis.
Pelabelan: kualitas diukur
Dalam pembelajaran yang diawasi (pembelajaran di mana contoh diberikan dengan jawaban yang benar), yang dipelajari model adalah label (label: jawaban yang benar untuk setiap contoh). Kualitas label menentukan batas tertinggi — jika orang memberi label secara tidak konsisten, model akan belajar secara tidak konsisten.
Perjanjian antar-annotator mengukur tingkat di mana orang yang berbeda memberikan label yang sama pada sampel yang sama; Hal ini dinyatakan dengan koefisien seperti Kappa Cohen. Kepatuhan yang rendah menunjukkan tugas yang diberikan tidak jelas atau instruksinya lemah.
Kecerdasan buatan membantu pelabelan dengan dua cara: (1) menyusun pedoman anotasi, (2) memberi label terlebih dahulu, dan meminta manusia untuk mengoreksinya. Namun pra-pelabelan dengan LLM memiliki kelemahan: kesalahan sistematik pada model dapat bocor ke seluruh rangkaian label. Itu sebabnya manusia selalu memeriksa beberapa label LLM.
Perhatian: Jangan menganggap label yang diproduksi oleh LLM sebagai "kebenaran dasar". Periksa sampel dengan manusia dan ukur kesesuaian LLM-manusia. Jika kepatuhannya rendah, pemberian label awal akan lebih banyak merugikan daripada menguntungkan.
Partisi data: mencegah kebocoran
Kesalahan paling berbahaya saat membagi data menjadi pelatihan/validasi/pengujian adalah kebocoran data: pencampuran informasi pengujian ke dalam pelatihan. Contoh:
- Catatan pengguna yang sama termasuk dalam pelatihan dan pengujian (kebocoran grup).
- Menggunakan masa depan dalam pelatihan dan masa lalu dalam pengujian dalam rangkaian waktu (kebocoran temporal).
- Menghitung parameter penskalaan (normalisasi) dari seluruh data kemudian membaginya.
Pemisahan temporal sangat penting untuk masalah yang melibatkan waktu: berlatih dengan masa lalu, menguji di masa depan. Pemisahan acak memberikan manfaat "masa depan" yang tidak akan pernah terjadi dalam produksi dan meningkatkan metrik.
Pembuatan versi dan reproduktifitas data
“Dengan data apa kami melatih model ini?” Mampu menjawab pertanyaan beberapa bulan kemudian adalah ciri khas rekayasa ML yang serius. Pembuatan versi data menyimpan setiap snapshot data dengan ID (hash atau tag versi). Alat seperti data versi DVC (Data Version Control) seperti kode.
Untuk mereproduksi hasil suatu model, tiga hal harus diperbaiki: versi data, versi kode, dan benih acak. Tidak mungkin mengatakan "Saya mendapat hasil yang sama" tanpa trio ini. Kami akan memperdalam Reproduksibilitas pada unit 11; tetapi memperbaiki benih dalam saluran data dimulai dari sini.
tiga kasus mini
Kasus 1 - Validasi skema hari disimpan. Ketika sebuah tim mengubah bidang harga sistem hulu dari sen menjadi lira, semua harga turun 100 kali lipat. Validasi skema menolak batch tersebut karena "harga di luar kisaran" dan model tidak dilatih dengan data yang rusak. Tanpa verifikasi, kesalahan hanya akan diketahui dalam produksi, dengan prediksi yang salah.
Kasus 2 - Bias pengisian yang salah. Dalam model kredit, nilai pendapatan yang hilang diisi dengan mean. Namun pendapatan yang hilang sebagian besar terjadi pada kelompok berpenghasilan rendah; rata-rata secara artifisial "memperkaya" kelompok ini, dan model tersebut menawarkan mereka batas yang terlalu tinggi. Memperbaiki masalah median + bendera hilang.
Kasus 3 - Kebocoran sementara. Model perkiraan permintaan tampak bagus pada set pengujian (akurasi 95%) tetapi gagal dalam produksi. Mengapa: karena pemisahan acak, model tersebut telah melihat masa depan. Beralih ke binning sementara menurunkan akurasi pengujian menjadi 78% — namun itu adalah performa nyata dan mempertahankannya dalam produksi.
Templat yang dapat disalin
Bagi kumpulan data berikut menjadi tiga kumpulan: pelatihan/validasi/pengujian. Kendala: Ini adalah rangkaian waktu; Gunakan pemisahan SEMENTARA (berlatih di masa lalu, menguji di masa depan). Cegah kebocoran batch: miliki `id_pelanggan` yang sama hanya dalam satu cluster. Hitung parameter penskalaan HANYA dari set pelatihan, lalu terapkan ke semua. Cetak berapa banyak baris yang tersisa dalam kode pada setiap langkah dan tambahkan pernyataan yang memeriksa tidak adanya kebocoran.
Tulis draf pedoman anotasi untuk tugas pelabelan ini. Tugas: [mis. Beri label ulasan pelanggan positif/negatif/netral]Klarifikasi kasus yang berada di ambang batas: sarkasme, emosi campur aduk, bagaimana cara memberi label ulasan yang tidak terkait dengan produk?Berikan 5 contoh dan 3 kasus rumit yang akan meningkatkan konsistensi di seluruh pemberi tag.
Buatlah daftar periksa reproduktifitas untuk saluran data ini:- Bagaimana seharusnya versi data diperbaiki?- Benih keacakan manakah yang harus ditetapkan di mana?- Metadata apa (hash data, jumlah baris, tanggal) yang harus dicatat? Basis kode saya: [bahasa/perpustakaan]
Periksa kode pembersihan ini untuk kebocoran data. Secara khusus lihat ini: apakah parameter penskalaan/pengkodean dihitung SEBELUM pemisahan? Apakah ada statistik yang dihitung dari semua data atau hanya pelatihan? Kode: [kode]
Tabel keputusan: strategi nilai yang hilang
Status
Pendekatan yang disarankan
Mengapa
Distribusi numerik dan miring
isi dengan median
Rata-rata dipengaruhi oleh outlier
Numerik, simetris
isi dengan rata-rata
Melindungi informasi
Kekurangannya mungkin signifikan
Kolom bendera + isian
Kekurangan adalah sebuah sinyal
Tingkat hilang > 60%
Kolom evaluasi/buang
Kebisingan terlalu banyak
Kategoris
Kategori "Tidak diketahui".
Tidak menciptakan mayoritas buatan
Kesalahan umum
- Melewatkan verifikasi. Tanpa kontrol skema, data yang rusak akan menyelinap masuk secara diam-diam.
- Penskalaan sebelum pemisahan. Ini membocorkan statistik uji ke dalam pendidikan.
- Menggunakan pemisahan acak dalam deret waktu. Ini menghasilkan metrik tinggi palsu.
- Mempercayai label LLM secara membabi buta. Kesalahan sistematis menyebar ke seluruh data.
- Tidak menyimpan versi data. Anda tidak dapat mereproduksi hasilnya.
- Pengisian mekanis dengan rata-rata. Ini mengabaikan makna lapangan, menambah bias.
Singkatnya
Pipeline data adalah fondasi sistem ML dan memerlukan lebih banyak upaya dibandingkan modelnya. Letakkan verifikasi di atas; membuat keputusan pembersihan dan pelabelan dengan pengetahuan domain; mencegah kebocoran (kelompok dan temporal) di kompartemen; memperbaiki versi data dan seed. AI menghasilkan kode dan ide pada baris ini, namun terserah Anda untuk memutuskan data mana yang akan diproses dan bagaimana caranya — karena setiap keputusan yang salah di sini akan masuk ke dalam model sebagai kelemahan tersembunyi.
Tugas aplikasi
Tulis skema validasi (pandera/Harapan Besar) pada kumpulan data Anda sendiri dan dengan sengaja menambahkan baris yang buruk dan tunjukkan bahwa baris tersebut tertangkap. Kemudian pisahkan data secara temporal atau batch, hitung parameter penskalaan hanya dari pelatihan, dan verifikasi tidak ada kebocoran dengan pernyataan. Tulis versi data dan jumlah baris ke file metadata.
daftar periksa
- [ ] Validasi skema berjalan di baris paling atas.
- [ ] Saya memilih strategi missing value berdasarkan makna lapangan, saya tidak mengisinya secara mekanis.
- [ ] Saya mengukur kualitas label (kepatuhan); Saya memeriksa tag LLM secara manual.
- [ ] Saya mencegah kebocoran grup dan temporal di panel.
- [ ] Penskalaan/pengkodean dihitung dari set pelatihan saja.
- [ ] Versi data, jumlah baris dan benih yang dicatat.