すべてのプロダクト
Search
ドキュメントセンター

PolarDB:BSTアルゴリズム

最終更新日:Sep 14, 2024

Behavior Sequence Transformer (BST) アルゴリズムは、Transformerモデルを使用して、ユーザーの行動データの長期的な時系列情報をキャプチャします。 BSTアルゴリズムは、行動シーケンスから暗黙の特徴を抽出し、結果を予測することができます。 推奨事項やユーザーライフサイクルの価値マイニングなど、行動シーケンスに関連するビジネスシナリオに適しています。

シナリオ

BSTアルゴリズムは、分類および回帰を含む様々な予測シナリオをサポートする。 これらのシナリオでは、入力データは通常、時系列フィーチャを含む動作シーケンスであり、テキスト形式でデータベースに格納されます。 例えば、入力データは、過去7日間のユーザのクリックイベントとすることができます。 出力データは、通常、整数または浮動小数点形式の予測結果です。 たとえば、出力データは、支払い金額、ユーザーが解約するかどうか、およびユーザーが支払うかどうかです。

  • 分類シナリオ

    ゲームのシナリオで、新しいユーザーの支払い、有料ユーザーの解約、およびプレミアムユーザーの解約を予測します。 たとえば、ゲーム操作シナリオでは、過去14日間の有料ユーザーの行動がBSTアルゴリズムの入力行動シーケンスとして使用されます。 アルゴリズムは、行動シーケンスからパフォーマンス特徴を抽出して、ユーザーが今後14日以内に解約するかどうかを予測します。 ユーザーが14日間連続してゲームにログオンしない場合、ユーザーの解約が発生します。

  • 回帰シナリオ

    ゲームシナリオでの新規ユーザーの支払い額を予測します。 例えば、ゲーム操作シナリオでは、過去24時間以内の新規ユーザの行動が、BSTアルゴリズムの入力行動シーケンスとして使用される。 このアルゴリズムは、行動シーケンスからパフォーマンス機能を抽出して、次の7日間の新規ユーザーの総消費量を予測します。

制限事項

BSTアルゴリズムの入力データとして使用されるサンプルは、均等に分散されなければならない。 1つのタイプの試料の量が他のタイプの試料の量よりも有意に多い場合、例えば2000% を超えて多い場合、試料は不均一に分布していると見なされます。 この場合、PolarDB for AIが提供するK-meansクラスタリングアルゴリズムを使用して、多数のサンプルに対してクラスタリング操作を実行し、サンプルを入力データとして使用する前に均一なサンプル分布を確保します。 詳細については、「K-means clustering algorithm (K-Means) 」をご参照ください。

アルゴリズムモデルのトレーニングデータの表形式

必須

データ型

説明

uid

課金されます

VARCHAR

ユーザーIDや製品IDなど、処理する各データレコードのID。

253460731706911258

event_list

課金されます

TEXT

入力テーブルのトレーニングに使用される動作シーケンス。 シーケンスは、動作IDを示すINT型の値で構成されます。 これらの値はコンマ (,) で区切られ、昇順に時間でソートされます。

"[183、238、153、152]"

ターゲット

課金されます

INT、フロート、ダブル

アルゴリズムモデルのメトリックを測定するために使用されるサンプルのラベル。

0

val_x_col

課金されません

TEXT

アルゴリズムモデルのパラメータチューニングに使用される動作シーケンス。 event_list列と同様のデータを含む検証データセットのevent_list列です。 シーケンスは、動作IDを示すINT型の値で構成されます。 これらの値はコンマ (,) で区切られ、昇順に時間でソートされます。

"[183、238、153、152]"

val_y_col

課金されます

INT、フロート、ダブル

パラメーターの調整に使用される動作シーケンス。

1

次の表に、アルゴリズムモデルを作成するためのCREATE modelステートメントのmodel_parameterパラメーターの値を示します。 要件に基づいてパラメーターを設定します。 CREATE MODELステートメントの詳細については、「モデルの管理」をご参照ください。

パラメーター

説明

model_task_type

タスクタイプ。 有効な値:

  • 分類 (デフォルト)

  • 回帰

batch_size

バッチの長さ。 短いバッチは過剰にフィットする傾向があります。 デフォルト値は16です。

window_size

ビヘイビアIDの埋め込みコーディングに使用されます。 値は整数であり、最大の動作IDより大きい必要があります。 そうでない場合、解析エラーが発生します。

sequence_length

アルゴリズムモデルの計算に含まれる動作シーケンスの長さ。 値は3000を超えることはできません。 window_sizeの値が900より大きい場合は、sequence_lengthを大きすぎる値に設定しないでください。

success_id

処理するビヘイビアID。

max_epoch

反復の最大数。 デフォルト値は 1 です。

learning_rate

学習率。 デフォルト値は0.0002です。

損失

