ML.MULTI_HOT_ENCODER 関数
このドキュメントでは、マルチホット エンコード スキームを使用して文字列配列式をエンコードできる ML.MULTI_HOT_ENCODER
関数について説明します。
エンコードする語彙は、アルファベット順に並べ替えられます。NULL
値と語彙に含まれていないカテゴリは、index
値 0
でエンコードされます。
TRANSFORM
句で使用する場合、トレーニングで計算された語彙と、上位の k および指定した頻度のしきい値予測に自動的に使用されます。
構文
ML.MULTI_HOT_ENCODER(array_expression [, top_k] [, frequency_threshold]) OVER()
引数
ML.MULTI_HOT_ENCODER
は次の引数を取ります。
array_expression
: エンコードするARRAY<STRING>
式。top_k
: エンコードする語彙に含まれるカテゴリ数を指定するINT64
値。この関数はデータ内でtop_k
の最頻カテゴリを選択し、それらを使用します。このしきい値を下回るカテゴリは0
にエンコードされます。高次元化による問題を回避するため、この値は1,000,000
未満にする必要があります。デフォルト値は32,000
です。frequency_threshold
: カテゴリの頻度に基づいてエンコード語彙に含まれるカテゴリを制限するINT64
値。この関数は、頻度がfrequency_threshold
以上のカテゴリを使用します。このしきい値を下回るカテゴリは0
にエンコードされます。デフォルト値は5
です。
出力
ML.MULTI_HOT_ENCODER
は、ARRAY<STRUCT<INT64, FLOAT64>>
の形式で構造体値の配列を返します。構造体内の最初の要素はエンコードされた文字列式のインデックスを指定し、2 番目の要素はエンコードされた文字列式の値を指定します。
例
次の例では、文字列配列式のセットにマルチホット エンコードを行います。エンコード語彙は、データ中に最も頻繁に出現し、かつ 1 回以上出現する 3 つのカテゴリに限定します。
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)];
出力は次のようになります。
+------+-----------------------------+ | 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 | +------+-----------------------------+
次のステップ
- 特徴の前処理の詳細については、特徴前処理の概要をご覧ください。
- 各モデルタイプでサポートされている SQL ステートメントと関数については、各モデルのエンドツーエンドのユーザー ジャーニーをご覧ください。