機能の変換手法

変換は、データをモデルのトレーニングや分析に適した形式に変換または拡張し、最適なパフォーマンスと精度を確保するための重要な前処理ステップです。 このドキュメントは、補足構文リソースとして機能し、データ前処理の主要な機能変換技術に関する詳細を提供します。

マシンラーニングモデルは文字列値やnull値を直接処理できないため、データの前処理が不可欠です。 このガイドでは、様々な変換を使用して欠落値を入力し、カテゴリデータを数値形式に変換し、ワンホットエンコーディングやベクトル化などの機能スケーリング手法を適用する方法について説明します。 これらの方法により、モデルはデータを解釈し、データから効果的に学習して、パフォーマンスを向上させることができます。

特徴量の自動変換 automatic-transformations

CREATE MODEL コマンドでTRANSFORM句をスキップすると、機能の変換が自動的に行われます。 自動データ前処理には、null置換と(データタイプに基づく)標準特徴変換が含まれます。 数値列とテキスト列が自動的に入力された後、データがマシンラーニングモデルのトレーニングに適した形式になるように特徴変換を行います。 このプロセスには、データ入力の欠落や、カテゴリ、数値、ブール値の変換が含まれます。

IMPORTANT
トレーニング時に使用される特徴変換は、予測および評価時の特徴変換にも使用されます。

次の表は、CREATE MODEL コマンド中にTRANSFORM句が省略された場合に、異なるデータ型がどのように処理されるかを示しています。

ヌル置換 automatic-null-replacement

データタイプ
Null置換
数値
NULLは、列の平均値に置き換えられます。
カテゴリ
nullはml_unknown キーワードに置き換えられます。
ブール
NULLはFALSE値に置き換えられます。
タイムスタンプ
これは継続的なフィールドであることが期待されます。
ネスト/構造化
置き換えは、リーフノードのデータタイプによって異なります。

機能変換 automatic-feature-transformation

データタイプ
機能の変換
数値
必須ではありません – このデータタイプはマシンラーニングアルゴリズムによって理解されているため。
文字列
文字列のインデックス作成が発生します。
ブール
文字列のインデックス作成が発生します。
タイムスタンプ
操作は発生しません。
構造
値がリーフ ノードに展開されます。 変換は、リーフノードのデータタイプに基づいて行われます。

CREATE model modelname options(model_type='logistic_reg', label='rating') AS SELECT * FROM movie_rating;

手動特徴量の変換 manual-transformations

CREATE MODEL ステートメントでカスタムデータ前処理を定義するには、TRANSFORM句を任意の数の使用可能な変換関数と組み合わせて使用します。 これらの手動前処理関数は、TRANSFORM句の外でも使用できます。 以下の​ トランスフォーマーセクション ​で説明されているすべての変換は、データを手動で前処理するために使用できます。

主な特徴 key-characteristics

前処理関数を定義する際に考慮すべき機能変換の主な特性は次のとおりです。

  • 構文: TRANSFORM(functionName(colName, parameters) <aliasNAME>)

    • エイリアス名は構文で必須です。 エイリアス名を指定する必要があります。指定しないと、クエリは失敗します。
  • パラメーター: パラメーターは位置引数です。 つまり、各パラメーターは特定の値のみを使用でき、カスタム値が指定されている場合は、先行するすべてのパラメーターを指定する必要があります。 どの関数がどの引数を取るかについて詳しくは、関連するドキュメントを参照してください。

  • トランスフォーマのチェーン:あるトランスフォーマの出力が別のトランスフォーマへの入力になる場合があります。

  • 機能の使用状況:最後の機能変換が機械学習モデルの機能として使用されます。

CREATE MODEL modelname
TRANSFORM(
  string_imputer(language, 'adding_null') AS imp_language,
  numeric_imputer(users_count, 'mode') AS imp_users_count,
  string_indexer(imp_language) AS si_lang,
  vector_assembler(array(imp_users_count, si_lang, watch_minutes)) AS features
)
OPTIONS(MODEL_TYPE='logistic_reg', LABEL='rating')
AS SELECT * FROM df;

