Fungsi ML.ONE_HOT_ENCODER

Dokumen ini menjelaskan fungsi ML.ONE_HOT_ENCODER, yang memungkinkan Anda mengenkode ekspresi string menggunakan skema encoding one-hot atau dummy.

Kosakata encoding diurutkan sesuai abjad. Nilai dan kategori NULL yang tidak ada dalam kosakata dienkode dengan nilai index 0. Jika Anda menggunakan encoding dummy, kategori yang dihapus akan dienkode dengan value dari 0.

Saat digunakan dalam klausa TRANSFORM, nilai kosakata dan kategori yang dihapus yang dihitung selama pelatihan, beserta nilai k teratas dan batas minimum frekuensi yang Anda tentukan, akan otomatis digunakan dalam prediksi.

Sintaks

ML.ONE_HOT_ENCODER(string_expression [, drop] [, top_k] [, frequency_threshold]) OVER()

Argumen

ML.ONE_HOT_ENCODER menggunakan argumen berikut:

  • string_expression: ekspresi STRING yang akan dienkode.
  • drop: nilai STRING yang menentukan apakah fungsi menghapus kategori. Nilai yang valid adalah sebagai berikut:
    • none: Mempertahankan semua kategori. Ini adalah nilai defaultnya.
    • most_frequent: Menghapus kategori paling sering yang ditemukan dalam ekspresi string. Jika nilai ini dipilih, fungsi tersebut akan menggunakan encoding dummy.
  • top_k: nilai INT64 yang menentukan jumlah kategori yang disertakan dalam kosakata encoding. Fungsi ini memilih kategori top_k yang paling banyak dalam data dan menggunakannya; kategori di bawah batas ini dienkode ke 0. Nilai ini harus kurang dari 1,000,000 untuk menghindari masalah karena dimensi yang tinggi. Nilai defaultnya adalah 32,000.
  • frequency_threshold: nilai INT64 yang membatasi kategori yang disertakan dalam kosakata encoding berdasarkan frekuensi kategori. Fungsi ini menggunakan kategori yang frekuensinya lebih besar dari atau sama dengan frequency_threshold; kategori di bawah batas ini dienkode ke 0. Nilai defaultnya adalah 5.

Output

ML.ONE_HOT_ENCODER menampilkan array nilai struct, dalam bentuk ARRAY<STRUCT<INT64, FLOAT64>>. Elemen pertama dalam struct memberikan indeks ekspresi string yang dienkode, dan elemen kedua memberikan nilai ekspresi string yang dienkode.

Contoh

Contoh berikut membuat encoding dummy pada sekumpulan ekspresi string. Metode ini membatasi kosakata encoding menjadi sepuluh kategori yang paling sering muncul dalam data dan juga terjadi nol kali atau lebih.

SELECT f, ML.ONE_HOT_ENCODER(f, 'most_frequent', 10, 0) OVER () AS output
FROM UNNEST([NULL, 'a', 'b', 'b', 'c', 'c', 'c', 'd', 'd']) AS f
ORDER BY f;

Outputnya terlihat mirip dengan yang berikut ini:

+------+-----------------------------+
|  f   | output.index | output.value |
+------+--------------+--------------+
| NULL |  0           |  1.0         |
| a    |  1           |  1.0         |
| b    |  2           |  1.0         |
| b    |  2           |  1.0         |
| c    |  3           |  0.0         |
| c    |  3           |  0.0         |
| c    |  3           |  0.0         |
| d    |  4           |  1.0         |
| d    |  4           |  1.0         |
+------+-----------------------------+

Langkah selanjutnya