学習タスクとその学習目的。 有効な値:

  • CrossEntropyLoss (デフォルト値): クロスエントロピー。 これは、バイナリ分類問題に使用されます。

  • mse: 平均二乗誤差。 回帰タスクに使用されます。

  • mae: 平均絶対誤差。 回帰タスクに使用されます。

  • msle: 平均二乗誤差。 回帰タスクに使用されます。

val_flag

トレーニング中の各イテレーション後に検証を実行するかどうかを指定します。 有効な値:

  • 0 (デフォルト): 検証は実行されません。 val_x_cols、val_y_cols、およびval_metricパラメーターは必要ありません。 最後の反復のアルゴリズムモデルが保存される。

  • 1: 検証が実行されます。 val_x_cols、val_y_cols、およびval_metricパラメーターが必要です。 最適な検証結果を生成するアルゴリズムモデルが保存されます。

val_x_cols

検証データセットの入力列。

val_y_cols

検証データセットのラベル列。

val_metric

検証メトリック。 有効な値:

  • loss (デフォルト): トレーニングのlossパラメーターと同じです。 分類および回帰タスクに使用されます。

  • f1score: 精度とリコールの調和平均。 分類タスクに使用されます。

  • r2_score: 決定係数。 回帰タスクに使用されます。

  • mse: 平均二乗誤差。 回帰タスクに使用されます。

  • mape: 平均絶対パーセント誤差。 回帰タスクに使用されます。

  • mape_plus: 正の数のラベルのみのMAPE。 回帰タスクに使用されます。

auto_heads

マルチヘッド注意メカニズムで注意ヘッドの数を自動的に設定するかどうか。 有効な値:

  • 1 (デフォルト値): アテンションヘッドの数は自動的に設定されます。

  • 0: 注意ヘッドの数を手動で設定します。

説明

値を1に設定すると、GPUメモリが不足している可能性があります。 ほとんどの場合、計算結果が は素数ではありません。

num_heads

注意の頭の数。 auto_headsが0に設定されている場合、このパラメーターを指定する必要があります。 デフォルト値は 4 です。

モデル作成とオフライントレーニングのサンプル文

/*polar4ai*/CREATE MODEL sequential_bst WITH 
(model_class = 'bst', 
x_cols = 'event_list', 
y_cols='target',
model_parameter=(batch_size=128, window_size=900, sequence_length=3000, 
                 success_id=900, max_epoch=2, learning_rate=0.0008, 
                 val_flag=1, val_x_cols='val_x_col', val_y_cols='val_y_col', val_metric='f1score')) 
AS (SELECT * FROM db4ai.seqential_train);

アルゴリズムモデル評価データの表形式

必須

データ型

説明

uid

課金されます

VARCHAR(255)

ユーザーIDや製品IDなど、処理する各データレコードのID。

123213

event_list

課金されます

TEXT

入力テーブルのトレーニングに使用される動作シーケンス。 シーケンスは、動作IDを示すINT型の値で構成されます。 これらの値はコンマ (,) で区切られ、昇順に時間でソートされます。

"[183、238、153、152]"

ターゲット

必須/任意

INT、フロート、ダブル

アルゴリズムモデルのエラーを測定するために使用されるサンプルのラベル。

0

次の表に、アルゴリズムモデルを評価するためのEVALUATEステータスのmetricsパラメーターの値を示します。 要件に基づいてパラメーターを設定します。 EVALUATEステートメントの詳細については、「モデルの管理」をご参照ください。

パラメーター

説明

メトリクス

検証メトリック。 有効な値:

  • acc: 精度。 分類タスクに使用されます。

  • auc: AUC値、ROC曲線下面積を示す。 分類タスクに使用されます。

  • Fscore: 精度とリコールの調和平均。 分類タスクに使用されます。

  • r2_score: 決定係数。 回帰タスクに使用されます。

  • mse: 平均二乗誤差。 回帰タスクに使用されます。

  • mape: 平均絶対パーセント誤差。 回帰タスクに使用されます。

  • mape_plus: 正の数のラベルのみのMAPE。 回帰タスクに使用されます。

odel評価のサンプルステートメント

/*polar4ai*/SELECT uid,target FROM evaluate(MODEL sequential_bst,SELECT * FROM db4ai.seqential_eval) WITH (x_cols = 'event_list', y_cols='target', metrics='Fscore');

アルゴリズムモデル予測データの表形式

必須

データ型

説明

uid

課金されます

VARCHAR(255)

ユーザーIDや製品IDなど、処理する各データレコードのID。

123213

event_list

課金されます

TEXT

入力テーブルのトレーニングに使用される動作シーケンス。 シーケンスは、動作IDを示すINT型の値で構成されます。 これらの値はコンマ (,) で区切られ、昇順に時間でソートされます。

"[183、238、153、152]"

モデル予測のサンプル文

/*polar4ai*/SELECT uid,target FROM PREDICT (MODEL sequential_bst, SELECT * FROM db4ai.bst_test) WITH (x_cols= 'event_list', mode='async');