使用可能な変換 available-transformations

19件の変換が利用可能です。 これらの変換は、一般変換数値変換​ カテゴリ変換​ テキスト変換に分割されます。

一般的な変換 general-transformations

この節では、幅広いデータタイプに使用されるトランスフォーマについて詳しく説明します。 この情報は、カテゴリ データやテキスト データに固有でない変換を適用する必要がある場合に不可欠です。

NOTE
入力データタイプは、入力が適用される列を指します。 出力データタイプは、変換が有効になった後に出力として生成される列を指します。

数値入力 numeric-imputer

数値インピュータ トランスは、データセット内の欠落している値を完了します。 これは、欠落した値が配置されている列の平均、中央値、またはモードを使用します。 入力列はDoubleTypeまたはFloatTypeのいずれかである必要があります。 詳しい情報と例については、Spark アルゴリズムのドキュメント ​を参照してください。

NOTE
入力列内のすべてのnull値は欠落として扱われるので、入力も行われます。

データタイプ

  • 入力データタイプ:数値
  • 出力データタイプ:数値

定義

transformer(numeric_imputer(hour, 'mean') hour_imputed)

パラメーター

パラメーター
説明
タイプ
デフォルト
オプション
STRATEGY
インピュテーション戦略。 使用可能な値は[meanmedianmode]です。
文字列
mean
オプション

入力前の例

ID
hour
0
18.0
1
null
2
8.0

入力後の例(平均戦略を使用)

ID
hour
0
18.0
1
13.0
2
8.0

文字列インピュッター string-imputer

文字列インピュータ トランスフォーマは、ユーザーが提供した文字列を関数引数として使用して、データセット内の欠落した値を完了します。 入力列と出力列はstring データ型である必要があります。

NOTE
入力列内のすべてのnull値は欠落として扱われ、指定された文字列に置き換えられます。

データタイプ

  • 入力データタイプ:文字列
  • 出力データタイプ:文字列

定義

transform(string_imputer(name, 'unknown_name') as name_imputed)

パラメーター

パラメーター
説明
タイプ
デフォルト
オプション
NULL_REPLACEMENT
nullを置き換える値。
文字列
ml_unknown
オプション

入力前の例

ID
name
0
John
1
null
2
アリス

入力後の例(「ml_unknown」を置換として使用)

ID
name
0
John
1
ml_unknown
2
アリス

ブーリアンインピュター boolean-imputer

ブール型インピュータ トランスは、ブール型カラムのデータセットに欠落している値を完了します。 入力列と出力列はBoolean タイプである必要があります。

NOTE
入力列内のすべてのnull値は欠落として扱われ、指定されたブール値に置き換えられます。

データタイプ

  • 入力データタイプ:ブール値
  • 出力データタイプ:ブール値

定義

transform(boolean_imputer(name, true) as name_imputed)

パラメーター

パラメーター
説明
タイプ
デフォルト
オプション
NULL_REPLACEMENT
ブーリアンインピュター: 指定できる値:[truefalse]。
ブール値
false
オプション

入力前の例

ID
フラグ
0
true
1
null
2
false

入力後の例(「true」を置換として使用)

ID
フラグ
0
true
1
true
2
false

ベクターアセンブラ vector-assembler

VectorAssembler トランスフォーマは、指定された入力列のリストを1つのベクトル列に結合し、機械学習モデルで複数のフィーチャを簡単に管理できるようにします。 これは、未加工のフィーチャと、異なるフィーチャ トランスフォーマによって生成されたフィーチャを1つの統合フィーチャ ベクトルに結合する場合に特に便利です。 VectorAssemblerは、数値型、ブール型、ベクトル型の入力列を受け入れます。 各行では、入力列の値が、指定した順序でベクトルに連結されます。

データタイプ

  • 入力データタイプ:array[string] (数値/配列[数値]値を持つ列名)
  • 出力データ型:Vector[double]

定義

transform(vector_assembler(id, hour, mobile, userFeatures) as features)

