Prapemrosesan fitur otomatis

BigQuery ML melakukan prapemrosesan otomatis selama pelatihan menggunakan pernyataan CREATE MODEL. Pra-pemrosesan otomatis terdiri dari imputasi nilai yang tidak ada dan transformasi fitur.

Untuk mengetahui informasi tentang dukungan prapemrosesan fitur di BigQuery ML, lihat Ringkasan prapemrosesan fitur.

Untuk mengetahui informasi tentang fungsi dan pernyataan SQL yang didukung untuk setiap jenis model, lihat Perjalanan pengguna menyeluruh untuk setiap model.

Komputasi data tidak ada

Dalam statistik, imputasi digunakan untuk mengganti data yang hilang dengan nilai yang diganti. Saat Anda melatih model di BigQuery ML, nilai NULL dianggap sebagai data yang hilang. Saat Anda memprediksi hasil di BigQuery ML, nilai yang hilang dapat terjadi ketika BigQuery ML menemukan nilai NULL atau nilai yang sebelumnya tidak terlihat. BigQuery ML menangani data yang hilang secara berbeda, berdasarkan jenis data di kolom.

Jenis kolom Metode imutasi
Angka Pada pelatihan dan prediksi, nilai NULL dalam kolom numerik diganti dengan nilai rata-rata kolom tertentu, seperti yang dihitung oleh kolom fitur dalam data input asli.
Dienkode one-hot/Multi-hot Dalam pelatihan dan prediksi, nilai NULL dalam kolom yang dienkode dipetakan ke kategori tambahan yang ditambahkan ke data. Data yang sebelumnya tidak terlihat diberi bobot 0 selama prediksi.
TIMESTAMP Kolom TIMESTAMP menggunakan campuran metode imputasi dari kolom standar dan kolom berenkode one-hot. Untuk kolom waktu Unix yang dihasilkan, BigQuery ML mengganti nilai dengan waktu Unix rata-rata di seluruh kolom asli. Untuk nilai lain yang dihasilkan, BigQuery ML menetapkannya ke kategori NULL masing-masing untuk setiap fitur yang diekstrak.
STRUCT Dalam pelatihan dan prediksi, setiap kolom STRUCT akan dihitung sesuai dengan jenisnya.

Transformasi fitur

Secara default, BigQuery ML mengubah fitur input sebagai berikut:

Jenis data input Metode transformasi Detail
INT64
NUMERIC
BIGNUMERIC
FLOAT64
Standardisasi Untuk sebagian besar model, BigQuery ML menstandarkan dan memusatkan kolom numerik pada nol sebelum meneruskannya ke dalam pelatihan. Pengecualiannya adalah model pohon boost dan model hutan acak, tanpa standardisasi yang terjadi, dan model k-means, dengan opsi STANDARDIZE_FEATURES mengontrol apakah fitur numerik distandardisasi atau tidak.
BOOL
STRING
BYTES
DATE
DATETIME
TIME
Dienkode one-hot Untuk semua kolom non-numerik dan non-array selain TIMESTAMP, BigQuery ML melakukan transformasi encode one-hot untuk semua model selain model pohon yang di-boost dan model hutan acak. Transformasi ini menghasilkan fitur terpisah untuk setiap nilai unik dalam kolom. Transformasi encoding label diterapkan untuk melatih model hutan acak dan pohon yang di-boost untuk mengonversi setiap nilai unik menjadi nilai numerik.
ARRAY Multi-hot dienkode Untuk semua kolom ARRAY non-numerik, BigQuery ML melakukan transformasi encode multi-hot. Transformasi ini menghasilkan fitur terpisah untuk setiap elemen unik dalam ARRAY.
TIMESTAMP Transformasi stempel waktu Saat model regresi linear atau logistik menemukan kolom TIMESTAMP, model tersebut akan mengekstrak sekumpulan komponen dari TIMESTAMP dan melakukan campuran standardisasi dan encode one-hot pada komponen yang diekstraksi. Untuk komponen waktu Unix dalam detik, BigQuery ML menggunakan standardisasi. Untuk semua komponen lainnya, menggunakan encode one-hot.

Untuk mengetahui informasi selengkapnya, lihat tabel transformasi fitur stempel waktu di bawah.
STRUCT Perluasan struktur Saat menemukan kolom STRUCT, BigQuery ML akan memperluas kolom di dalam STRUCT untuk membuat satu kolom. Semua kolom STRUCT harus diberi nama. STRUCT bertingkat tidak diizinkan. Nama kolom setelah perluasan memiliki format {struct_name}_{field_name}.
ARRAY dari STRUCT Tidak ada transformasi
ARRAY dari NUMERIC Tidak ada transformasi

Transformasi fitur TIMESTAMP

Tabel berikut menunjukkan komponen yang diekstrak dari kolom TIMESTAMP dan metode transformasi yang sesuai.

