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

PolarDB:BST アルゴリズム

最終更新日:May 27, 2025

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

モデルの過剰適合を防ぐために、検証セットを指定できます。有効な値:

  • 0: 行をモデル作成データとしてラベル付けします。

  • 1: 行をモデル検証データとしてラベル付けします。

説明

ほとんどの場合、このパラメーターは version および val_flag モデル作成パラメーターと組み合わせて使用されます。

  • version パラメーターが 1 に設定され、val_flag パラメーターが 1 に設定されている場合、val_row パラメーターが有効になります。

  • val_flag パラメーターが 0 に設定されていて、以前に val_row パラメーターを定義した場合、val_row=0 とマークされたデータのみがモデル作成データとして使用されます。

1

other_feature

いいえ

INT、FLOAT、DOUBLE、および LONGTEXT

モデルのその他の機能。機能を使用するには、x_value_cols および x_statics_cols モデル作成パラメーターに機能の列名を含めます。

説明
  • other_feature 列のデータ型が LONGTEXT の場合、JSON 文字列、リスト、またはコンマ (,) で区切られた文字列など、さまざまな形式のテキストデータを列に格納できます。

  • other_feature1 や other_feature2 など、複数の other_feature パラメーターを指定できます。

2

val_x_cols

いいえ

LONGTEXT

モデルの検証とパラメーター調整のための行動のシーケンス。シーケンス内の各行動は、一意の整数 ID で表されます。シーケンス内の行動はコンマ (,) で区切られ、タイムスタンプに基づいて昇順にソートされます。

説明

このパラメーターは、version パラメーターを 0 に設定した場合にのみ有効になります。詳細については、このトピックの version パラメーターの説明を参照してください。

"[183, 238, 153, 152]"

val_y_cols

いいえ

INT、FLOAT、および DOUBLE

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

説明

このパラメーターは、version パラメーターを 0 に設定した場合にのみ有効になります。詳細については、このトピックの version パラメーターの説明を参照してください。

1

CREATE MODEL 文を実行して、アルゴリズムモデルを作成できます。次の表に、CREATE MODEL 文の model_parameter パラメーターの構成オプションを示します。

パラメーター

説明

version

モデルバージョン。新しいバージョンを指定することをお勧めします。有効な値:

  • 0 (デフォルト): 古いバージョン。

  • 1: 新しいバージョン。

説明

古いバージョンでは、val_x_cols パラメーターと val_y_cols パラメーターが有効になり、モデルデータテーブルの作成には val_row パラメーターは有効になりません。複数クラス分類タスクとモデル融合/スタッキング機能はサポートされていません。

model_task_type

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

  • classification (デフォルト)。

  • regression。

  • multi_classification。

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

損失関数。有効な値:

  • CrossEntropyLoss (デフォルト): バイナリ分類問題に使用されます。

  • mse: 回帰タスクに使用されます。

  • mae: 回帰タスクに使用されます。

  • msle: 回帰タスクに使用されます。

val_flag

各モデル反復後に検証を実行するかどうかを指定します。有効な値:

  • 0 (デフォルト): 各モデル反復後に検証を実行しません。val_metric パラメーターを指定する必要はなく、モデル作成データテーブルで val_row パラメーターを指定します。最終ラウンドのアルゴリズムモデルが保存されます。

  • 1: 各モデル反復後に検証を実行します。val_metric パラメーターを指定し、モデル作成データテーブルで val_row パラメーターを指定する必要があります。検証メトリックに基づいて最高のパフォーマンスを持つアルゴリズムモデルが保存されます。

val_metric

検証に使用されるメトリック。有効な値:

  • loss (デフォルト): モデル作成中の損失メトリックと同じメトリック。このメトリックは、分類、複数クラス分類、および回帰タスクに使用できます。

  • f1score: 適合率と再現率の調和平均。このメトリックは、分類タスクと複数クラス分類タスクに使用できます。

  • r2_score: 決定係数。このメトリックは、回帰タスクに使用できます。

  • mse: 平均二乗誤差。このメトリックは、回帰タスクに使用できます。

  • mape: 平均絶対パーセント誤差。このメトリックは、回帰タスクに使用できます。

  • mape_plus: 正のラベルの誤差のみを測定する MAPE のバリアント。このメトリックは、回帰タスクに使用できます。

auto_data_statics

統計的特徴を自動的に生成するかどうかを指定します。有効な値:

  • on: シーケンス内の ID の出現回数をカウントし、統計的特徴を生成します。

  • off (デフォルト): シーケンス内の ID の出現回数をカウントしません。

auto_heads

