Jenis dan transformasi data

Halaman ini menjelaskan cara kerja Vertex AI dengan berbagai jenis data tabel untuk model AutoML.

Pengantar transformasi di Vertex AI

Pelatihan model

Data tabel yang diinput harus ditransformasi sebelum dapat digunakan untuk pelatihan model. Transformasi menunjukkan fungsi fitur data tertentu.

Transformasi berikut didukung:

Jika sumber data Anda adalah file CSV di Cloud Storage, koma (",") harus digunakan sebagai pemisah. Vertex AI menggunakan format CSV RFC 4180.

Jika sumber data Anda adalah BigQuery dan Anda menjalankan klasifikasi atau regresi, Anda dapat menyertakan data yang terdiri atas beberapa primitif data. Jenis data gabungan ini harus diproses sebelumnya sebelum transformasi dapat diterapkan. Jenis data gabungan berikut didukung:

Jika nilai jenis tidak ada atau null, Vertex AI akan menanganinya berdasarkan tujuan model Anda dan transformasi yang diterapkan untuk fitur tersebut. Untuk mengetahui detailnya, lihat Penanganan nilai yang tidak ada atau null.

Prediksi

Format data yang digunakan untuk prediksi harus sesuai dengan format yang digunakan untuk pelatihan. Untuk mengetahui detailnya, lihat Format data untuk prediksi.

Transformasi Vertex AI

Kategoris

Menerapkan transformasi kategoris akan menyebabkan fitur tersebut mewakili nilai dalam suatu kategori. Artinya, tingkat nominal. Nilai tersebut hanya berbeda berdasarkan namanya tanpa urutan. Anda dapat menggunakan angka untuk mewakili nilai kategoris, tetapi nilai tersebut tidak memiliki hubungan numerik satu sama lain. Artinya, 1 kategoris tidak "lebih besar" daripada 0 kategoris.

Berikut adalah beberapa contoh nilai kategoris:

  • Boolean - true, false.
  • Negara - "USA", "Canada", "China", dan sebagainya.
  • Kode status HTTP - "200", "404", "500", dan sebagainya.

Nilai kategoris peka huruf besar/kecil; variasi ejaan diperlakukan sebagai kategori berbeda (misalnya, "Color" dan "Colour" tidak digabungkan).

Saat Anda melatih model yang memiliki fitur dengan transformasi kategoris, Vertex AI akan menerapkan transformasi data berikut ke fitur tersebut, dan menggunakan transformasi apa pun yang memberikan sinyal untuk pelatihan:

  • String kategoris apa adanya—tanpa perubahan kapitalisasi, tanda baca, ejaan, tense, dan sebagainya.
  • Mengonversi nama kategori menjadi indeks pencarian kamus dan membuat embedding untuk setiap indeks.
  • Kategori yang muncul kurang dari 5 kali dalam set data pelatihan diperlakukan sebagai kategori "unknown" (tidak diketahui). Kategori "unknown" mendapatkan indeks pencarian dan hasil embedding khususnya sendiri.

Transformasi kategoris dapat diterapkan ke data STRING dalam file CSV atau ke jenis data BigQuery berikut:

  • INT64
  • NUMERIC, BIGNUMERIC
  • FLOAT64
  • BOOL
  • STRING
  • DATE
  • DATETIME
  • TIME
  • TIMESTAMP

Teks

Transformasi teks menyebabkan fitur digunakan sebagai teks bentuk bebas, biasanya terdiri atas token teks.

Berikut adalah beberapa contoh nilai teks:

  • "The quick brown fox"
  • "This restaurant is the best! The food is delicious"

Untuk model perkiraan, transformasi teks tidak didukung untuk fitur kovariat.

Saat Anda melatih model yang memiliki fitur dengan transformasi teks, Vertex AI akan menerapkan transformasi data berikut ke fitur tersebut, dan menggunakan transformasi apa pun yang memberikan sinyal untuk pelatihan:

  • Teks apa adanya—tanpa perubahan kapitalisasi, tanda baca, ejaan, tense, dan sebagainya.
  • Mengubah teks menjadi kata dan menghasilkan 1-gram dan 2-gram dari kata. Mengonversi setiap n-gram menjadi indeks pencarian kamus dan menghasilkan embedding untuk setiap indeks. Menggabungkan embedding dari semua elemen ke dalam satu embedding menggunakan nilai rata-rata.

    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.

Transformasi teks dapat diterapkan ke data STRING dalam file CSV atau ke jenis data BigQuery berikut:

  • STRING
  • DATETIME

Numerik

Transformasi numerik menyebabkan kolom digunakan sebagai bilangan ordinal atau kuantitatif. Angka-angka ini dapat dibandingkan. Artinya, dua angka berbeda dapat lebih besar atau lebih kecil dari satu sama lain.

Spasi di awal atau di akhir akan dipangkas.

Tabel berikut menampilkan semua format yang kompatibel untuk transformasi numerik:

