# 多臂老虎机 (Multi-Armed Bandit)

**多臂老虎机 (Multi-Armed Bandit)** 元素会向用户发送推送通知，就像 [推送 (Push)](/zh/product/customer-journey/journey-elements/channels/push/) 元素一样。但您无需提供单个预设，而是提供多个内容变体。优化会基于实时数据持续运行，无需手动重启测试或保持固定的流量分配。Pushwoosh 会将更多流量导向打开率最高的变体。

<Aside type="caution" title="多臂老虎机 (Multi-Armed Bandit) 是一项实验性功能">
- **变体：** 目前仅支持现有的推送预设。电子邮件、短信或应用内内容变体尚不支持。
- **成功指标：** 目前只有推送打开被视为成功。选择自定义事件作为成功指标的功能即将推出。
- **选择：** 基于变体在所有用户中的整体表现，而非基于单个用户的偏好。Pushwoosh 会避免连续两次向同一个人发送相同的变体。

随着此功能的开发，其行为和设置可能会发生变化。
</Aside>

在应触发 **多臂老虎机 (Multi-Armed Bandit)** 元素的事件或条件之后添加该元素，然后配置该元素。

<img src="/journey-elements-smart-content-1.webp" alt="多臂老虎机 (Multi-Armed Bandit) 元素被添加到 Journey 画布中的一个触发器之后"/>

## 添加内容变体

<Aside type="tip">
要使用多臂老虎机 (Multi-Armed Bandit)，请先在您的账户中创建两个或更多推送预设。[了解更多关于创建推送预设的信息](/zh/product/content/push-presets/)。您至少需要两个变体才能保存该元素。
</Aside>

1.  双击 **多臂老虎机 (Multi-Armed Bandit)** 元素以打开其设置。
2.  在 **内容变体 (Content variants)** 中，选择至少两个不同的推送预设。
3.  点击 **添加变体 (Add variant)** 以包含更多预设。没有上限。

<img src="/journey-elements-smart-content-2.webp" alt="多臂老虎机 (Multi-Armed Bandit) 的内容变体部分，其中选择了两个推送预设和“添加变体”按钮"/>

## 选择成功指标

在 **奖励 (Reward)** 部分，选择什么算作一个变体的成功：

-   **推送已打开 (Push opened)：** 当用户打开该推送时，一个变体赢得一次发送。
-   **事件已发生 (Event happened)：** 选择一个自定义事件作为成功信号，而不是打开。此选项即将推出。

设置 **奖励窗口 (Reward window)** 来定义 Pushwoosh 在发送后等待多少小时再检查推送是否被打开。默认为 2 小时。

<img src="/journey-elements-smart-content-3.webp" alt="多臂老虎机 (Multi-Armed Bandit) 的奖励部分，其中“推送已打开”被选中，“事件已发生”被禁用，以及“奖励窗口”字段"/>

<Aside type="note">
如果用户在奖励窗口关闭后打开推送，该打开仍然会显示在您的常规消息统计中，但不会计入多臂老虎机 (Multi-Armed Bandit) 的优化。对于学习过程，该次发送被视为未打开。请选择一个足够长的窗口来捕获重要的打开。较长的窗口也意味着多臂老虎机 (Multi-Armed Bandit) 需要等待更长时间才能从每次发送中学习。
</Aside>

## 个性化变体并添加优惠券

<Aside type="note">
这些设置适用于整个多臂老虎机 (Multi-Armed Bandit) 元素，而不是单个变体。无论多臂老虎机 (Multi-Armed Bandit) 最终向用户发送哪个预设，都会使用相同的个性化规则和优惠券池来填充其占位符。如果您的变体预设中只有部分包含某个给定的占位符或 ``{{voucher}}`` 标签，其他变体只是不使用它——无法为每个变体设置不同的事件映射或优惠券池。
</Aside>

### 使用动态内容进行个性化