マルチアテンションヘッダーの数を自動的に指定するかどうかを指定します。有効な値:

  • 1 (デフォルト): マルチアテンションヘッダーの数を自動的に指定します。

  • 0: マルチアテンションヘッダーの数を手動で指定します。

説明
  • このパラメーターを 1 に設定すると、ビデオメモリー不足のリスクが発生する可能性があります。

  • int ( sqrt \{window\_size \} ) + int ( sqrt\{sequence\_length\}) +2 の計算結果が素数でないことを確認してください。

num_heads

auto_heads パラメーターを 0 に設定した場合は、このパラメーターを指定する必要があります。デフォルト値: 4。

x_value_cols

特定の列を数値離散特徴として指定します。値を空にすることはできません。

説明
  • 例: x_value_cols='num_events, max_level, max_viplevel' を指定すると、num_events 列、max_level 列、および max_viplevel 列が数値離散特徴として使用されます。

  • 各列の値は、整数または浮動小数点数である必要があります。

x_statics_cols

特定の列を統計的特徴として指定します。値を空にすることはできません。指定された列の各行のデータの長さは固定されています。

説明
  • 例: x_statics_cols='stats_item_list, stats_event_list' を指定すると、stats_item_list 列と stats_event_list 列が統計的特徴として使用されます。

  • 各列のデータ型は LONGTEXT です。JSON 文字列、リスト、または コンマ (,) で区切られた文字列など、さまざまな形式のテキストデータを LONGTEXT 列に格納できます。JSON 文字列では、キーと値のペアの値が統計的特徴として使用されます。例: {"money":30,"level":21}。リストまたはコンマ (,) で区切られた文字列では、値は INT 型または FLOAT 型である必要があります。例:

    • stats_event_list="[1,2,4,23,2]"

    • stats_item_list="232,23123,232,2"

x_seq_cols

特定の列をシーケンス特徴として指定します。

説明
  • 例: x_seq_cols='event_list'

  • 各列のデータ型は LONGTEXT です。リストまたは コンマ (,) で区切られた文字列など、さまざまな形式のテキストデータを LONGTEXT 列に格納できます。例: "[183, 238, 153, 152]"

data_normalization

x_value_cols パラメーターで指定された列のデータを正規化するかどうかを指定します。有効な値:

  • 0 (デフォルト): 正規化操作を実行しません。

  • 1: 正規化操作を実行します。

remove_seq_adjacent_duplicates

x_seq_cols パラメーターで指定された列から隣接する重複値を削除するかどうかを指定します。有効な値:

  • off (デフォルト)

  • on

stacking

BST モデル融合を実行するかどうかを指定します。このパラメーターは、model_task_type を classification に設定した場合にのみ有効になります。

  • off (デフォルト)

  • on

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 モデル作成パラメーターに機能の列名を含めます。

説明
  • other_feature 列のデータ型が LONGTEXT の場合、JSON 文字列、リスト、またはカンマ (,) で区切られた文字列など、さまざまな形式のテキストデータを列に格納できます。

  • other_feature1 や other_feature2 など、複数の other_feature パラメーターを指定できます。

2

EVALUATE 文を実行して、アルゴリズムモデルを評価できます。次の表は、metrics パラメーターの構成オプションについて説明しています。

パラメーター

説明

metrics

検証に使用されるメトリック。有効な値:

  • acc: 正解率。このメトリックは、分類タスクと多クラス分類タスクに使用できます。

  • auc: ROC 曲線下の面積。このメトリックは、分類タスクと多クラス分類タスクに使用できます。

  • Fscore: 適合率と再現率の調和平均。このメトリックは、分類タスクと多クラス分類タスクに使用できます。

  • r2_score: 決定係数。このメトリックは、回帰タスクに使用できます。

  • mse: 平均二乗誤差。このメトリックは、回帰タスクに使用できます。

  • mape: 平均絶対パーセント誤差。このメトリックは、回帰タスクに使用できます。

  • mape_plus: 正のラベルの誤差のみを測定する MAPE の変形。このメトリックは、回帰タスクに使用できます。

アルゴリズムモデル予測用データテーブルの形式

必須

データ型

説明

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 モデル作成パラメーターに機能の列名を含めます。

説明
  • other_feature 列のデータ型が LONGTEXT の場合、JSON 文字列、リスト、またはコンマ (,) で区切られた文字列など、さまざまな形式のテキストデータを列に格納できます。

  • other_feature1 や other_feature2 など、複数の other_feature パラメーターを指定できます。

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 は、アルゴリズムモデルの予測に使用されるサンプルデータテーブル名です。