パラメーター

パラメーター
説明
タイプ
デフォルト
オプション
該当なし
このトランスフォーマに追加のパラメータは必要ありません。
該当なし
該当なし
該当なし

変換前の例

ID
hour
モバイル
ユーザー機能
クリック数
0
18
1.0
[0.0, 10.0, 0.5]
1.0

変換後の例

ID
hour
モバイル
ユーザー機能
クリック数
features
0
18
1.0
[0.0, 10.0, 0.5]
1.0
[18.0, 1.0, 0.0, 10.0, 0.5]

数値変換 numeric-transformations

この節では、数値データの処理とスケーリングに使用できるトランスフォーマについて説明します。 これらのトランスフォーマは、データセット内の数値フィーチャを処理および最適化するために必要です。

バイナライザー binarizer

Binarizer トランスフォーマは、二値化と呼ばれるプロセスを通じて、数値フィーチャをバイナリ (0/1)フィーチャに変換します。 指定されたしきい値より大きい特徴量は1.0に変換され、しきい値以下の特徴量は0.0に変換されます。 Binarizerは、入力列のVector型とDouble型の両方をサポートしています。

データタイプ

  • 入力データタイプ:数値列
  • 出力データタイプ:数値

定義

transform(numeric_imputer(rating, 'mode') rating_imp, binarizer(rating_imp) rating_binarizer)

パラメーター

パラメーター
説明
タイプ
デフォルト
オプション
THRESHOLD
連続した特徴を二値化するために使用されるしきい値のパラメーター。 しきい値より大きい特徴は1.0に二値化され、しきい値以下の特徴は0.0に二値化されます。
int/double
0.0
オプション

二値化の前の入力例

ID
評価
0
-18.0
1
13.0
2
8.0

二値化後の出力例(デフォルトのしきい値は0.0)

ID
評価
0
0.0
1
1.0
2
1.0

カスタムしきい値を持つ​定義

transform(numeric_imputer(age, 'mode') age_imp, binarizer(age_imp, 14.0) age_binarizer)

二値化後の出力例(しきい値が14.0)

ID
年齢
0
0.0
1
0.0
2
1.0

バケタイザー bucketizer

Bucketizer トランスフォーマは、ユーザーが指定したしきい値に基づいて、連続するフィーチャの列をフィーチャ バケットの列に変換します。 このプロセスは、連続データを個別のビンまたはバケットに分割するのに便利です。 Bucketizerには、バケットの境界を定義するsplits パラメーターが必要です。

データタイプ

  • 入力データタイプ:数値列
  • 出力データタイプ:数値(バインドされた値)

定義

TRANSFORM(binarizer(time_spent, 5.0) as binary, bucketizer(course_duration, array(-440.5, 0.0, 150.0, 1000.7)) as buck_features, vector_assembler(array(buck_features, users_count, binary)) as vec_assembler, max_abs_scaler(vec_assembler) as maxScaling, min_max_scaler(maxScaling) as features)

パラメーター

パラメーター
説明
タイプ
デフォルト
オプション
splits
連続フィーチャをバケットにマッピングするためのパラメータ。 n+1個の分割で、n個のバケットがあります。 分割は厳密に増加する順序である必要があり、範囲(x,y)はyを含む最後のバケットを除いて各バケットに使用されます。
array (double)
なし
オプション

分割の例

  • Array (Double.NegativeInfinity, 0.0, 1.0, Double.PositiveInfinity)
  • Array (0.0, 1.0, 2.0)

分割は、Double値の範囲全体をカバーする必要があります。そうでない場合、指定された分割の範囲外の値はエラーとして扱われます。

変換の例

この例では、連続したフィーチャの列(course_duration)を取り出し、指定されたsplitsに従ってビン化し、結果のバケットを他のフィーチャと組み合わせます。

TRANSFORM(binarizer(time_spent, 5.0) as binary, bucketizer(course_duration, array(-440.5, 0.0, 150.0, 1000.7)) as buck_features, vector_assembler(array(buck_features, users_count, binary)) as vec_assembler, max_abs_scaler(vec_assembler) as maxScaling, min_max_scaler(maxScaling) as features)

