Topik-topik berikut yang akan dibahas:
- Praktik terbaik untuk semua model data tabulasi
- Praktik terbaik untuk model AutoML tabulasi
- Praktik terbaik untuk model perkiraan tabulasi
- Praktik terbaik untuk format data
Praktik terbaik untuk semua model data tabulasi
Praktik terbaik berikut berlaku, baik Anda membuat model AutoML maupun model yang dilatih khusus yang menggunakan data tabulasi.
Menghindari kebocoran data
Kebocoran data terjadi ketika data pelatihan Anda menyertakan informasi prediktif yang tidak tersedia saat Anda meminta prediksi. Kebocoran data 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.
Kebocoran data juga dapat terjadi jika Anda menggunakan data yang sama dalam beberapa pemisahan data. Jika Anda menggunakan data deret waktu, pastikan data dari tanggal yang sama hanya digunakan pada salah satu dari tiga pemisahan data.
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 data pelatihan secara akurat, dan data yang akan Anda buat prediksinya di lingkungan produksi. Vertex AI dapat menghasilkan prediksi non-monoton, dan jika data produksi diambil dari distribusi yang sangat berbeda dengan data pelatihan, prediksi non-monoton 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
Untuk model klasifikasi dan regresi, jika pola dasar dalam data Anda cenderung berubah seiring waktu (tidak didistribusikan secara acak dalam waktu yang ditentukan), pastikan Anda memberikan informasi tersebut ke Vertex AI. Anda dapat memberikan sinyal waktu dengan beberapa cara:
Jika setiap baris data memiliki stempel waktu, pastikan kolom tersebut disertakan, memiliki jenis transformasi
Timestamp
, dan ditetapkan sebagai kolom Time saat Anda melatih model. Pengurutan baris data ini digunakan untuk memisahkan 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
Untuk beberapa primitif data, Anda dapat meningkatkan kualitas model dengan merekayasa fitur.
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
Vertex AI 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 karena kolom baru Anda berpotensi menyebabkan kebocoran data atau diferensiasi performa pelatihan dan penayangan.
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.
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.
Praktik terbaik untuk model AutoML tabulasi
Praktik terbaik berikut adalah untuk membuat data pelatihan tabulasi untuk model tabulasi AutoML.
Merepresentasikan nilai null dengan tepat
Jika Anda mengimpor dari CSV, gunakan string kosong untuk menampilkan nilai null. Dari BigQuery, gunakan nilai NULL.
Jika data Anda menggunakan karakter atau angka khusus untuk mewakili nilai null, termasuk nol, nilai ini akan disalahartikan sehingga mengurangi kualitas model.
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 ini, dan nilai tersebut akan diperlakukan sebagai null value.
Menggunakan spasi untuk memisahkan teks
Vertex AI 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 menyertakan warna "Cokelat" dan "cokelat", Vertex AI akan menggunakan nilai tersebut sebagai kategori terpisah, padahal Anda mungkin mengharapkannya dalam kategori yang sama. Salah ejaan dapat memiliki efek yang serupa. Pastikan Anda menghapus inkonsistensi semacam ini dari data kategorik sebelum membuat data pelatihan.
Ekstra hati-hati dengan class yang tidak seimbang untuk model klasifikasi
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 terlalu sedikit 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
Vertex AI 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 Anda memiliki class yang tidak seimbang, sebaiknya tetapkan pemisahan manual untuk memastikan baris yang cukup dengan hasil minoritas disertakan dalam setiap pemisahan.
Memberikan data pelatihan yang cukup
Jika Anda tidak memberikan data pelatihan yang cukup, model yang dihasilkan mungkin berperforma buruk. Semakin banyak kolom yang digunakan untuk melatih model, semakin banyak data yang perlu Anda berikan.
Set data Anda harus selalu berisi minimal 1.000 baris.
Tabel berikut memberikan beberapa heuristik untuk mengetahui berapa banyak data pelatihan yang akan diberikan, bergantung pada objektif Anda.
Objektif | Jumlah minimum data pelatihan yang disarankan |
---|---|
Klasifikasi | Baris berjumlah minimal 10 kali lebih banyak dari jumlah kolom yang Anda miliki. |
Perkiraan | Minimal 10 deret waktu untuk setiap kolom yang digunakan untuk melatih model. |
Regresi | Minimal 50 kali lebih banyak baris dari jumlah kolom. |
Serahkan semua pra-pemrosesan dan transformasi lainnya ke Vertex AI
Kecuali jika disebutkan selain yang dituliskan di atas, izinkan Vertex AI melakukan rekayasa fitur untuk Anda saat Anda melatih model AutoML. AutoML berfungsi optimal jika memiliki akses ke data pokok Anda. Untuk mengetahui daftar semua transformasi yang dilakukan AutoML berdasarkan jenis transformasi, lihat Transformasi Vertex AI.
Praktik terbaik untuk model perkiraan tabulasi
Data pelatihan untuk model perkiraan memiliki beberapa pertimbangan khusus.
Pertimbangan untuk memilih perincian data
Saat melatih model perkiraan, Anda menentukan perincian data, atau interval waktu antar-baris data pelatihan. Perincian tersebut bisa per jam, harian, mingguan, bulanan, atau tahunan. Selain itu, waktunya bisa setiap 1, 5, 10, 15, atau 30 menit.
Perincian data harus konsisten di seluruh data pelatihan, dan di semua data prediksi batch. Jika Anda menentukan perincian harian, dan ada 2 hari di antara dua baris data pelatihan, Vertex AI akan memperlakukan hari sementara sebagai data yang tidak ada, yang dapat menurunkan performa model. Beberapa baris dalam deret waktu yang sama dengan stempel waktu yang sama (seperti yang ditentukan berdasarkan perincian) dianggap sebagai error validasi pada waktu pelatihan.
Umumnya, praktik pengumpulan data menentukan perincian data.
Cara menemukan nilai yang baik untuk jendela konteks
Jika Anda berharap memiliki banyak data prediksi yang tidak meluas hingga ke masa lalu (cold start), mulailah dengan menetapkan jendela konteks ke 0. Jika tidak, jendela konteks antara ukuran horizon perkiraan dan 10 kali ukuran horizontal perkiraan akan berfungsi dengan baik.
Anda dapat mencoba langkah berikut untuk menemukan nilai yang tepat bagi data Anda:
Untuk iterasi pelatihan pertama, tetapkan jendela konteks dan horizon perkiraan ke nilai yang sama, lalu tetapkan anggaran pelatihan ke minimal 6 jam.
Latih lagi model dengan anggaran pelatihan yang sama, tetapi gandakan ukuran jendela konteks menjadi 2 kali ukuran horizon perkiraan.
Jika metrik evaluasi untuk model kedua menunjukkan peningkatan substansial, latih model lagi, dengan meningkatkan jendela konteks menjadi 5 kali ukuran horizon perkiraan. Pertimbangkan untuk membuat peningkatan yang proporsional pada anggaran pelatihan (jika Anda melatih selama 10 jam pada langkah pertama, tingkatkan anggaran pelatihan menjadi 50 jam).
Terus tingkatkan jendela konteks sampai Anda tidak lagi melihat metrik evaluasi yang ditingkatkan atau sampai Anda merasa puas dengan hasilnya. Kembalikan ke nilai terendah jendela konteks yang memberikan hasil yang dapat diterima.
Meningkatkan jendela konteks memiliki efek berikut:
Meningkatkan waktu pelatihan
Dengan jendela konteks yang lebih besar, model akan menggunakan lebih banyak titik data dalam pelatihan, sehingga waktu pelatihan meningkat.
Meningkatkan jumlah histori yang diperlukan untuk data prediksi
Data prediksi Anda harus memberikan titik data historis sebanyak nilai jendela konteks.
Praktik terbaik untuk format data
Anda dapat membuat data pelatihan dalam format lebar atau sempit. Untuk model regresi dan klasifikasi, format lebar banyak digunakan dan lebih mudah disusun serta ditinjau. Untuk memperkirakan model yang menggunakan format sempit, Anda dapat menghindari penyiapan koneksi yang tidak disengaja antara data dan target Anda (kebocoran data).
Saat Anda membuat data pelatihan untuk melatih model perkiraan, setiap baris harus mewakili satu pengamatan pada satu deret waktu. Anda harus memiliki kolom yang menampilkan ID deret waktu (cara deret waktu dibedakan satu sama lain), dan kolom yang mewakili nilai yang akan diprediksi (target Anda). Kemudian, setiap nilai lain dalam baris yang digunakan untuk melatih model harus ada pada saat Anda meminta prediksi untuk target.
Perhatikan contoh data pelatihan (yang disederhanakan dan disingkat) berikut:
Tanggal | Widget_1_Demand | Widget_2_Demand | Widget_3_Demand | Promo | Region |
---|---|---|---|---|---|
01/01/2019 | 112 | 241 | 0 | 0 | CA |
01/02/2019 | 141 | 219 | 0 | 1 | CA |
01/03/2019 | 149 | 244 | 0 | 0 | CA |
01/01/2019 | 52 | 0 | 43 | 0 | IL |
01/02/2019 | 81 | 0 | 26 | 1 | IL |
01/03/2019 | 89 | 0 | 86 | 0 | IL |
Tabel dalam format lebar ini menampilkan data bisnis berdasarkan tanggal, tetapi tidak akan dapat digunakan untuk model perkiraan dalam bentuknya saat ini. Tidak ada kolom target tunggal, tidak ada kolom ID deret waktu, dan untuk tanggal tertentu, Anda tidak akan mengetahui permintaan untuk widget lain pada saat prediksi.
Anda dapat mengonversi tabel ini ke dalam format ini:
Tanggal | Produk | Region_CA_Demand | Region_IL_Demand | Promo |
---|---|---|---|---|
01/01/2019 | Widget_1 | 112 | 52 | 0 |
01/02/2019 | Widget_1 | 141 | 81 | 1 |
01/03/2019 | Widget_1 | 149 | 89 | 0 |
01/01/2019 | Widget_2 | 241 | 0 | 0 |
01/02/2019 | Widget_2 | 219 | 0 | 1 |
01/03/2019 | Widget_2 | 244 | 0 | 0 |
01/01/2019 | Widget_3 | 0 | 43 | 0 |
01/02/2019 | Widget_3 | 0 | 26 | 1 |
01/03/2019 | Widget_3 | 0 | 86 | 0 |
Sekarang kita memiliki kolom ID deret waktu potensial, Produk. Namun, format ini hanya dapat digunakan untuk memprediksi salah satu region, dan data untuk region lain harus diketahui pada saat prediksi.
Solusinya adalah mengonversi ke format sempit, sehingga setiap baris mewakili satu pengamatan. Setiap data yang tidak bergantung pada deret waktu akan diulang untuk setiap baris:
Tanggal | Permintaan | ID | Promo |
---|---|---|---|
01/01/2019 | 112 | Widget_1_CA | 0 |
01/02/2019 | 141 | Widget_1_CA | 1 |
01/03/2019 | 149 | Widget_1_CA | 0 |
01/01/2019 | 52 | Widget_1_IL | 0 |
01/02/2019 | 81 | Widget_1_IL | 1 |
01/03/2019 | 89 | Widget_1_IL | 0 |
01/01/2019 | 241 | Widget_2_CA | 0 |
01/02/2019 | 219 | Widget_2_CA | 1 |
01/03/2019 | 244 | Widget_2_CA | 0 |
01/01/2019 | 0 | Widget_2_IL | 0 |
01/02/2019 | 0 | Widget_2_IL | 1 |
01/03/2019 | 0 | Widget_2_IL | 0 |
01/01/2019 | 0 | Widget_3_CA | 0 |
01/02/2019 | 0 | Widget_3_CA | 1 |
01/03/2019 | 0 | Widget_3_CA | 0 |
01/01/2019 | 43 | Widget_3_IL | 0 |
01/02/2019 | 26 | Widget_3_IL | 1 |
01/03/2019 | 86 | Widget_3_IL | 0 |
Sekarang kita memiliki ID deret waktu (ID), kolom target (Permintaan), dan kolom Waktu (Tanggal). Selain itu, setiap baris didasarkan pada satu pengamatan, yang dapat digunakan untuk memprediksi nilai target. Kolom Promo digunakan sebagai fitur untuk melatih model.
Pada kenyataannya, Anda akan memiliki lebih banyak baris dan kolom daripada contoh tersebut. Namun, Anda harus mengikuti panduan di sini untuk membuat struktur data guna menghindari kebocoran data.
Langkah selanjutnya
- Apakah Data Saya Berperforma Baik? Checklist Pra-ML
- Menyiapkan dan menyeleksi data Anda untuk machine learning