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.