MinMaxScaler minmaxscaler

MinMaxScaler トランスフォーマは、ベクトル行のデータセット内の各フィーチャを指定された範囲(通常は[0、1])に再スケールします。 これにより、すべての機能がモデルに均等に貢献します。 この機能は、グラデーション降下ベースのアルゴリズムなど、機能のスケーリングに影響を受けるモデルで特に便利です。 MinMaxScalerは、次のパラメーターで動作します。

  • min:すべての機能で共有される、変換の下限。 デフォルトは 0.0 です。
  • max:すべての機能で共有される変換の上限。 デフォルトは 1.0 です。

データタイプ

  • 入力データ型:Array[Double]
  • 出力データ型:Array[Double]

定義

TRANSFORM(binarizer(time_spent, 5.0) as binary, bucketizer(course_duration, array(-440.5, 0.0, 150.0, 1000.7)) as buck_features, vector_assembler(array(buck_features, users_count, binary)) as vec_assembler, max_abs_scaler(vec_assembler) as maxScaling, min_max_scaler(maxScaling) as features)

パラメーター

パラメーター
説明
タイプ
デフォルト
オプション
min
変換後の下限。すべての機能で共有。
double
0.0
オプション
max
変換後の上限で、すべての機能で共有されます。
double
1.0
オプション

変換の例

次の使用例は、一連のフィーチャを変換し、他の複数の変換を適用した後、MinMaxScalerを使用して指定した範囲に再スケールします。

TRANSFORM(binarizer(time_spent, 5.0) as binary, bucketizer(course_duration, array(-440.5, 0.0, 150.0, 1000.7)) as buck_features, vector_assembler(array(buck_features, users_count, binary)) as vec_assembler, max_abs_scaler(vec_assembler) as maxScaling, min_max_scaler(maxScaling) as features)

MaxAbsScaler maxabsscaler

MaxAbsScaler トランスフォーマは、ベクトル行のデータセット内の各フィーチャを、各フィーチャの最大絶対値で割って、[-1, 1]の範囲に再スケールします。 この変換は、正の値と負の値の両方を持つデータセットのスパースを保持するのに最適です。これは、データのシフトや中央に配置されないためです。 このため、MaxAbsScalerは、距離計算を含むなど、入力フィーチャのスケールに影響を受けやすいモデルに特に適しています。

データタイプ

  • 入力データ型:Array[Double]
  • 出力データ型:Array[Double]

定義

TRANSFORM(binarizer(time_spent, 5.0) as binary, bucketizer(course_duration, array(-440.5, 0.0, 150.0, 1000.7)) as buck_features, vector_assembler(array(buck_features, users_count, binary)) as vec_assembler, max_abs_scaler(vec_assembler) as maxScaling)

パラメーター

パラメーター
説明
タイプ
デフォルト
オプション
該当なし
MaxAbsScalerは、操作に追加のパラメーターを必要としません。
該当なし
該当なし
該当なし

変換の例

この例では、MaxAbsScalerを含む複数の変換を適用して、フィーチャを[-1、1]の範囲に拡張します。

TRANSFORM(binarizer(time_spent, 5.0) as binary, bucketizer(course_duration, array(-440.5, 0.0, 150.0, 1000.7)) as buck_features, vector_assembler(array(buck_features, users_count, binary)) as vec_assembler, max_abs_scaler(vec_assembler) as maxScaling)

Normalizer normalizer

Normalizerは、ベクトル行のデータセット内の各ベクトルを正規化して、単位ノルムを持つトランスフォーマです。 このプロセスは、ベクトルの方向を変更することなく、一貫したスケールを確保します。 この変換は、距離測定やその他のベクターベースの計算に依存するマシンラーニングモデルで特に便利です。特に、ベクトルの大きさが大幅に異なる場合に便利です。

データタイプ

  • 入力データ型:array[double] / vector[double]
  • 出力データ型:vector[double]

定義

