Halaman ini memberikan beberapa konsep dasar yang perlu dipertimbangkan saat Anda mengumpulkan data untuk set data AutoML Tables. Ini tidak dimaksudkan sebagai perlakuan lengkap.
Pengantar
Set data yang dirancang dengan baik akan meningkatkan kualitas model machine learning yang dihasilkan. Anda dapat menggunakan pedoman di halaman ini untuk meningkatkan kualitas set data dan model.
Jika Anda berpengalaman dalam membuat data pelatihan untuk model machine learning, tinjau daftar tugas yang tidak perlu Anda khawatirkan. AutoML Tables melakukan banyak tugas persiapan data untuk Anda.
Praktik terbaik persiapan data
Menghindari kebocoran target
Kebocoran target terjadi saat data pelatihan Anda menyertakan informasi prediktif yang tidak tersedia saat Anda meminta prediksi. Kebocoran target dapat menyebabkan model Anda menampilkan metrik evaluasi yang sangat baik, tetapi berperforma buruk pada data sebenarnya.
Misalnya, Anda ingin mengetahui jumlah es krim yang akan dijual di toko Anda besok. Anda tidak dapat menyertakan suhu hari target dalam data pelatihan, karena Anda tidak akan mengetahui suhu tersebut (belum terjadi). Namun, Anda dapat menggunakan suhu yang diprediksi dari hari sebelumnya, yang dapat disertakan dalam permintaan prediksi.
Hindari diferensiasi performa pelatihan dan penayangan
Diferensiasi performa pelatihan dan penayangan terjadi saat Anda menghasilkan data pelatihan secara berbeda dari hasil data yang digunakan untuk meminta prediksi.
Misalnya, jika Anda menggunakan nilai rata-rata, dan untuk tujuan pelatihan, Anda menghitung rata-rata selama 10 hari. Namun, saat Anda meminta prediksi, nilai rata-ratanya selama sebulan terakhir.
Secara umum, setiap perbedaan antara cara Anda menghasilkan data pelatihan dan data inferensi (data yang Anda gunakan untuk menghasilkan prediksi) harus ditinjau untuk mencegah diferensiasi performa pelatihan dan penayangan.
Diferensiasi performa pelatihan dan penayangan dan distribusi data
Diferensiasi performa pelatihan dan penayangan juga dapat terjadi berdasarkan distribusi data dalam pemisahan data pelatihan, validasi, dan pengujian. Sering kali ada perbedaan antara distribusi data yang akan dilihat model saat di-deploy dalam produksi versus distribusi data dari set data tempat model dilatih. Misalnya, dalam produksi, suatu model dapat diterapkan pada populasi pengguna yang sama sekali berbeda dengan yang terlihat selama pelatihan, atau model tersebut dapat digunakan untuk membuat prediksi 30 hari setelah data pelatihan akhir dicatat.
Untuk hasil terbaik, pastikan distribusi pemisahan data yang digunakan untuk membuat model mencerminkan perbedaan antara set data pelatihan secara akurat, dan data yang akan dijadikan prediksi di lingkungan produksi. AutoML Tables dapat menghasilkan prediksi non-monotonik, dan jika data produksi diambil sampelnya dari distribusi yang sangat berbeda dengan data pelatihan, prediksi non-monotonik tidak terlalu dapat diandalkan.
Selain itu, perbedaan dalam data produksi versus data pelatihan harus tercermin dalam perbedaan antara pemisahan data validasi dan pemisahan data pelatihan, serta antara pemisahan data pengujian dan pemisahan data validasi.
Misalnya, jika Anda berencana membuat prediksi tentang nilai umur pengguna (LTV) selama 30 hari ke depan, pastikan data dalam pemisahan data validasi Anda berasal dari 30 hari setelah data dalam pelatihan dipisahkan, dan bahwa data dalam pemisahan data pengujian Anda berasal dari 30 hari setelah pemisahan data validasi.
Demikian pula, jika Anda ingin model Anda disesuaikan untuk membuat prediksi umum tentang pengguna baru, pastikan data dari pengguna tertentu hanya terdapat dalam satu bagian data pelatihan. Misalnya, semua baris yang berkaitan dengan
user1
berada dalam pemisahan data pelatihan, semua baris yang berkaitan dengan
user2
berada dalam pemisahan data validasi, dan semua baris yang berkaitan dengan
user3
berada dalam pemisahan data pengujian.
Berikan sinyal waktu
Jika pola yang mendasari dalam data Anda cenderung berubah seiring waktu (tidak didistribusikan secara acak dalam waktu), pastikan Anda memberikan informasi tersebut ke Tabel AutoML. Anda dapat memberikan sinyal waktu dengan beberapa cara:
Jika setiap baris data memiliki stempel waktu, pastikan kolom tersebut disertakan, memiliki jenis data
Timestamp
, dan ditetapkan sebagai kolom Time saat Anda membuat set data. Pengurutan ini digunakan untuk membagi data, dengan data terbaru sebagai data pengujian, dan data paling awal sebagai data pelatihan. Pelajari lebih lanjut.Jika kolom waktu Anda tidak memiliki banyak nilai yang berbeda, sebaiknya gunakan pemisahan manual, bukan menggunakan kolom Waktu untuk memisahkan data. Jika tidak, Anda mungkin tidak akan mendapatkan baris yang cukup di setiap set data, yang dapat menyebabkan pelatihan gagal.
Jika informasi waktu tidak dimuat dalam satu kolom, Anda dapat menggunakan pemisahan data manual untuk menggunakan data terbaru sebagai data pengujian, dan data paling awal sebagai data pelatihan.
Buat informasi yang eksplisit jika diperlukan
Biasanya, Anda tidak perlu melakukan rekayasa fitur saat membuat model menggunakan AutoML Tables. Namun, untuk primitif data tertentu, Anda dapat meningkatkan kualitas model dengan fitur engineering.
Misalnya, jika data Anda menyertakan garis bujur dan lintang, kolom ini akan diperlakukan sebagai numerik, tanpa penghitungan khusus. Jika lokasi atau jarak memberikan sinyal atas masalah, Anda harus merekayasa fitur yang memberikan informasi tersebut secara eksplisit.
Beberapa jenis data yang mungkin memerlukan rekayasa fitur:
- Bujur/Lintang
- URL
- Alamat IP
- Alamat email
- Nomor telepon
- Kode geografis lainnya (misalnya, kode pos)
Sertakan data yang dihitung atau digabung dalam baris
AutoML Tables hanya menggunakan data input dalam satu baris untuk memprediksi nilai target untuk baris tersebut. Jika Anda telah menghitung atau menggabungkan data dari baris atau sumber lain yang akan bernilai dalam menentukan prediksi nilai untuk suatu baris, sertakan data tersebut bersama baris sumber. Berhati-hatilah agar kolom baru Anda tidak menyebabkan kebocoran target atau kecondongan penyaluran pelatihan.
Misalnya, jika ingin memprediksi permintaan produk minggu depan, Anda dapat meningkatkan kualitas prediksi dengan menyertakan kolom dengan nilai berikut:
- Total jumlah item yang tersedia dari kategori yang sama dengan produk.
- Harga rata-rata item yang tersedia dari kategori yang sama dengan produk.
- Jumlah hari sebelum hari libur yang diketahui saat prediksi diminta.
- Dan seterusnya...
Dalam contoh lain, jika Anda ingin memprediksi apakah pengguna tertentu akan membeli suatu produk, Anda dapat meningkatkan kualitas prediksi dengan menyertakan kolom dengan nilai berikut:
- Rasio konversi historis rata-rata atau rasio klik-tayang untuk pengguna tertentu.
- Berapa banyak produk yang saat ini ada di keranjang belanja pengguna.
Merepresentasikan nilai null sebagai string kosong
Jika data Anda menggunakan karakter atau angka khusus untuk mewakili nilai null, hal ini dapat menimbulkan masalah untuk AutoML Tables, karena kita tidak tahu apa maksudnya. Jika Anda mengimpor dari CSV, gunakan string kosong untuk menampilkan nilai null. Dari BigQuery, gunakan nilai NULL.
Jika memungkinkan, hindari nilai yang tidak ada
Periksa data Anda untuk menemukan nilai yang hilang, dan perbaiki jika memungkinkan. Jika tidak, Anda dapat mengosongkan nilai, jika kolom ditetapkan ke nullable.
Menggunakan spasi untuk memisahkan teks
AutoML Tables membuat token string teks dan dapat memperoleh sinyal pelatihan dari setiap kata. Token ini menggunakan spasi untuk memisahkan kata-kata; kata yang dipisahkan oleh karakter lain diperlakukan sebagai entitas tunggal.
Misalnya, jika Anda memberikan teks "merah/hijau/biru", teks tersebut tidak akan ditokenkan menjadi "merah", "hijau", dan "biru". Jika ada kemungkinan tiap-tiap kata tersebut penting untuk melatih model, Anda harus mengubah teks menjadi "biru merah hijau" sebelum menyertakannya dalam data pelatihan.
Pastikan fitur kategoris Anda akurat dan bersih
Inkonsistensi data dapat menyebabkan kesalahan dalam pemisahan kategori. Misalnya, jika data Anda mencakup "Cokelat" dan "coklat", AutoML Tables menggunakan nilai tersebut sebagai kategori terpisah, jika Anda mungkin bermaksud sama. Salah ejaan dapat memiliki efek yang serupa. Pastikan Anda menghapus inkonsistensi semacam ini dari data kategorik sebelum membuat data pelatihan.
Gunakan kehati-hatian ekstra dengan kelas yang tidak seimbang
Jika Anda memiliki class yang tidak seimbang (masalah klasifikasi dengan satu atau beberapa hasil yang jarang terlihat), tinjau tips berikut.
Memberikan data pelatihan yang memadai untuk kelas minoritas
Memiliki hanya beberapa baris data untuk satu class akan menurunkan kualitas model. Jika memungkinkan, Anda harus menyediakan minimal 100 baris data untuk setiap class.
Pertimbangkan untuk menggunakan pemisahan manual
AutoML Tables memilih baris untuk set data pengujian secara acak (tetapi secara deterministik). Untuk class yang tidak seimbang, Anda mungkin memiliki sejumlah kecil kelas minoritas dalam set data pengujian, atau bahkan tidak ada, yang menyebabkan pelatihan gagal.
Jika memiliki class yang tidak seimbang, Anda mungkin ingin menetapkan pemisahan manual untuk memastikan cukup banyak baris dengan hasil minoritas disertakan dalam setiap pemisahan.
Hindari bias
Pastikan bahwa data pelatihan Anda mewakili seluruh data potensial yang akan Anda buat prediksinya. Misalnya, jika Anda memiliki pelanggan yang tinggal di seluruh dunia, Anda tidak boleh menggunakan data pelatihan hanya dari satu negara.
Memberikan data pelatihan yang cukup
Jika Anda tidak menyediakan data pelatihan yang cukup (baris), model yang dihasilkan mungkin berperforma buruk. Makin banyak fitur (kolom) yang Anda gunakan untuk melatih model, makin banyak data (baris) yang harus Anda sediakan. Tujuan yang baik untuk model klasifikasi adalah setidaknya 10 kali lebih banyak baris yang Anda miliki. Untuk model regresi, Anda harus menyediakan baris setidaknya 50 kali lebih banyak dari jumlah kolom.
Set data Anda harus selalu berisi minimal 1.000 baris.
Serahkan semua pra-pemrosesan dan transformasi lainnya ke AutoML Tables
Kecuali jika dinyatakan lain di atas, biarkan AutoML Tables melakukan rekayasa fitur untuk Anda. AutoML Tables berfungsi optimal jika memiliki akses ke data pokok Anda. Lihat Persiapan data yang dilakukan AutoML Tables untuk Anda.
Persiapan data yang dilakukan AutoML Tables untuk Anda
Bagian ini mencantumkan persyaratan umum untuk data pelatihan yang otomatis dilakukan oleh Tabel AutoML untuk Anda. Anda tidak perlu memasukkan penghitungan ini dalam data pelatihan. Bahkan, jika Anda melakukan sendiri transformasi ini dan menyertakannya dalam data pelatihan, Anda dapat menurunkan kualitas model yang dihasilkan.
Transformasi otomatis berikut diterapkan untuk setiap kolom fitur, bergantung pada jenis kolom:
Jenis kolom | Transformasi |
---|---|
Numerik |
|
Array numerik |
|
Kategoris |
|
Array kategoris |
|
Teks |
|
Array teks |
|
Stempel waktu |
|
Array stempel waktu |
|
Struct |
|
Nilai null atau tidak ada
Anda dapat memilih cara penanganan nilai null untuk data pelatihan dengan menetapkan kolom tersebut menjadi nullable atau tidak dalam skema set data. Untuk mengetahui informasi selengkapnya, lihat Membuat Set Data.
Jika nilai null muncul di kolom non-nullable, seluruh baris akan dikecualikan dari pelatihan.
Nilai null dalam kolom nullable direpresentasikan dengan variabel indikator khusus yang menunjukkan bahwa nilai tersebut null atau tidak ada. Untuk transformasi kategoris dan teks, indikator menghasilkan embedding.
AutoML Tables memperlakukan nilai berikut sebagai nilai null:
Nilai NULL BigQuery.
NaN atau nilai numerik tak terhingga.
String kosong. AutoML Tables tidak memangkas spasi dari string. Artinya, " " tidak dianggap sebagai nilai nol.
String yang dapat dikonversi menjadi NaN atau nilai numerik tak terhingga.
- Untuk "NAN": huruf besar/kecil diabaikan, tanda plus atau minus di awal bersifat opsional.
- Untuk "INF": huruf besar/kecil diabaikan, tanda plus atau minus di awal bersifat opsional.
Nilai yang tidak ada.
Langkah selanjutnya
- Apakah Data Saya Berperforma Baik? Checklist Pra-ML
- Menyiapkan dan menyeleksi data Anda untuk machine learning