TIMESTAMP komponen processed_input hasil Metode transformasi
Waktu Unix dalam detik [COLUMN_NAME] Standardisasi
Tanggal _TS_DOM_[COLUMN_NAME] Enkode one-hot
Hari _TS_DOW_[COLUMN_NAME] Enkode one-hot
Bulan _TS_MOY_[COLUMN_NAME] Enkode one-hot
Jam _TS_HOD_[COLUMN_NAME] Enkode one-hot
Menit _TS_MOH_[COLUMN_NAME] Enkode one-hot
Pekan (pekan dimulai pada hari Minggu) _TS_WOY_[COLUMN_NAME] Enkode one-hot
Year _TS_YEAR_[COLUMN_NAME] Enkode one-hot

Encoding fitur kategori

Untuk fitur yang dienkode dengan one-hot, Anda dapat menentukan metode encoding default yang berbeda menggunakan opsi model CATEGORY_ENCODING_METHOD. Untuk model linear tergeneralisasi (GLM), Anda dapat menetapkan CATEGORY_ENCODING_METHOD ke salah satu nilai berikut:

Enkode one-hot

Encode satu kali memetakan setiap kategori yang dimiliki suatu fitur ke fitur binernya sendiri, dengan 0 mewakili tidak adanya fitur dan 1 mewakili kehadiran (dikenal sebagai dummy variabel). Pemetaan ini membuat kolom fitur baru N, dengan N adalah jumlah kategori unik untuk fitur di seluruh tabel pelatihan.

Misalnya, tabel pelatihan Anda memiliki kolom fitur yang disebut fruit dengan kategori Apple, Banana, dan Cranberry, seperti berikut:

Baris buah
1 Apple
2 Pisang
3 Cranberi

Dalam hal ini, opsi CATEGORY_ENCODING_METHOD='ONE_HOT_ENCODING' akan mengubah tabel ke representasi internal berikut:

Baris buah_Apel buah_Pisang buah_Cranberi
1 1 0 0
2 0 1 0
3 0 0 1

Enkode one-hot didukung oleh model regresi linear dan logistik serta hierarki yang ditingkatkan.

Contoh encoding

Encoding contoh serupa dengan encode one-hot, yang memungkinkan fitur kategoris diubah menjadi set variabel placeholder. Encoding contoh menggunakan variabel placeholder N-1, bukan variabel placeholder N, untuk mewakili kategori N untuk fitur. Misalnya, jika Anda menetapkan CATEGORY_ENCODING_METHOD ke 'DUMMY_ENCODING' untuk kolom fitur fruit yang sama dengan yang ditampilkan dalam contoh encode one-hot sebelumnya, tabel akan diubah menjadi representasi internal berikut .

Baris buah_Apel buah_Pisang
1 1 0
2 0 1
3 0 0

Kategori dengan kejadian terbanyak dalam set data pelatihan dihapus. Jika beberapa kategori memiliki kemunculan terbanyak, kategori acak dalam kumpulan tersebut akan dihapus.

Set bobot akhir dari ML.WEIGHTS masih menyertakan kategori yang diturunkan, tetapi bobotnya selalu 0.0. Untuk ML.ADVANCED_WEIGHTS, error standar dan nilai p untuk variabel yang dilepas adalah NaN.

Jika warm_start digunakan pada model yang awalnya dilatih dengan 'DUMMY_ENCODING', variabel placeholder yang sama akan dihapus dari jalan pelatihan pertama. Model tidak dapat mengubah metode encoding di antara sesi pelatihan.

Encoding dummy didukung oleh model regresi linear dan logistik.

Encoding label

Encoding label mengubah nilai fitur kategoris menjadi nilai INT64 dalam [0, <number of categories>].

Misalnya, jika Anda memiliki set data buku seperti berikut:

Title Genre
Buku 1 Fantasi
Buku 2 Memasak
Buku 3 History
Buku 4 Memasak

Nilai yang dienkode pada label mungkin terlihat mirip dengan berikut ini:

Title Genre (teks) Genre (numerik)
Buku 1 Fantasi 1
Buku 2 Memasak 2
Buku 3 History 3
Buku 4 Memasak 2

Kosakata encoding diurutkan sesuai abjad. Nilai dan kategori NULL yang tidak ada dalam kosakata dienkode ke 0.

Encoding label didukung oleh model hierarki yang dioptimalkan.

Encoding target

Encoding target mengganti nilai fitur kategoris dengan probabilitas target untuk model klasifikasi, atau dengan nilai target yang diharapkan untuk model regresi.

Fitur yang telah dienkode target mungkin terlihat mirip dengan contoh berikut:

# Classification model
+------------------------+----------------------+
| original value         | target encoded value |
+------------------------+----------------------+
| (category_1, target_1) |     0.5              |
| (category_1, target_2) |     0.5              |
| (category_2, target_1) |     0.0              |
+------------------------+----------------------+

# Regression model
+------------------------+----------------------+
| original value         | target encoded value |
+------------------------+----------------------+
| (category_1, 2)        |     2.5              |
| (category_1, 3)        |     2.5              |
| (category_2, 1)        |     1.5              |
| (category_2, 2)        |     1.5              |
+------------------------+----------------------+

Encoding target didukung oleh model hierarki yang dioptimalkan.