TRANSFORM(binarizer(time_spent, 5.0) as binary, bucketizer(course_duration, array(-440.5, 0.0, 150.0, 1000.7)) as buck_features, vector_assembler(array(buck_features, users_count, binary)) as vec_assembler, normalizer(vec_assembler, 3) as normalized)

パラメーター

パラメーター
説明
タイプ
デフォルト
オプション
p
正規化に使用するp-normを指定します(例:1-norm2-normなど)。
整数
2
オプション

変換の例

この例では、指定されたp-normを使用して一連の機能を正規化するために、Normalizerを含む複数の変換を適用する方法を示します。

TRANSFORM(binarizer(time_spent, 5.0) as binary, bucketizer(course_duration, array(-440.5, 0.0, 150.0, 1000.7)) as buck_features, vector_assembler(array(buck_features, users_count, binary)) as vec_assembler, normalizer(vec_assembler, 3) as normalized)

QuantileDiscretizer quantilediscretizer

QuantileDiscretizerは、連続的な特徴を持つ列を連結されたカテゴリ特徴に変換するトランスで、ビン数はnumBuckets パラメーターで決まります。 バケットの実際の数は、十分な分位数を作成するのに明確な値が少なすぎると、指定された数よりも小さくなる場合があります。

この変換は、連続データの表現を簡素化したり、カテゴリ情報により効果的に動作するアルゴリズムに備えたりする場合に特に便利です。

データタイプ

  • 入力データタイプ:数値列
  • 出力データタイプ:数値列(カテゴリ)

定義

TRANSFORM(quantile_discretizer(hour, 3) as result)

パラメーター

パラメーター
説明
タイプ
デフォルト
オプション
NUM_BUCKETS
データポイントをグループ化するバケット(分位数、またはカテゴリ)の数。 この数値は2以上である必要があります。
整数
2
オプション

変換の例

この例では、QuantileDiscretizerが連続するフィーチャの列(hour)を3つのカテゴリ別グループにビン化する方法を示します。

TRANSFORM(quantile_discretizer(hour, 3) as result)

離脱前と離脱後の例

ID
hour
結果
0
18.0
2.0
1
19.0
2.0
2
8.0
1.0
3
5.0
1.0
4
2.2
0.0

StandardScaler standardscaler

StandardScalerは、ベクトル行のデータセット内の各特徴を正規化して、単位標準偏差および/またはゼロ平均を持つトランスフォーマです。 このプロセスにより、特徴が一貫したスケールでゼロを中心にあると仮定するアルゴリズムにデータがより適しています。 この変換は、SVM、ロジスティック回帰、ニューラルネットワークなどのマシンラーニングモデルにとって特に重要です。そこでは、標準化されていないデータがコンバージェンスの問題や精度の低下につながる可能性があります。

データタイプ

  • 入力データ型:ベクター
  • 出力データタイプ:ベクター

定義

TRANSFORM(standard_scaler(feature) as ss_features)

パラメーター

パラメーター
説明
タイプ
デフォルト
オプション
withStd
データを拡大・縮小して、単位標準偏差を持たせます。
ブール値
True
オプション
withMean
拡大する前に平均を使用してデータを中央揃えします。 このオプションは密な出力を生成するので、スパース入力には注意してください。
ブール値
False
オプション

変換の例

この例では、StandardScalerを一連の機能に適用し、単位標準偏差とゼロ平均で正規化する方法を示します。

TRANSFORM(standard_scaler(feature) as ss_features)

カテゴリ変換 categorical-transformations

この節では、マシンラーニングモデルのカテゴリデータを変換および前処理するために設計された、使用可能なトランスフォーマの概要について説明します。 これらの変換は、数値ではなく、異なるカテゴリやラベルを表すデータポイント用に設計されています。

StringIndexer stringindexer

StringIndexerは、ラベルの文字列列を数値インデックスの列にエンコードするトランスフォーマです。 インデックスは0 ~ numLabelsの範囲で、ラベルの頻度で並べ替えられます(最も頻繁に使用されるラベルは0のインデックスを受け取ります)。 入力列が数値の場合、インデックス作成の前に文字列にキャストされます。 ユーザーが指定した場合、見えないラベルをインデックス numLabelsに割り当てることができます。

