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 平均法クラスタリングアルゴリズムを使用して、非課金グループなどの不均衡なクラスを前処理し、クラス全体でバランスの取れたデータ分布を提供することをお勧めします。詳細については、「K 平均法クラスタリングアルゴリズム」をご参照ください。
アルゴリズムモデル作成用データテーブルの形式
列 | 必須 | データ型 | 説明 | 例 |
uid | はい | VARCHAR | 各データ入力の ID。ユーザー ID や製品 ID など。 | 253460731706911258 |
event_list | はい | LONGTEXT | モデル作成のための行動のシーケンス。シーケンス内の各行動は、一意の整数 ID で表されます。シーケンス内の行動はコンマ (,) で区切られ、タイムスタンプに基づいて昇順にソートされます。 | "[183, 238, 153, 152]" |
target | はい | INT、FLOAT、および DOUBLE | アルゴリズムモデルメトリックを測定するラベル。 | 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、および DOUBLE | パラメーターの調整に使用される行動シーケンスのラベル。 説明 このパラメーターは、version パラメーターを | 1 |
CREATE MODEL 文を実行して、アルゴリズムモデルを作成できます。次の表に、CREATE MODEL 文の model_parameter パラメーターの構成オプションを示します。
パラメーター | 説明 |
version | モデルバージョン。新しいバージョンを指定することをお勧めします。有効な値:
説明 古いバージョンでは、val_x_cols パラメーターと val_y_cols パラメーターが有効になり、モデルデータテーブルの作成には val_row パラメーターは有効になりません。複数クラス分類タスクとモデル融合/スタッキング機能はサポートされていません。 |
model_task_type | タスクタイプ。有効な値:
|
num_classes | 複数クラス分類タスクで予測されるクラスの数。デフォルト値: 2。このパラメーターを使用するには、ラベルが 0 から始まる連続した整数であることを確認してください。データセット内の一意のラベルの数は、パラメーター値を超えてはなりません。 例: num_classes を 3 に設定した場合、有効なラベルは {0, 1, 2} です。 |
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。 |
loss | 損失関数。有効な値:
|
val_flag | 各モデル反復後に検証を実行するかどうかを指定します。有効な値:
|
val_metric | 検証に使用されるメトリック。有効な値:
|
auto_data_statics | 統計的特徴を自動的に生成するかどうかを指定します。有効な値:
|
auto_heads | マルチアテンションヘッダーの数を自動的に指定するかどうかを指定します。有効な値:
説明
|
num_heads | auto_heads パラメーターを 0 に設定した場合は、このパラメーターを指定する必要があります。デフォルト値: 4。 |
x_value_cols | 特定の列を数値離散特徴として指定します。値を空にすることはできません。 説明
|
x_statics_cols | 特定の列を統計的特徴として指定します。値を空にすることはできません。指定された列の各行のデータの長さは固定されています。 説明
|
x_seq_cols | 特定の列をシーケンス特徴として指定します。 説明
|
data_normalization | x_value_cols パラメーターで指定された列のデータを正規化するかどうかを指定します。有効な値:
|
remove_seq_adjacent_duplicates | x_seq_cols パラメーターで指定された列から隣接する重複値を削除するかどうかを指定します。有効な値:
|
stacking | BST モデル融合を実行するかどうかを指定します。このパラメーターは、model_task_type を classification に設定した場合にのみ有効になります。
|
stacking_model | 融合プロセスに含まれるモデル。このパラメーターは、stacking を on に設定した場合にのみ有効になります。有効なモデルは、bst、gbdt、svc、および rt です。デフォルト値: gbdt、svc、および rt。 |
アルゴリズムモデル評価用データテーブルの形式
注: <your-subscription-id> は実際のサブスクリプション ID に置き換えてください。 | 必須 | データ型 | 前提条件 | また、継続的デプロイ を構成して、Git リポジトリに更新をプッシュするたびに、コード変更を App Service に自動的にデプロイすることもできます。 |
uid | はい | VARCHAR(255) | 各データ入力の ID です。ユーザー ID やプロダクト ID などです。 | 123213 |
event_list | はい | LONGTEXT | モデル作成のための一連の動作です。シーケンス内の各動作は、一意の整数 ID で表されます。シーケンス内の動作はコンマ (,) で区切られ、タイムスタンプに基づいて昇順にソートされます。 | "[183, 238, 153, 152]" |
ターゲット | はい | INT、FLOAT、および DOUBLE | アルゴリズムモデルの誤差を計算するために使用されるサンプルのラベル。 | 0 |
other_feature | いいえ | INT、FLOAT、DOUBLE、および LONGTEXT | モデルのその他の機能。モデル作成データテーブルのものと同じです。機能を使用するには、x_value_cols および x_statics_cols モデル作成パラメーターに機能の列名を含めます。 説明
| 2 |
EVALUATE 文を実行して、アルゴリズムモデルを評価できます。次の表は、metrics パラメーターの構成オプションについて説明しています。
パラメーター | 説明 |
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 パラメーターの説明をご参照ください。
BST モデルを作成する
/*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 は、アルゴリズムモデルの予測に使用されるサンプルデータテーブル名です。