Format Contoh Notes
String numerik "101", 101.5" Karakter titik (".") adalah satu-satunya tanda desimal yang valid. "101,5" dan "100,000" bukan string numerik yang valid.
Notasi ilmiah "1.12345E+11", "1.12345e+11" Lihat catatan untuk string numerik terkait tanda desimal.
Bukan angka "NAN", "nan", "+NAN" Huruf besar atau kecil tidak dibedakan. Karakter plus ("+") atau minus ("-") yang ditambahkan di awal akan diabaikan. Ditafsirkan sebagai nilai NULL.
Tak terhingga "INF", "+inf" Huruf besar atau kecil tidak dibedakan. Karakter plus ("+") atau minus ("-") yang ditambahkan di awal akan diabaikan. Ditafsirkan sebagai nilai NULL.

Jika nilai dalam kolom dengan transformasi numerik tidak sesuai dengan salah satu format ini, seluruh baris akan dikecualikan dari pelatihan, atau nilainya akan diperlakukan sebagai null. Anda memilih antara hasil ini saat menentukan transformasi numerik.

Saat Anda melatih model yang memiliki fitur dengan transformasi numerik, Vertex AI akan menerapkan transformasi data berikut ke fitur tersebut, dan menggunakan transformasi apa pun yang memberikan sinyal untuk pelatihan:

  • 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.

Transformasi numerik dapat diterapkan ke data STRING dalam file CSV atau ke jenis data BigQuery berikut:

  • INT64
  • NUMERIC, BIGNUMERIC
  • FLOAT64
  • STRING
  • TIMESTAMP

Stempel waktu

Transformasi Stempel waktu menyebabkan fitur digunakan sebagai titik waktu, yang dinyatakan sebagai waktu sipil dengan zona waktu, atau stempel waktu Unix. Hanya fitur dengan transformasi Stempel waktu yang dapat digunakan untuk kolom Time.

Zona waktu yang tidak ditentukan dengan waktu sipil akan ditetapkan secara default ke UTC.

Tabel berikut menampilkan semua format string stempel waktu yang kompatibel:

Format Contoh Catatan
%E4Y-%m-%d "2017-01-30" Lihat dokumentasi Abseil untuk deskripsi format ini.
%E4Y/%m/%d "2017/01/30"
%Y/%m/%d %H:%M:%E*S "2017/01/30 23:59:58"
%d-%m-%E4Y "30-11-2018"
%d/%m/%E4Y "30/11/2018"
%d-%B-%E4Y "30-November-2018"
%Y-%m-%dT%H:%M:%E*S%Ez "2019-05-17T23:56:09.05Z" RFC 3339
String stempel waktu Unix dalam detik "1541194447" Hanya untuk waktu antara 01/Jan/1990 dan 01/Jan/2030.
String stempel waktu Unix dalam milidetik "1541194447000"
String stempel waktu Unix dalam mikrodetik "1541194447000000"
String stempel waktu Unix dalam nanodetik "1541194447000000000"

Jika nilai dalam kolom dengan transformasi stempel waktu tidak sesuai dengan salah satu format ini, seluruh baris akan dikecualikan dari pelatihan, atau nilainya akan diperlakukan sebagai null. Anda memilih antara hasil ini saat menentukan transformasi stempel waktu.

Saat Anda melatih model yang memiliki fitur dengan transformasi stempel waktu, Vertex AI akan menerapkan transformasi data berikut ke fitur tersebut, dan menggunakan transformasi apa pun yang memberikan sinyal untuk pelatihan:

  • Menerapkan transformasi untuk kolom Numeric.
  • Menentukan tahun, bulan, hari, dan hari kerja. Memperlakukan setiap nilai dari stempel waktu sebagai kolom Categorical.
  • Nilai numerik tidak valid (misalnya yang berada di luar rentang stempel waktu standar, atau yang merupakan nilai ekstrem) tidak menerima perlakuan khusus dan tidak dihapus.
  • Baris dengan input stempel waktu tidak valid (misalnya string stempel waktu yang tidak valid) tidak disertakan untuk pelatihan dan prediksi.

Transformasi stempel waktu dapat diterapkan ke data STRING dalam file CSV atau ke jenis data BigQuery berikut:

  • INT64
  • STRING
  • DATE
  • DATETIME
  • TIMESTAMP

Jenis data gabungan

Terkadang, Anda perlu menyertakan data yang terdiri atas beberapa primitif data, seperti array atau struct. Jenis data gabungan hanya tersedia dengan menggunakan BigQuery sebagai sumber data, dan tidak didukung untuk model perkiraan.

Struct

Struct dapat digunakan untuk mewakili sekelompok kolom berlabel. Sebuah struct memiliki daftar nama kolom, yang masing-masing dikaitkan dengan sebuah jenis data. Daftar kolom dan jenis datanya harus sama untuk semua nilai struct di suatu kolom.