この変換は、カテゴリ文字列データを数値形式に変換する場合に特に便利で、数値入力を必要とするマシンラーニングモデルに適しています。

データタイプ

  • 入力データタイプ:文字列
  • 出力データタイプ:数値

定義

TRANSFORM(string_indexer(category) as si_category)

パラメーター

パラメーター
説明
タイプ
デフォルト
オプション
該当なし
StringIndexerは、操作に追加のパラメーターを必要としません。
該当なし
該当なし
該当なし

変換の例

この例では、StringIndexerをカテゴリ フィーチャに適用し、それを数値インデックスに変換する方法を示します。

TRANSFORM(string_indexer(category) as si_category)

OneHotEncoder onehotencoder

OneHotEncoderは、ラベルインデックスの列をスパース バイナリ ベクトルの列に変換するトランスフォーマです。各ベクトルには、最大で1つの値があります。 このエンコーディングは、ロジスティック回帰などの数値入力を必要とするアルゴリズムに、カテゴリデータを効果的に組み込ませる場合に特に便利です。

データタイプ

  • 入力データタイプ:数値
  • 出力データタイプ:ベクトル [Int]

定義

TRANSFORM(string_indexer(category) as si_category, one_hot_encoder(si_category) as ohe_category)

パラメーター

パラメーター
説明
タイプ
デフォルト
オプション
該当なし
OneHotEncoderでは、操作に追加のパラメーターは必要ありません。
該当なし
該当なし
該当なし

変換の例

この例では、最初にStringIndexerをカテゴリ フィーチャに適用し、次にOneHotEncoderを使用してインデックス値をバイナリ ベクトルに変換する方法を示します。

TRANSFORM(string_indexer(category) as si_category, one_hot_encoder(si_category) as ohe_category)

テキスト変換 textual-transformations

この節では、テキストデータを処理し、マシンラーニングモデルで使用できる形式に変換するために使用できるトランスフォーマーについて詳しく説明します。 このセクションは、自然言語データやテキスト分析を扱う開発者にとって非常に重要です。

CountVectorizer countvectorizer

CountVectorizerは、テキストドキュメントのコレクションをトークン数のベクトルに変換するトランスフォーマで、コーパスから抽出された語彙に基づいてスパース表現を生成します。 この変換は、各ドキュメント内のトークンの頻度を表すことで、LDA (Latent Dirichlet Allocation)などのマシンラーニングアルゴリズムで使用できる数値形式にテキストデータを変換するために不可欠です。

データタイプ

  • 入力データ型:配列[文字列]
  • 出力データタイプ:高密度ベクトル

定義

TRANSFORM(count_vectorizer(texts) as cv_output)

パラメーター

パラメーター
説明
タイプ
デフォルト
オプション
VOCAB_SIZE
ボキャブラリの最大サイズ。 CountVectorizerは、コーパス全体で用語の頻度で順序付けされた上位vocabSize語のみを考慮する語彙を作成します。
Int
218
オプション
MIN_DOC_FREQ
語彙に含めるために用語が表示されなければならない異なるドキュメントの最小数を指定します。 絶対数またはドキュメントの一部(ダブルの場合)を指定できます。
Double
1.0
オプション
MAX_DOC_FREQ
用語が含まれる可能性のある様々な文書の最大数を指定します。 絶対数またはドキュメントの一部(ダブルの場合)を指定できます。
Double
(263)-1
オプション
MIN_TERM_FREQ
ドキュメント内のまれな単語をフィルタリングします。 指定されたしきい値より小さい頻度/カウントを持つ用語は無視されます。 ドキュメントのトークン数の絶対数または分数を指定できます。
Double
1.0
オプション

変換の例

この例では、CountVectorizerがテキスト配列のコレクションをトークン数のベクトルに変換し、スパース表現を生成する方法を示します。