切换 **使用事件属性个性化消息 (Personalise message with event attributes)**，用来自事件的值填充您的变体预设中的占位符，而不是设备标签。多臂老虎机 (Multi-Armed Bandit) 会将您所有选定变体中使用的占位符收集到一个列表中，因此您只需映射一次每个占位符，无论最终发送的是哪个预设。

[了解更多关于 Journey 中个性化的信息](/zh/product/customer-journey/journey-elements/dynamic-content-and-liquid-templates-in-journeys/)。

### 覆盖 Liquid 占位符

切换 **覆盖 Liquid 占位符 (Overwrite Liquid placeholders)** 并选择一个事件，将其属性提供给您变体预设中名称匹配的 Liquid 标签。如果您同时启用了动态内容和 Liquid 个性化，Liquid 优先。

### 使用优惠券

切换 **使用优惠券 (Use Vouchers)**，将来自优惠券池的唯一代码附加到任何被发送的变体上。请提前创建带有 ``{{voucher}}`` 占位符的变体预设，然后选择要从中提取代码的 **优惠券池 (Voucher Pool)**。或者，使用 **分配标签 (Assign Tag)** 将已发送的代码保存到用户标签中。

[了解更多关于优惠券的信息](/zh/product/content/vouchers/)。

## 设置消息类型

选择 **营销消息 (Marketing message)** 或 **交易消息 (Transactional message)**：

*   **营销消息 (Marketing message)**：用于营销活动和促销。所有规则和限制均适用。遵守：选择退出、频率上限和静默期。排除：[全局控制组](/zh/product/audience-data-and-segmentation/global-control-group/) 用户。
*   **交易消息 (Transactional message)**：用于操作性或服务性消息。规则和限制不适用。绕过：选择退出、频率上限和静默期。发送至：[全局控制组](/zh/product/audience-data-and-segmentation/global-control-group/) 用户。

<img src="/journey-elements-smart-content-5.webp" alt="多臂老虎机 (Multi-Armed Bandit) 元素的消息类型选择，包含营销消息和交易消息选项"/>

[了解消息类型如何影响发送](/zh/product/messaging-channels/marketing-vs-transactional/)。

## 配置消息发送设置

### 设置频率上限

<Aside type="note">
频率上限选项仅在选择 **营销消息 (Marketing message)** 时可用。当您选择 **交易消息 (Transactional message)** 时，频率上限不适用，这些选项将被禁用。
</Aside>

