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です。 |
損失 | 学習タスクとその学習目的。 有効な値:
|
val_flag | トレーニング中の各イテレーション後に検証を実行するかどうかを指定します。 有効な値:
|
val_x_cols | 検証データセットの入力列。 |
val_y_cols | 検証データセットのラベル列。 |
val_metric | 検証メトリック。 有効な値:
|
auto_heads | マルチヘッド注意メカニズムで注意ヘッドの数を自動的に設定するかどうか。 有効な値:
説明 値を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ステートメントの詳細については、「モデルの管理」をご参照ください。
パラメーター | 説明 |
メトリクス | 検証メトリック。 有効な値:
|
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');