Berikut ini beberapa contoh struct:

  • Tekanan darah - {"timestamp": 1535761416, "systolic": 110, "diastolic": 70}
  • Produk - {"name": "iPhone", price: 1000}

Anda menggunakan jenis data STRUCT BigQuery untuk mewakili struct.

Nilai struct otomatis disatukan menjadi kolom. Vertex AI menerapkan transformasi data ke kolom yang disatukan sesuai dengan jenis transformasinya.

Array

Array dapat digunakan untuk mewakili daftar nilai. Nilai yang termuat harus menerima jenis transformasi yang sama. Anda dapat menyertakan struct dalam array; semua struct dalam array harus memiliki struktur yang sama.

Vertex AI memproses array sebagai representasi bobot relatif. Dengan kata lain, item yang muncul kemudian dalam array lebih berbobot daripada item yang muncul di awal.

Berikut adalah beberapa contoh array:

  • Kategori produk:

    ["Clothing", "Women", "Dress", ...]

  • Pembelian terakhir:

    ["iPhone", "Laptop", "Suitcase", ...]

  • Data pengguna:

    [{"name": "Joelle", ID: 4093}, {"name": "Chloe", ID: 2047}, {"name": "Neko", ID: 3432}, ...]

Anda menggunakan jenis data ARRAY BigQuery untuk mewakili array.

Transformasi data yang diterapkan Vertex AI bergantung pada jenis transformasi yang diterapkan ke array:

Jenis array Transformasi
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.
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.
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.
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.
Array struct
  • Struct dalam array disatukan menjadi kolom individual, dan disusun menjadi array berdasarkan kolom. Transformasi array (seperti yang dijelaskan dalam tabel ini) diterapkan, sesuai dengan jenis kolom array tersebut.

Penanganan nilai yang tidak ada atau null

Penanganan nilai yang tidak ada bergantung pada tujuan model Anda dan transformasi yang diterapkan untuk fitur tersebut.

Klasifikasi dan Regresi

Untuk model klasifikasi dan regresi, nilai null menghasilkan embedding untuk transformasi kategoris dan teks; untuk transformasi lain, nilai null dibiarkan sebagai null.

Prakiraan

Untuk model perkiraan, nilai null diperhitungkan dari data di sekitarnya. (Tidak ada opsi untuk membiarkan nilai null sebagai null.) Jika Anda ingin mengontrol cara nilai null diperhitungkan, Anda dapat memperhitungkannya secara eksplisit. Nilai terbaik untuk digunakan mungkin bergantung pada data dan masalah bisnis Anda.

Baris yang tidak ada (misalnya, tidak ada baris untuk tanggal tertentu, dengan perincian data harian) diizinkan, tetapi Vertex AI tidak memperhitungkan nilai untuk data yang tidak ada. Karena baris yang tidak ada dapat menurunkan kualitas model, sebaiknya Anda sedapat mungkin menghindarinya. Misalnya, jika satu baris tidak ada karena jumlah penjualan untuk hari tersebut adalah nol, tambahkan baris untuk hari itu dan tetapkan data penjualan secara eksplisit ke 0.

Nilai yang diperlakukan sebagai null

Saat melatih model tabel AutoML, Vertex AI memperlakukan nilai berikut sebagai null:

  • Nilai NULL BigQuery.

  • NaN atau nilai numerik tak terhingga.

  • String kosong. Vertex AI tidak memangkas spasi dari string. Artinya, " " tidak dianggap sebagai nilai null.

  • 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.

  • Nilai dalam kolom dengan transformasi Numerik atau Stempel Waktu yang formatnya tidak valid untuk transformasi kolom itu. Dalam hal ini, jika Anda menentukan bahwa baris dengan nilai yang tidak valid harus digunakan dalam pelatihan, nilai yang tidak valid akan dianggap null.

Format data untuk prediksi

Format data yang digunakan untuk prediksi harus sesuai dengan format yang digunakan untuk pelatihan.

Jika Anda melatih model berdasarkan data dalam file CSV di Cloud Storage, data Anda berjenis STRING. Jika Anda menggunakan objek JSON untuk mengirim permintaan prediksi, pastikan semua nilai dalam key-value pair juga berjenis STRING.

Jika Anda melatih model berdasarkan data yang tersimpan di BigQuery dan menggunakan objek JSON untuk mengirim permintaan prediksi, jenis data dari nilai dalam key-value pair JSON harus mengikuti pemetaan dalam tabel di bawah.

Jenis data BigQuery Jenis data JSON
INT64 String
NUMERIC, BIGNUMERIC Nomor
FLOAT64 Nomor
BOOL Boolean
STRING String
DATE String
DATETIME String
TIME String
TIMESTAMP String
Array Array
STRUCT Objek

Misalnya, jika data pelatihan Anda berisi fitur length dengan jenis FLOAT64, key-value pair JSON berikut sudah benar:

"length":3.6,

Sebaliknya, key-value pair JSON berikut akan menampilkan error:

"length":"3.6",

Langkah selanjutnya