Fungsi ML.MULTI_HOT_ENCODER

Dokumen ini menjelaskan fungsi ML.MULTI_HOT_ENCODER, yang memungkinkan Anda mengenkode ekspresi array string menggunakan skema encoding multi-hot.

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

Saat digunakan dalam klausa TRANSFORM, kosakata yang dihitung selama pelatihan, beserta nilai batas atas frekuensi dan k yang Anda inginkan akan digunakan secara otomatis dalam prediksi.

Sintaks

ML.MULTI_HOT_ENCODER(array_expression [, top_k] [, frequency_threshold]) OVER()

Argumen

ML.MULTI_HOT_ENCODER menggunakan argumen berikut:

  • array_expression: ekspresi ARRAY<STRING> yang akan dienkode.
  • 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.MULTI_HOT_ENCODER menampilkan array nilai struct dengan struktur 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 menjalankan encoding multi-hot pada kumpulan ekspresi array string. Contoh ini membatasi kosakata encoding ke tiga kategori yang paling sering muncul dalam data dan juga terjadi satu kali atau lebih.

SELECT f[OFFSET(0)] AS f0, ML.MULTI_HOT_ENCODER(f, 3, 1) OVER () AS output
FROM
  (
    SELECT ['a', 'b', 'b', 'c', NULL] AS f
    UNION ALL
    SELECT ['c', 'c', 'd', 'd', NULL] AS f
  )
ORDER BY f[OFFSET(0)];

Outputnya terlihat mirip dengan ini:

+------+-----------------------------+
|  f0  | output.index | output.value |
+------+--------------+--------------+
|  a   |  1           |  1.0         |
|      |  2           |  1.0         |
|      |  3           |  1.0         |
|      |  0           |  1.0         |
|  c   |  3           |  1.0         |
|      |  0           |  1.0         |
+------+-----------------------------+

Langkah selanjutnya