TRANSFORM(count_vectorizer(texts) as cv_output)

ベクトル化の前後の例

ID
テキスト
cv_output
0
Array (“a”, “b”, “c”)
(3,[0,1,2],[1.0,1.0,1.0])
1
Array (“a”, “b”, “b”, “b”, “c”, “a”)
(3,[0,1,2],[2.0,2.0,1.0])

NGram ngram

NGramはn グラムのシーケンスを生成するトランスフォーマです。n グラムは、一部の整数(𝑛)に対する(‘𝑛’)トークンのシーケンス(通常は単語)です。 出力は、連続する単語’𝑛’のスペース区切り文字列で構成され、マシンラーニングモデル、特に自然言語処理に焦点を当てたモデルの特徴として使用できます。

データタイプ

  • 入力データ型:配列[文字列]
  • 出力データタイプ:配列[文字列]

定義

TRANSFORM(tokenizer(review_comments) as token_comments, ngram(token_comments, 3) as n_tokens)

パラメーター

パラメーター
説明
タイプ
デフォルト
オプション
N
n グラムの最小の長さは、1以上である必要があります。
整数
2 (bigram機能)
オプション

変換の例

この例では、テキストデータから派生したトークンのリストから、NGram トランスフォーマが3 グラムのシーケンスを作成する方法を示します。

TRANSFORM(tokenizer(review_comments) as token_comments, ngram(token_comments, 3) as n_tokens)

n グラム変換の前後の例

ID
テキスト
n_tokens
0
[“this”, “was”, “an”, “entertaining”, “movie”]
[“this was an”, “was an entertaining”, “an entertaining movie”]

StopWordsRemover stopwordsremover

StopWordsRemoverは、文字列のシーケンスからストップワードを削除し、意味のない一般的な単語をフィルタリングするトランスフォーマです。 トークン化子の出力など、文字列のシーケンスを入力として受け取り、stopWords パラメーターで指定されたすべてのストップワードを削除します。

この変換は、テキストデータを前処理し、全体的な意味に大きく影響しない単語を排除することで、下流のマシンラーニングモデルの有効性を向上させるのに役立ちます。

データタイプ

  • 入力データ型:配列[文字列]
  • 出力データタイプ:配列[文字列]

定義

TRANSFORM(stop_words_remover(raw) as filtered)

パラメーター

パラメーター
説明
タイプ
デフォルト
オプション
stopWords
フィルタリングされる単語。
配列[文字列]
デフォルト:英語のストップワード
オプション

変換の例

この例では、StopWordsRemoverがトークンのリストから一般的な英語のストップワードを除外する方法を示します。

TRANSFORM(stop_words_remover(raw) as filtered)

単語の削除の前後の例

ID
raw
フィルター
0
[私、見た、赤、風船]
[のこ、赤、風船]
1
[ メアリー、少し子羊を飼っていました]
[ メアリー、リトル、ラム ]

カスタムのストップワードを含む例

この例では、ストップワードのカスタムリストを使用して、入力シーケンスから特定の単語を除外する方法を示します。

TRANSFORM(stop_words_remover(raw, array("red", "I", "had")) as filtered)

カスタム停止ワード削除の前後の例

ID
raw
フィルター
0
[私、見た、赤、風船]
[見た、バルーン ]
1
[ メアリー、少し子羊を飼っていました]
[ メアリー、少し、子羊]

TF-IDF tf-idf

TF-IDF (Term Frequency-Inverse Document Frequency)は、コーパスに対するドキュメント内の単語の重要度を測定するために使用されるトランスです。 用語の頻度(TF)は、用語\(t\)が文書\(d\)に表示される回数を表し、文書頻度(DF)は、コーパス \(D\)内の文書数\(t\)が用語\(t\)を含む回数を表します。 この方法は、「a」、「the」、「of」など、固有の情報がほとんどない一般的な単語の影響を軽減するために、テキストマイニングで広く使用されています。

この変換は、文書内およびコーパス全体にわたって各単語の重要度に数値を割り当てるため、テキストマイニングや自然言語処理タスクにおいて特に価値があります。

