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 | +------+--------+
次のステップ
- 特徴の前処理の詳細については、特徴前処理の概要をご覧ください。
- 各モデルタイプでサポートされている SQL ステートメントと関数については、各モデルのエンドツーエンドのユーザー ジャーニーをご覧ください。