使用 [**频率上限 (Frequency capping)**](/zh/product/messaging-channels/global-frequency-capping/#enable-global-frequency-capping) 来限制用户接收推送消息的频率，防止过度发送消息并减少用户流失。在多臂老虎机 (Multi-Armed Bandit) 元素设置中，选择以下选项之一：

*   **使用全局频率上限设置 (Use Global frequency capping settings)**

    应用您在[全局频率上限设置](/zh/product/messaging-channels/global-frequency-capping/#enable-global-frequency-capping)中配置的项目范围限制。

    例如，如果全局限制设置为 9 天内 3 条消息，则超过此限制的额外消息将被跳过。

*   **忽略全局频率上限 (Ignore Global frequency capping)**

    即使用户已超过该渠道的消息限制，他们仍将收到此消息。请谨慎使用此选项，以避免过度发送消息。

*   **使用自定义频率上限 (Use custom frequency capping)**

    为此消息设置自定义消息限制。如果用户超过此自定义上限，消息将被跳过，用户将进入下一步。
    > **重要提示：** 自定义频率上限不会将消息与**全局频率上限**隔离。在同一渠道上发送的所有消息，包括来自其他 Journey 或营销活动的消息，仍会计入全局上限。如果用户本周已从其他来源收到 3 条推送消息，即使自定义上限允许，此消息仍可能被阻止。
    [了解更多](/zh/product/messaging-channels/global-frequency-capping/#customize-capping-for-specific-messages)

### 设置发送速率限制

**发送速率 (Send rate)** 设置控制消息发送给受众的速度。调整发送速率有助于您管理发送速度、防止后端过载并提高整体送达率。

选择以下选项之一：

*   **使用全局发送速率设置 (Use global send rate settings)**
    应用您项目消息发送设置中配置的发送速率限制。如果未设置限制，所有消息将立即发送。当您希望发送速度遵循项目的默认规则时，请使用此选项。[了解更多关于全局发送速率限制的信息](/zh/product/messaging-channels/global-frequency-capping/#set-send-rate-limits)

![使用全局发送速率设置](/send-rate-in-journey-elements-1.webp)

*   **无发送速率限制发送消息 (Send messages without send rate)**
    尽快发送消息，忽略任何全局发送速率限制。请谨慎使用，以避免后端过载或造成发送高峰。

![无发送速率限制发送消息](/send-rate-in-journey-elements-2.webp)

*   **使用自定义发送速率 (Use custom send rate)**
    仅为此消息覆盖全局发送速率。允许您指定每分钟发送的消息数量，从而完全控制发送速度。消息将以您在消息元素中定义的自定义速率发送。

![使用自定义发送速率](/send-rate-in-journey-elements-3.webp)

当您完成多臂老虎机 (Multi-Armed Bandit) 元素的配置后，点击 **保存 (Save)**。

## 多臂老虎机 (Multi-Armed Bandit) 如何选择变体

多臂老虎机 (Multi-Armed Bandit) 不会均匀地交替发送变体，也不会像 [A/B/n 拆分 (A/B/n split)](/zh/product/customer-journey/journey-elements/flow-controls/abn-split/) 那样运行固定的 50/50 拆分。相反，它会持续观察哪个变体被打开得更频繁，并逐渐将该变体发送给更大部分的用户。它仍然会足够频繁地发送其他变体，以继续从真实数据中学习。

关于其行为，有几点需要了解：

-   需要一些时间和数量才能出现明显的领先者。早期，变体的发送接近均匀。
-   Pushwoosh 会避免连续两次向同一用户发送相同的变体，这样人们就不会重复收到完全相同的消息。
-   选择是基于每个变体在 Journey 中所有用户的整体表现，而不是基于单个用户的偏好。

即使一个变体被确认为获胜者，多臂老虎机 (Multi-Armed Bandit) 仍会继续运行。与 [A/B/n 拆分 (A/B/n split)](/zh/product/customer-journey/journey-elements/flow-controls/abn-split/) 不同，它不会锁定获胜者并将所有流量都导向它。获胜的变体继续获得最大份额的发送，而其他变体仍然会收到较小份额，以便 Pushwoosh 可以继续学习。如果表现随时间变化，多臂老虎机 (Multi-Armed Bandit) 会适应并可以将流量转移到新的领先者。

## 示例场景：挽回废弃购物车

当用户将商品添加到购物车但未完成结账时，使用多臂老虎机 (Multi-Armed Bandit)。下面的示例在 **Cart abandoned** 事件上启动一个 Journey，并测试三个推送变体以吸引用户回来。

1.  **准备推送预设。** 在构建 Journey 之前，在您的账户中创建三个推送预设。[了解更多关于创建推送预设的信息](/zh/product/content/push-presets/)。

    对于这个废弃购物车场景，您可以创建如下预设：

    -   **购物车提醒：** “您的购物车里有商品在等您”
    -   **购物车紧急提醒：** “您的购物车将在 1 小时后过期”
    -   **购物车折扣：** “立即结账可享 9 折优惠”

2.  **创建 Journey。** 在 **营销活动 (Campaigns) → Customer Journey Builder** 中，点击 **创建营销活动 (Create Campaign)** 并选择 **从头构建 Journey (Build a Journey from Scratch)**。将一个 [基于触发器的入口 (Trigger-based entry)](/zh/product/customer-journey/journey-elements/entry-elements/trigger-based-entry/) 元素添加到画布上。

3.  **设置触发器。** 创建或启用一个 **Cart abandoned** 事件，当用户在几小时内未完成结账时触发。在 **基于触发器的入口 (Trigger-based entry)** 元素中，选择此事件作为 Journey 触发器。[了解更多关于事件的信息](/zh/product/audience-data-and-segmentation/events/)。

4.  **添加多臂老虎机 (Multi-Armed Bandit) 元素。** 将 **多臂老虎机 (Multi-Armed Bandit)** 元素放在触发器之后，然后打开其设置。

5.  **添加内容变体。** 在 **内容变体 (Content variants)** 中，选择您在步骤 1 中创建的三个预设。

6.  **选择成功指标。** 在 **奖励 (Reward)** 中，选择 **推送已打开 (Push opened)**。将 **奖励窗口 (Reward window)** 设置为 2 小时。这个窗口足够长，可以捕捉到那些没有立即查看手机的用户的打开，但又足够短，可以保持快速学习。

7.  **完成设置并启动。** 配置消息类型和发送设置，点击 **保存 (Save)**，并激活 Journey。

### 启动后

多臂老虎机 (Multi-Armed Bandit) 的行为可能大致如下。实际的流量分配和时间取决于发送量以及用户对每个变体的响应。

首先，Pushwoosh 会接近均匀地发送所有三个变体，因为它还没有足够的数据。随着打开数据的进入，它开始将更多流量转向被打开次数更多的变体。例如，如果“立即结账可享 9 折优惠”持续优于其他两个，它可能会收到约 60% 的发送量，而另外两个则瓜分剩余部分。

Pushwoosh 也会继续发送表现较差的变体。这可以保持学习的进行，并遵循一个规则，即刚刚被发送了一个变体的用户，在下次到达此步骤时不会再次收到相同的变体。

## 查看结果

在您保存元素并启动 Journey 后，打开多臂老虎机 (Multi-Armed Bandit) 元素的统计面板，查看您的变体表现如何。

<img src="/journey-elements-smart-content-4.webp" alt="多臂老虎机 (Multi-Armed Bandit) 统计面板，包含结论横幅和每个变体的发送、打开和流量指标"/>

顶部的横幅显示实验的当前状态：

-   **数据尚不足 (Not enough data yet)：** 多臂老虎机 (Multi-Armed Bandit) 尚未收集到足够的发送量来进行有意义的判断。
-   **仍在学习中 (Still learning)：** 有数据，但还没有一个变体是明确的、具有统计显著性的领先者。
-   **显著领先者 (Significant leader)：** 一个变体被证实优于其他变体。它被标记为 **获胜者 (Winner)** 徽章。

对于每个变体，您将看到：

-   **已发送 (Sent)：** 此变体被发送的次数。
-   **已打开 (Opened)：** 被打开的发送所占的份额。
-   **流量 (Traffic)：** 当前流向此变体的新发送所占的份额。

## 多臂老虎机 (Multi-Armed Bandit) 与 A/B/n 拆分 (A/B/n split)

**多臂老虎机 (Multi-Armed Bandit)** 和 [**A/B/n 拆分 (A/B/n split)**](/zh/product/customer-journey/journey-elements/flow-controls/abn-split/) 都能优化您的消息传递，但它们的工作方式不同。使用下表来决定哪一个适合您的用例。

| | **多臂老虎机 (Multi-Armed Bandit)** | **A/B/n 拆分 (A/B/n Split)** |
|---|---|---|
| **机制** | 根据实时打开数据，持续将流量转向表现最佳的变体 | 将用户分成您预先定义的固定百分比分支。分支可以包含完全不同的下游流程 |
| **变体** | 至少需要两个推送预设。变体数量没有上限 | 每个测试最多四个分支 |
| **流量分配** | 开始时接近均匀，然后随着数据进入自动调整 | 您设置的固定百分比，在选出获胜者之前保持不变 |
| **持续时间** | 持续运行，没有明确的结束时间 | 运行直到达到统计显著性或您手动停止 |
| **获胜者** | 从不锁定：获胜的变体获得更多流量，但其他变体仍会收到一些 | 选出获胜者后锁定：失败的分支停用，所有新用户都路由到获胜者 |
| **最适合** | 对单个消息步骤进行持续的内容优化（目前仅限推送预设） | 当您想要一个一次性的、锁定的决策时，测试结构上不同的流程或序列 |