Praktik terbaik untuk membuat data pelatihan

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
  • Nilai dikonversi menjadi float32.
  • Skor_z dari nilai.
  • Indeks bucket nilai didasarkan pada kuantil. Ukuran bucket adalah 100.
  • log(nilai+1) jika nilai lebih besar atau sama dengan 0. Jika tidak, transformasi ini tidak diterapkan dan nilai tersebut dianggap sebagai nilai yang tidak ada.
  • Skor_z dari log(nilai+1) jika nilai lebih besar atau sama dengan 0. Jika tidak, transformasi ini tidak diterapkan dan nilai tersebut dianggap sebagai nilai yang tidak ada.
  • Nilai boolean yang menunjukkan apakah nilai itu null atau bukan.
  • Baris dengan input numerik tidak valid (misalnya string yang tidak dapat diurai menjadi float32) tidak disertakan untuk pelatihan dan prediksi.
  • Nilai ekstrem/pencilan tidak diberi perlakuan khusus.
Array numerik
  • Semua transformasi untuk jenis Numerical diterapkan pada rata-rata N item terakhir, di mana N = {1, 2, 4, 8, all}. Jadi, item yang paling ditekankan adalah yang mendekati akhir array, bukan yang berada di awal array.
  • Rata-rata array kosong diperlakukan sebagai nol.
Kategoris
  • String kategoris apa adanya--tidak ada perubahan huruf besar/kecil, tanda baca, ejaan, tegang, dan sebagainya.
  • Konversikan nama kategori ke indeks pencarian kamus dan buat embedding untuk setiap indeks.
  • Kategori yang muncul kurang dari 5 kali dalam set data pelatihan diperlakukan sebagai kategori "tidak diketahui". Kategori "unknown" mendapatkan indeks pencarian khususnya sendiri dan embedding yang dihasilkan.
Array kategoris
  • Untuk setiap elemen dalam array N item terakhir, di mana N = {1, 2, 4, 8, all}, nama kategori dikonversi menjadi indeks pencarian kamus dan embedding dibuat untuk setiap indeks. Menggabungkan embedding dari semua elemen ke dalam satu embedding menggunakan nilai rata-rata.
  • Array kosong diperlakukan sebagai embedding dari nol.
Teks
  • Teks apa adanya--tidak ada perubahan huruf besar/kecil, tanda baca, ejaan, tegang, dan sebagainya.
  • Buat token teks menjadi kata dan hasilkan 1 gram dan 2 gram dari kata. Konversikan setiap n-gram ke indeks pencarian kamus dan buat embedding untuk setiap indeks. Gabungkan embeddings dari semua elemen ke dalam satu embedding menggunakan mean.

    Tokenisasi didasarkan pada batas skrip unicode.

  • Nilai yang tidak ada mendapatkan indeks pencarian dan hasil embedding khususnya sendiri.
  • Kata penghenti tidak menerima perlakuan khusus dan tidak dihapus.
Array teks
  • Menyambung semua nilai teks dalam array menjadi satu nilai teks menggunakan spasi (" ") sebagai pembatas, lalu memperlakukan hasilnya sebagai nilai teks tunggal. Menerapkan transformasi untuk kolom Text.
  • Array kosong diperlakukan sebagai embedding dari nol.
Stempel waktu
  • Menerapkan transformasi untuk kolom Numeric.
  • Menentukan tahun, bulan, hari, dan hari kerja. Perlakukan setiap nilai dari stempel waktu sebagai kolom Categorical.
  • Nilai numerik tidak valid (misalnya, nilai yang berada di luar rentang stempel waktu standar, atau merupakan nilai ekstrem) tidak menerima perlakuan khusus dan tidak akan dihapus.
  • Baris dengan input stempel waktu yang tidak valid (misalnya, string stempel waktu yang tidak valid) tidak disertakan untuk pelatihan dan prediksi.
Array stempel waktu
  • Menerapkan transformasi untuk kolom Numerik ke rata-rata N item terakhir dalam array. N = {1, 2, 4, 8, all}. Artinya, item yang paling ditekankan adalah item yang mendekati akhir array.
Struct
  • Nilai struct otomatis disatukan menjadi kolom. Kolom yang diratakan diperlakukan sesuai dengan jenis kolomnya.

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