ML.LABEL_ENCODER 関数

このドキュメントでは、文字列式を [0, <number of categories>]INT64 値にエンコードするために使用できる ML.LABEL_ENCODER 関数について説明します。

エンコードする語彙は、アルファベット順に並べ替えられます。語彙に含まれていない NULL 値とカテゴリは 0 にエンコードされます。

TRANSFORMで使用する場合、トレーニングで計算された語彙値と、上位の k および指定した頻度のしきい値予測に自動的に使用されます。

構文

ML.LABEL_ENCODER(string_expression [, top_k] [, frequency_threshold]) OVER()

ML.LABEL_ENCODER は次の引数を取ります。

  • string_expression: エンコードする STRING 式。
  • top_k: エンコードする語彙に含まれるカテゴリ数を指定する INT64 値。この関数はデータ内で top_k の最頻カテゴリを選択し、それらを使用します。このしきい値を下回るカテゴリは 0 にエンコードされます。高次元化による問題を回避するため、この値は 1,000,000 未満にする必要があります。デフォルト値は 32,000 です。
  • frequency_threshold: カテゴリの頻度に基づいてエンコード語彙に含まれるカテゴリを制限する INT64 値。この関数は、頻度が frequency_threshold 以上のカテゴリを使用します。このしきい値を下回るカテゴリは 0 にエンコードされます。デフォルト値は 5 です。

出力

ML.LABEL_ENCODER は、エンコードされた文字列式を表す INT64 値を返します。

次の例では、一連の文字列式にラベル エンコードを行います。エンコード語彙は、データ中に最も頻繁に出現し、かつ 2 回以上出現する 2 つのカテゴリに限定します。

SELECT f, ML.LABEL_ENCODER(f, 2, 2) OVER () AS output
FROM UNNEST([NULL, 'a', 'b', 'b', 'c', 'c', 'c', 'd', 'd']) AS f
ORDER BY f;

出力は次のようになります。

+------+--------+
|  f   | output |
+------+--------+
| NULL |      0 |
| a    |      0 |
| b    |      1 |
| b    |      1 |
| c    |      2 |
| c    |      2 |
| c    |      2 |
| d    |      0 |
| d    |      0 |
+------+--------+

次のステップ