データタイプ

  • 入力データ型:配列[文字列]
  • 出力データタイプ:ベクトル [Int]

定義

create table td_idf_model transform(tokenizer(sentence) as token_sentence, tf_idf(token_sentence) as tf_sentence, vector_assembler(array(tf_sentence)) as feature) OPTIONS()

パラメーター

パラメーター
説明
タイプ
デフォルト
オプション
NUM_FEATURES
生成する機能の数。 0 より大きい値を設定する必要があります。
Int
262144
オプション
MIN_DOC_FREQ
用語がモデルに含まれるように見えるドキュメントの最小数。
Int
0
オプション

変換の例

この例では、TF-IDFを使用して、トークン化された文章を、コーパス全体のコンテキストにおける各用語の重要性を表す特徴ベクトルに変換する方法を示します。

create table td_idf_model transform(tokenizer(sentence) as token_sentence, tf_idf(token_sentence) as tf_sentence, vector_assembler(array(tf_sentence)) as feature) OPTIONS()

Tokenizer tokenizer

Tokenizerは、文章などのテキストを個別の用語(通常は単語)に分割するトランスフォーマーです。 文をトークンの配列に変換することで、テキストの前処理の基本的なステップを実現し、テキスト分析やモデリングプロセスのためにデータを準備します。

データタイプ

  • 入力データタイプ:テキスト文
  • 出力データタイプ:配列[文字列]

定義

create table td_idf_model transform(tokenizer(sentence) as token_sentence, tf_idf(token_sentence) as tf_sentence, vector_assembler(array(tf_sentence)) as feature) OPTIONS()

パラメーター

パラメーター
説明
タイプ
デフォルト
オプション
該当なし
Tokenizerは、操作に追加のパラメーターを必要としません。
該当なし
該当なし
該当なし

変換の例

この例では、Tokenizerがテキスト処理パイプラインの一部として、文を個々の単語(トークン)に分割する方法を示します。

create table td_idf_model transform(tokenizer(sentence) as token_sentence, tf_idf(token_sentence) as tf_sentence, vector_assembler(array(tf_sentence)) as feature) OPTIONS()

Word2Vec word2vec

Word2Vecは、文書を表す単語のシーケンスを処理し、Word2VecModelをトレーニングする見積もり記号です。 このモデルは、各単語を一意の固定サイズのベクトルにマッピングし、文書内のすべての単語のベクトルを平均して、各文書をベクトルに変換します。 自然言語処理タスクで広く使用されているWord2Vecは、セマンティックな意味をキャプチャする単語の埋め込みを作成し、テキストデータを単語間の関係を表す数値ベクトルに変換し、より効果的なテキスト分析と機械学習モデルを実現します。

データタイプ

  • 入力データ型:配列[文字列]
  • 出力データタイプ:ベクトル [ ダブル ]

定義

TRANSFORM(tokenizer(review) as tokenized, word2Vec(tokenized, 10, 1) as word2Vec)

パラメーター

パラメーター
説明
タイプ
デフォルト
オプション
VECTOR_SIZE
各単語が変換されるベクトルの次元。
整数
100
オプション
MIN_COUNT
トークンがWord2Vec モデルの語彙に含まれている必要がある最小回数。
整数
5
オプション

変換の例

この例では、Word2Vecがトークン化されたレビューを、文書内の単語ベクトルの平均を表す固定サイズのベクトルに変換する方法を示します。

TRANSFORM(tokenizer(review) as tokenized, word2Vec(tokenized, 10, 1) as word2Vec)

Word2Vec変換の前後の例

レビュー
トークン化
word2Vec
これはおもしろい映画だった
[これは、楽しい映画でした]
[-0.025713888928294182,0.00818799751577899,0.0092235435731709,-0.01515385233797133,0.012175946310162545,3.1129065901041035E-4,0.0025145105042611252,0.005757019785232843,-0.021328244300093502,0.009335877187550069]
recommendation-more-help
experience-platform-help-query-service