# ネクストベストアクション

このノートブックは[Q学習](https://en.wikipedia.org/wiki/Q-learning)を使用して、特定の状態における各セッションのネクストベストアクションを予測します。

![](/assets/image2023-3-7_14-32-21.68aab4d930fee550adb496f54e6880744db8132c16dbf9ead00f4ee92ebde6fa.3cb60505.png)Qテーブル（状態→アクション）がトレーニングデータセット上で訓練および最適化され、各_user_id_の最新の状態に基づいてネクストベストアクションの予測を出力します。このノートブックは入力テーブルを受け取ります。入力テーブルの例は次のとおりです。

| user_id | tstamp | state | action | reward (オプション) |
|  --- | --- | --- | --- | --- |
| 2a644f3f-ad33-48b3-b837-96c1e194dc17 | 2021-06-14 08:58:59 | /custom-demo/ | client_domain_organic_visit | 0.0 |
| 1740eb3c-03de-4856-891e-8f8bcffbfd6b | 2021-06-14 08:58:25 | /customers/lion/ | client_domain_organic_visit | 0.0 |
| bd378622-0905-44d4-a950-53adcdfc2611 | 2021-06-14 08:25:57 | /learn/cdp-vs-dmp/ | client_domain_organic_visit | 0.0 |


ノートブックは、最後の状態に基づいて各ユーザーの次のアクションを出力します。出力テーブルの例は次のとおりです。

| user_id | ... | next_action |
|  --- | --- | --- |
| 2a644f3f-ad33-48b3-b837-96c1e194dc17 | ... | cpc |
| 1740eb3c-03de-4856-891e-8f8bcffbfd6b | ... | social |
| bd378622-0905-44d4-a950-53adcdfc2611 | ... | display |


オプションとして、テストデータセットに対してホールドアウトテストが実施され、実際のアクション（ランダムサンプリング）と推奨アクションに基づいて支出と収益を計算します。平均CPA（Cost Per Action）と総予算を提供することで、CPA、コンバージョンの増加、および収益/ROI（Return On Investment）の利益を表示できます。

NBAの詳細については、こちらの[TDブログ記事](https://blog.treasuredata.com/blog/2023/03/03/next-best-action-marketing/)をご覧ください。

### ワークフローの例

サンプルワークフローは[Treasure Boxesのこちら](https://github.com/treasure-data/treasure-boxes/blob/automl/machine-learning-box/automl/nba.dig)にあります。


```yaml
+run_nba:
  ipynb>:
    notebook: NBA
    train_table: ml_datasets.nba_train
    test_table: ml_datasets.nba_test
    budget: 10000
    value_per_cv: 100
```

### パラメータ

| パラメータ名 | コンソール上のパラメータ | 説明 | デフォルト値 |
|  --- | --- | --- | --- |
| docker.task_mem | Docker Task Mem | タスクメモリサイズ。契約しているティアに応じて、64g、128g（デフォルト）、256g、384g、または512gが利用可能です | 128g |
| train_table | Train Table | トレーニングに使用するTDテーブルを指定 | None |
| test_table | Test Table | テストと評価に使用するTDテーブルを指定 | None |
| user_column | User Column | ユーザーカラム名 | user_id |
| tstamp_column | Tstamp Column | タイムスタンプカラム名 | tstamp |
| state_column | State Column | 状態カラム名 | state |
| action_column | Action Column | アクションカラム名 | action |
| reward_column | Reward Column | 報酬カラム名 | reward |
| budget | Budget | 総予算 | None |
| value_per_cv | Value Per Cv | コンバージョンあたりの平均値 | None |
| neg_reward | Neg Reward | 負の報酬 | -10.0 |
| steps | Steps | Q学習で使用される総ステップ数 | 100000 |
| gamma | Gamma | Q学習で使用される割引率 | 0.6 |
| lr | Lr | Q学習で使用される学習率 | 0.05 |
| ignore_actions | Ignore Actions | 無視するアクション | None |
| currency | Currency | 通貨記号 | $ |
| default_action_cost | Default Action Cost | デフォルトのアクションコスト | 1.0 |
| action_cost | Action Cost | ユーザー定義のアクションコスト | {} |
| export_q_table | Export Q Table | Qテーブルをエクスポートするためのテーブル名 | None |
| export_state_action | Export State Action | 各状態の推奨アクションをエクスポートするためのテーブル名 | None |
| export_channel_ratio | Export Channel Ratio | 実際のアクションと推奨アクションの比較結果をエクスポートするためのテーブル名 | None |
| export_predictions | Export Predictions | テストデータセットの予測結果をエクスポートするためのテーブル名 | None |
| export_model_performance | Export Model Performance | モデルパフォーマンスをエクスポートするためのテーブル名 | None |
| audience_name | Audience Name | 属性テーブルをマージするためのオーディエンスペアレンツ（マスター）セグメント名 |  |
| join_key | Join Key | Audience統合に使用されるマスターセグメントの結合キーカラム名。設定されていない場合は、_user_column_の値が使用されます。 | None |