Behavior Sequence Transformer (BST) アルゴリズムは、強力なTransformerフレームワークを使用して、ユーザーの行動シーケンスから長期の時系列情報をキャプチャします。 BSTアルゴリズムは、行動シーケンスから暗黙の特徴を抽出し、予測を行うことができる。 BSTアルゴリズムは、推奨システムやユーザーライフサイクルバリューマイニングなど、行動シーケンスに関連するビジネスシナリオで大きなメリットをもたらします。
シナリオ
BSTアルゴリズムは、分類および回帰を含む様々な予測タスクをサポートするように設計される。
BSTアルゴリズムの入力データは、時系列特徴を有する挙動シーケンスである。 入力データは
LONGTEXT
形式でデータベースに保存されます。 そのようなデータの例は、過去7日間のユーザのクリック行動である。BSTアルゴリズムは、ユーザーが支払うと予想される金額、ユーザーの解約が発生するかどうか、支払いが行われるかどうかなど、整数または浮動小数点数である予測を出力します。
サンプル分類シナリオ:
新しい有料ユーザーの数と、ゲームシナリオでの通常の支払いと高額のユーザーの潜在的な解約を予測します。 例えば、ゲーム動作シナリオにおける過去14日間の有料ユーザのゲーム内挙動は、BSTアルゴリズムの挙動シーケンス入力に構築される。 BSTアルゴリズムは、行動シーケンスから関連する特徴を抽出して、次の14日間の潜在的なチャーンを予測します。 ユーザーが14日間連続してログオンしない場合、ユーザーは動揺したと見なされます。
サンプル回帰シナリオ:
ゲームシナリオで新しいユーザーの総支出を予測します。 例えば、ゲーム動作シナリオにおける最初の24時間以内の新たなユーザのゲーム内挙動は、BSTアルゴリズムの挙動シーケンス入力に構築される。 BSTアルゴリズムは、行動シーケンスから関連する特徴を抽出して、次の7日間における新規ユーザの総支出を予測する。
制限事項
BSTアルゴリズムは、入力データがクラス分布に関してバランスが取れている場合に効果的に機能します。 多数派クラスのサンプルが少数派クラスの20倍を超える場合など、入力データが不均衡な場合は、PolarDB for AIで提供されるK-meansクラスタリングアルゴリズムを使用して、非支払いグループなどの不均衡なクラスを前処理し、クラス間でバランスの取れた全体的なデータ分布を提供することをお勧めします。 詳細については、「K平均クラスタリングアルゴリズム」をご参照ください。
アルゴリズムモデル作成用データテーブルの形式
列 | 必須 / 任意 | データ型 | 説明 | 例 |
uid | 可 | VARCHAR | ユーザーIDや製品IDなど、各データエントリのID。 | 253460731706911258 |
event_list | 可 | LONGTEXT | モデル作成の一連の動作。 シーケンス内の各動作は、一意の整数IDによって表されます。 シーケンス内の動作はコンマ (,) で区切られ、タイムスタンプに基づいて昇順にソートされます。 | "[183、238、153、152]" |
ターゲット | 可 | INT、FLOAT、およびダブル | アルゴリズムモデルのメトリックを測定するラベル。 | 0 |
val_row | 不可 | INT | モデルのオーバーフィットを防ぐために、検証セットを指定できます。 有効な値:
説明 ほとんどの場合、このパラメーターは、versionおよびval_flagモデル作成パラメーターと一緒に使用されます。
| 1 |
other_feature | 不可 | INT、FLOAT、DOUBLE、およびLONGTEXT | モデルのその他の機能。 フィーチャーを使用するには、フィーチャーの列名をx_value_colsおよびx_statics_colsモデル作成パラメーターに含めます。 説明
| 2 |
val_x_cols | 不可 | LONGTEXT | モデル検証とパラメーター調整の一連の動作。 シーケンス内の各動作は、一意の整数IDによって表されます。 シーケンス内の動作はコンマ (,) で区切られ、タイムスタンプに基づいて昇順にソートされます。 説明 このパラメーターは、versionパラメーターを | "[183、238、153、152]" |
val_y_cols | 不可 | INT、FLOAT、およびダブル | パラメーターの調整に使用される動作シーケンスのラベル。 説明 このパラメーターは、versionパラメーターを | 1 |
CREATE MODEL
ステートメントを実行して、アルゴリズムモデルを作成できます。 次の表に、CREATE modelステートメントのmodel_parameter
パラメーターの設定オプションを示します。
パラメーター | 説明 |
model_task_type | タスクタイプ。 有効な値:
|
batch_size | バッチサイズ。 バッチサイズが小さいと、モデルのオーバーフィットのリスクが高まる可能性があります。 デフォルト値: 16。 |
window_size | 動作IDの埋め込みエンコードに使用されます。 値は、動作IDの最大値に1を加えた値以上である必要があります。 それ以外の場合、解析エラーが発生します。 |
sequence_length | アルゴリズムモデルの計算に含まれる動作シーケンスの長さ。 値は3000を超えてはなりません。 window_sizeパラメーターが900より大きい場合は、sequence_lengthパラメーターを大きすぎる値に設定しないでください。 |
success_id | モデルが予測を行う動作のID。 |
max_epoch | 反復の最大数。 デフォルト値:1 |
learning_rate | 学習率。 デフォルト値: 0.0002 |
損失 | 損失関数。 有効な値:
|
val_flag | 各モデルの反復後に検証を実行するかどうかを指定します。 有効な値:
|
val_metric | 検証に使用されるメトリック。 有効な値:
|
auto_data_statics | 統計フィーチャを自動的に生成するかどうかを指定します。 有効な値:
|
auto_heads | マルチアテンションヘッダーの数を自動で指定するかどうかを指定します。 有効な値:
説明
|
num_heads | auto_headsパラメーターを0に設定した場合、このパラメーターを指定する必要があります。 デフォルト値: 4。 |
x_value_cols | 特定の列を数値の離散フィーチャとして指定します。 値を空にすることはできません。 説明
|
x_statics_cols | 特定の列を統計的特徴として指定します。 値を空にすることはできません。指定された列の各行のデータの長さは固定です。 説明
|
x_seq_cols | 特定の列をシーケンス機能として指定します。 説明
|
version | モデルバージョン。 有効な値:
|
data_normalization | x_value_colsパラメーターで指定した列のデータを正規化するかどうかを指定します。 有効な値:
|
remove_seq_adjacent_duplicates | x_seq_colsパラメーターで指定した列から隣接する重複値を削除するかどうかを指定します。 有効な値:
|
アルゴリズムモデル評価用データテーブルの形式
列 | 必須 / 任意 | データ型 | 説明 | 例 |
uid | 可 | VARCHAR(255) | ユーザーIDや製品IDなど、各データエントリのID。 | 123213 |
event_list | 可 | LONGTEXT | モデル作成の一連の動作。 シーケンス内の各動作は、一意の整数IDによって表されます。 シーケンス内の動作はコンマ (,) で区切られ、タイムスタンプに基づいて昇順にソートされます。 | "[183、238、153、152]" |
ターゲット | 可 | INT、FLOAT、およびダブル | アルゴリズムモデルのエラーを計算するために使用されるサンプルのラベル。 | 0 |
other_feature | 不可 | INT、FLOAT、DOUBLE、およびLONGTEXT | モデルのその他の機能は、モデル作成データテーブルと同じです。 フィーチャーを使用するには、フィーチャーの列名をx_value_colsおよびx_statics_colsモデル作成パラメーターに含めます。 説明
| 2 |
EVALUATE
ステートメントを実行して、アルゴリズムモデルを評価できます。 次の表に、EVALUATEステートメントのmetrics
パラメーターの設定オプションを示します。
パラメーター | 説明 |
メトリクス | 検証に使用されるメトリック。 有効な値:
|
アルゴリズムモデル予測用データテーブルの形式
列 | 必須 / 任意 | データ型 | 説明 | 例 |
uid | 可 | VARCHAR(255) | ユーザーIDや製品IDなど、各データエントリのID。 | 123213 |
event_list | 可 | LONGTEXT | モデル作成の一連の動作。 シーケンス内の各動作は、一意の整数IDによって表されます。 シーケンス内の動作はコンマ (,) で区切られ、タイムスタンプに基づいて昇順にソートされます。 | "[183、238、153、152]" |
other_feature | 不可 | INT、FLOAT、DOUBLE、およびLONGTEXT | モデルのその他の機能は、モデル作成データテーブルと同じです。 フィーチャーを使用するには、フィーチャーの列名をx_value_colsおよびx_statics_colsモデル作成パラメーターに含めます。 説明
| 2 |
例
分類タスクは、以下の例で使用される。 タスクの種類の詳細については、このトピックのmodel_task_typeパラメーターの説明をご参照ください。
モデルの作成とオフライン学習の実装
/*polar4ai*/CREATE MODEL sequential_bst WITH (
model_class = 'bst',
x_cols = 'event_list,other_feature1',
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,
x_seq_cols='event_list',
x_value_cols='other_feature1',
val_metric='f1score',
auto_data_statics='on',
data_normalization=1,
remove_seq_adjacent_duplicates='on',
version=1)) AS (SELECT * FROM seqential_train);
sequential_train
は、アルゴリズムモデルの作成に使用されるサンプルデータテーブル名です。
モデルの評価
/*polar4ai*/SELECT uid,target FROM evaluate(MODEL sequential_bst,
SELECT * FROM seqential_eval) WITH
(x_cols = 'event_list,other_feature1', y_cols='target', metrics='Fscore');
sequential_eval
は、アルゴリズムモデル評価のサンプルデータテーブル名です。
モデルを使用して予測を行う
/*polar4ai*/SELECT uid,target FROM PREDICT(MODEL sequential_bst, SELECT * FROM seqential_test) WITH
(x_cols= 'event_list,other_feature1',mode='async');
seqential_test
は、アルゴリズムモデル予測のサンプルデータテーブル名です。